libapreq2-2.13/acinclude.m40000644000076400017500000003222011473532340014504 0ustar issacissacAC_DEFUN([AC_APREQ], [ AC_ARG_ENABLE(profile, AC_HELP_STRING([--enable-profile],[compile libapreq2 with "-pg -fprofile-arcs -ftest-coverage" for gcov/gprof]), [PROFILE=$enableval],[PROFILE="no"]) AC_ARG_ENABLE(perl_glue, AC_HELP_STRING([--enable-perl-glue],[build perl modules Apache::Request and Apache::Cookie]), [PERL_GLUE=$enableval],[PERL_GLUE="no"]) AC_ARG_WITH(perl, AC_HELP_STRING([--with-perl],[path to perl executable]), [PERL=$withval],[PERL="perl"]) AC_ARG_WITH(apache2-apxs, AC_HELP_STRING([--with-apache2-apxs],[path to apache2's apxs]), [APACHE2_APXS=$withval],[APACHE2_APXS="apxs"]) AC_ARG_WITH(apache2-src, AC_HELP_STRING([--with-apache2-src],[path to httpd source]), [APACHE2_SRC=$withval],[APACHE2_SRC=""]) AC_ARG_WITH(apache2-httpd, AC_HELP_STRING([--with-apache2-httpd],[path to httpd binary]), [APACHE2_HTTPD=$withval],[APACHE2_HTTPD=""]) AC_ARG_WITH(apr-config, AC_HELP_STRING([ --with-apr-config],[path to apr-*-config script]), [APR_CONFIG=$withval],[APR_CONFIG=""]) AC_ARG_WITH(apu-config, AC_HELP_STRING([ --with-apu-config],[path to apu-*-config script]), [APU_CONFIG=$withval],[APU_CONFIG=""]) AC_ARG_WITH(apache1-apxs, AC_HELP_STRING([--with-apache1-apxs],[path to apache1's apxs]), [APACHE1_APXS=$withval],[APACHE1_APXS=""]) AC_ARG_WITH(perl-opts, AC_HELP_STRING([--with-perl-opts],[extra PERL options]), [PERL_OPTS=$withval],[PERL_OPTS=""]) AC_ARG_WITH(mm-opts, AC_HELP_STRING([--with-mm-opts], [extra ExtUtils::MakeMaker options]), [MM_OPTS=$withval], [MM_OPTS=""]) AC_ARG_WITH(expat, AC_HELP_STRING([--with-expat],[specify expat location]), [EXPAT_DIR=$withval],[EXPAT_DIR=""]) OS=`$PERL -e 'print $^O'` prereq_check="$PERL $PERL_OPTS build/version_check.pl" if test -n "$APACHE2_SRC"; then # no apxs: must compile httpd from source APACHE2_SRC=`cd $APACHE2_SRC;pwd` AC_CHECK_FILE([$APACHE2_SRC/include/httpd.h],, AC_MSG_ERROR([invalid Apache2 source directory])) APACHE2_INCLUDES=-I$APACHE2_SRC/include if test -z "$APR_CONFIG"; then APR_CONFIG="$APACHE2_SRC/srclib/apr/apr-config" fi if test -z "$APU_CONFIG"; then APU_CONFIG="$APACHE2_SRC/srclib/apr-util/apu-config" fi APACHE2_HTTPD=$APACHE2_SRC/httpd else # have apxs: use it APACHE2_INCLUDES=-I`$APACHE2_APXS -q INCLUDEDIR` APR_MAJOR_VERSION=`$APACHE2_APXS -q APR_VERSION 2>/dev/null | cut -d. -f 1` if test ${APR_MAJOR_VERSION:="0"} -eq 0; then apr_config=apr-config apu_config=apu-config apreq_libs="-lapr -laprutil" else apr_config=apr-$APR_MAJOR_VERSION-config apu_config=apu-$APR_MAJOR_VERSION-config apreq_libs="-lapr-$APR_MAJOR_VERSION -laprutil-$APR_MAJOR_VERSION" fi if test -z "$APR_CONFIG"; then APR_CONFIG=`$APACHE2_APXS -q APR_BINDIR`/$apr_config fi if test -z "$APU_CONFIG"; then APU_CONFIG=`$APACHE2_APXS -q APU_BINDIR`/$apu_config fi if test -z "$APACHE2_HTTPD"; then APACHE2_HTTPD=`$APACHE2_APXS -q SBINDIR`/`$APACHE2_APXS -q progname` fi if test -z "`$prereq_check apache2 $APACHE2_HTTPD`"; then AC_MSG_ERROR([Bad apache2 binary ($APACHE2_HTTPD)]) fi APR_DOC_VERSION=`$APACHE2_APXS -q APR_VERSION 2>/dev/null | cut -d. -f -2` APU_DOC_VERSION=`$APACHE2_APXS -q APU_VERSION 2>/dev/null | cut -d. -f -2` fi dnl Fallback to oldest version available if test "x$APR_DOC_VERSION" = 'x'; then APR_DOC_VERSION=0.9 fi if test "x$APU_DOC_VERSION" = 'x'; then APU_DOC_VERSION=0.9 fi AC_CHECK_FILE([$APR_CONFIG],, AC_MSG_ERROR([invalid apr-config location ($APR_CONFIG)- did you forget to configure apr?])) if test -z "`$prereq_check apr $APR_CONFIG`"; then AC_MSG_ERROR([Bad libapr version]) fi AC_CHECK_FILE([$APU_CONFIG],, AC_MSG_ERROR([invalid apu-config location ($APU_CONFIG)- did you forget to configure apr-util?])) if test -z "`$prereq_check apu $APU_CONFIG`"; then AC_MSG_ERROR([Bad libaprutil version]) fi if test "x$PERL_GLUE" != "xno"; then AC_MSG_CHECKING(for perl) if test -z "`$prereq_check perl $PERL`"; then AC_MSG_ERROR([Bad perl version]) fi AC_MSG_RESULT($PERL) AC_MSG_CHECKING(for ExtUtils::XSBuilder) if test -z "`$prereq_check ExtUtils::XSBuilder`"; then AC_MSG_WARN([Bad ExtUtils::XSBuilder version]) fi AC_MSG_RESULT(yes) AC_MSG_CHECKING(for mod_perl2) if test -z "`$prereq_check mod_perl2`"; then AC_MSG_WARN([Bad mod_perl2 version]) fi AC_MSG_RESULT(yes) AC_MSG_CHECKING(for Apache::Test) if test -z "`$prereq_check Apache::Test`"; then AC_MSG_WARN([Bad Apache::Test version]) fi AC_MSG_RESULT(yes) AC_MSG_CHECKING(for ExtUtils::MakeMaker) if test -z "`$prereq_check ExtUtils::MakeMaker`"; then AC_MSG_WARN([Bad ExtUtils::MakeMaker version]) fi AC_MSG_RESULT(yes) fi AM_CONDITIONAL(ENABLE_PROFILE, test "x$PROFILE" != "xno") AM_CONDITIONAL(BUILD_PERL_GLUE, test "x$PERL_GLUE" != "xno") AM_CONDITIONAL(HAVE_APACHE_TEST, test -n "`$prereq_check Apache::Test`") AM_CONDITIONAL(BUILD_HTTPD, test -n "$APACHE2_SRC") AM_CONDITIONAL(BUILD_APR, test "x$APR_CONFIG" = x`$APR_CONFIG --srcdir`/apr-config) AM_CONDITIONAL(BUILD_APU, test "x$APU_CONFIG" = x`$APU_CONFIG --srcdir`/apu-config) AM_CONDITIONAL(HAVE_APACHE1, test -n "$APACHE1_APXS") dnl Reset the default installation prefix to be the same as apu's ac_default_prefix="`$APU_CONFIG --prefix`" APR_ADDTO([APR_INCLUDES], "`$APR_CONFIG --includes`") APR_ADDTO([APR_INCLUDES], "`$APU_CONFIG --includes`") APR_LA="`$APR_CONFIG --apr-la-file`" APU_LA="`$APU_CONFIG --apu-la-file`" APR_ADDTO([APR_LTFLAGS], "`$APR_CONFIG --link-libtool`") APR_ADDTO([APR_LTFLAGS], "`$APU_CONFIG --link-libtool`") dnl perl glue/tests do not use libtool: need ld linker flags APR_ADDTO([APR_LIBS], "`$APR_CONFIG --libs`") apu_avoid_libs="" if $APU_CONFIG --avoid-ldap >/dev/null 2>&1; then apu_avoid_libs="--avoid-ldap" fi if $APU_CONFIG --avoid-dbm >/dev/null 2>&1; then apu_avoid_libs="--avoid-dbm $apu_avoid_libs" fi dnl ld: fatal: recording name conflict: dnl file `/usr/sfw/lib/gcc/i386-pc-solaris2.10/3.4.3/../../../libexpat.so' and dnl file `httpd/lib/libexpat.so' dnl provide identical dependency names: libexpat.so.0 dnl (possible multiple inclusion of the same file) if test "x$OS" = "xsolaris"; then APU_LIBS="`$APU_CONFIG $apu_avoid_libs --libs | $PERL -pe 's,-lexpat,,'`" else APU_LIBS="`$APU_CONFIG $apu_avoid_libs --libs`" fi APR_ADDTO([APR_LIBS], "$APU_LIBS") APR_ADDTO([APR_LDFLAGS], "`$APU_CONFIG --link-ld --ldflags`") APR_ADDTO([APR_LDFLAGS], "`$APR_CONFIG --link-ld --ldflags`") if test -n "$EXPAT_DIR"; then APR_ADDTO([APR_INCLUDES], "-I$EXPAT_DIR/include") APR_ADDTO([APR_LTFLAGS], "-L$EXPAT_DIR/lib") fi dnl Absolute source/build directory abs_srcdir=`(cd $srcdir && pwd)` abs_builddir=`pwd` top_builddir="$abs_srcdir" if test "$abs_builddir" != "$abs_srcdir"; then USE_VPATH=1 fi if test "x$USE_MAINTAINER_MODE" != "xno"; then APR_ADDTO([CFLAGS],[ -fno-strict-aliasing -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Wwrite-strings -Wcast-qual -Wfloat-equal -Wshadow -Wpointer-arith -Wbad-function-cast -Wsign-compare -Waggregate-return -Wmissing-noreturn -Wmissing-format-attribute -Wpacked -Wredundant-decls -Wnested-externs -Wdisabled-optimization -Wno-long-long -Wendif-labels -Wcast-align -Wpacked ]) # -Wdeclaration-after-statement is only supported on gcc 3.4+ fi APR_ADDTO([CPPFLAGS], "`$APR_CONFIG --cppflags`") get_version="$SHELL $abs_srcdir/build/get-version.sh" version_hdr="$abs_srcdir/include/apreq_version.h" # set version data APREQ_CONFIG="$top_builddir/apreq2-config" APREQ_MAJOR_VERSION=`$get_version major $version_hdr APREQ` APREQ_MINOR_VERSION=`$get_version minor $version_hdr APREQ` APREQ_PATCH_VERSION=`$get_version patch $version_hdr APREQ` APREQ_DOTTED_VERSION=`$get_version all $version_hdr APREQ` # XXX: APR_MAJOR_VERSION doesn't yet work for static builds APREQ_LIBTOOL_CURRENT=`expr $APREQ_MAJOR_VERSION + $APREQ_MINOR_VERSION + $APR_MAJOR_VERSION` APREQ_LIBTOOL_REVISION=$APREQ_PATCH_VERSION APREQ_LIBTOOL_AGE=$APREQ_MINOR_VERSION APREQ_LIBTOOL_VERSION="$APREQ_LIBTOOL_CURRENT:$APREQ_LIBTOOL_REVISION:$APREQ_LIBTOOL_AGE" APREQ_LIBNAME="apreq$APREQ_MAJOR_VERSION" echo "lib$APREQ_LIBNAME Version: $APREQ_DOTTED_VERSION" ## Apparently FC5 doesn't like bsdtar ## which is the default /usr/bin/tar on FreeBSD ## by default /usr/ports/archivers/gtar installs here if test "x$OS" = 'xfreebsd'; then TAR='/usr/local/bin/gtar' else TAR='tar' fi AC_SUBST(APREQ_CONFIG) AC_SUBST(APREQ_LIBNAME) AC_SUBST(APREQ_LIBTOOL_VERSION) AC_SUBST(APREQ_MAJOR_VERSION) AC_SUBST(APREQ_DOTTED_VERSION) AC_SUBST(APACHE2_APXS) AC_SUBST(APACHE2_SRC) AC_SUBST(APACHE2_INCLUDES) AC_SUBST(APACHE2_HTTPD) AC_SUBST(APACHE1_APXS) AC_SUBST(APU_CONFIG) AC_SUBST(APR_CONFIG) AC_SUBST(APR_INCLUDES) AC_SUBST(APR_LDFLAGS) AC_SUBST(APR_LTFLAGS) AC_SUBST(APR_LIBS) AC_SUBST(APR_LA) AC_SUBST(APU_LA) AC_SUBST(PERL) AC_SUBST(PERL_OPTS) AC_SUBST(MM_OPTS) AC_SUBST(TAR) AC_SUBST(APR_DOC_VERSION) AC_SUBST(APU_DOC_VERSION) if test "x$OS" = "xsolaris"; then $PERL -pi -e 's,^shrext=,shrext_cmds=,' libtool fi ]) dnl APR_CONFIG_NICE(filename) dnl dnl Saves a snapshot of the configure command-line for later reuse dnl AC_DEFUN([APR_CONFIG_NICE],[ rm -f $1 cat >$1<> $1 fi if test -n "$CFLAGS"; then echo "CFLAGS=\"$CFLAGS\"; export CFLAGS" >> $1 fi if test -n "$CPPFLAGS"; then echo "CPPFLAGS=\"$CPPFLAGS\"; export CPPFLAGS" >> $1 fi if test -n "$LDFLAGS"; then echo "LDFLAGS=\"$LDFLAGS\"; export LDFLAGS" >> $1 fi if test -n "$LTFLAGS"; then echo "LTFLAGS=\"$LTFLAGS\"; export LTFLAGS" >> $1 fi if test -n "$LIBS"; then echo "LIBS=\"$LIBS\"; export LIBS" >> $1 fi if test -n "$INCLUDES"; then echo "INCLUDES=\"$INCLUDES\"; export INCLUDES" >> $1 fi if test -n "$NOTEST_CFLAGS"; then echo "NOTEST_CFLAGS=\"$NOTEST_CFLAGS\"; export NOTEST_CFLAGS" >> $1 fi if test -n "$NOTEST_CPPFLAGS"; then echo "NOTEST_CPPFLAGS=\"$NOTEST_CPPFLAGS\"; export NOTEST_CPPFLAGS" >> $1 fi if test -n "$NOTEST_LDFLAGS"; then echo "NOTEST_LDFLAGS=\"$NOTEST_LDFLAGS\"; export NOTEST_LDFLAGS" >> $1 fi if test -n "$NOTEST_LIBS"; then echo "NOTEST_LIBS=\"$NOTEST_LIBS\"; export NOTEST_LIBS" >> $1 fi echo [$]0 [$]ac_configure_args '"[$]@"' >> $1 chmod +x $1 ])dnl dnl dnl APR_ADDTO(variable, value) dnl dnl Add value to variable dnl AC_DEFUN([APR_ADDTO],[ if test "x$$1" = "x"; then echo " setting $1 to \"$2\"" $1="$2" else apr_addto_bugger="$2" for i in $apr_addto_bugger; do apr_addto_duplicate="0" for j in $$1; do if test "x$i" = "x$j"; then apr_addto_duplicate="1" break fi done if test $apr_addto_duplicate = "0"; then echo " adding \"$i\" to $1" $1="$$1 $i" fi done fi ])dnl libapreq2-2.13/aclocal.m40000644000076400017500000102260311473533243014163 0ustar issacissac# generated automatically by aclocal 1.10.1 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(AC_AUTOCONF_VERSION, [2.61],, [m4_warning([this file was generated for autoconf 2.61. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # serial 52 Debian 1.5.26-4+lenny1 AC_PROG_LIBTOOL # AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) # ----------------------------------------------------------- # If this macro is not defined by Autoconf, define it here. m4_ifdef([AC_PROVIDE_IFELSE], [], [m4_define([AC_PROVIDE_IFELSE], [m4_ifdef([AC_PROVIDE_$1], [$2], [$3])])]) # AC_PROG_LIBTOOL # --------------- AC_DEFUN([AC_PROG_LIBTOOL], [AC_REQUIRE([_AC_PROG_LIBTOOL])dnl dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. AC_PROVIDE_IFELSE([AC_PROG_CXX], [AC_LIBTOOL_CXX], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX ])]) dnl And a similar setup for Fortran 77 support AC_PROVIDE_IFELSE([AC_PROG_F77], [AC_LIBTOOL_F77], [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 ])]) dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [AC_LIBTOOL_GCJ], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [AC_LIBTOOL_GCJ], [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], [AC_LIBTOOL_GCJ], [ifdef([AC_PROG_GCJ], [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ifdef([A][M_PROG_GCJ], [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ifdef([LT_AC_PROG_GCJ], [define([LT_AC_PROG_GCJ], defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) ])])# AC_PROG_LIBTOOL # _AC_PROG_LIBTOOL # ---------------- AC_DEFUN([_AC_PROG_LIBTOOL], [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl # Prevent multiple expansion define([AC_PROG_LIBTOOL], []) ])# _AC_PROG_LIBTOOL # AC_LIBTOOL_SETUP # ---------------- AC_DEFUN([AC_LIBTOOL_SETUP], [AC_PREREQ(2.50)dnl AC_REQUIRE([AC_ENABLE_SHARED])dnl AC_REQUIRE([AC_ENABLE_STATIC])dnl AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_LD])dnl AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl AC_REQUIRE([AC_PROG_NM])dnl AC_REQUIRE([AC_PROG_LN_S])dnl AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! AC_REQUIRE([AC_OBJEXT])dnl AC_REQUIRE([AC_EXEEXT])dnl dnl AC_LIBTOOL_SYS_MAX_CMD_LEN AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE AC_LIBTOOL_OBJDIR AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl _LT_AC_PROG_ECHO_BACKSLASH case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' [sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] # Same as above, but do not quote variable references. [double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" AC_CHECK_TOOL(AR, ar, false) AC_CHECK_TOOL(RANLIB, ranlib, :) AC_CHECK_TOOL(STRIP, strip, :) old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then AC_PATH_MAGIC fi ;; esac _LT_REQUIRED_DARWIN_CHECKS AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], enable_win32_dll=yes, enable_win32_dll=no) AC_ARG_ENABLE([libtool-lock], [AC_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes AC_ARG_WITH([pic], [AC_HELP_STRING([--with-pic], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [pic_mode=default]) test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= AC_LIBTOOL_LANG_C_CONFIG _LT_AC_TAGCONFIG ])# AC_LIBTOOL_SETUP # _LT_AC_SYS_COMPILER # ------------------- AC_DEFUN([_LT_AC_SYS_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_AC_SYS_COMPILER # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. AC_DEFUN([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ]) # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. AC_DEFUN([_LT_COMPILER_BOILERPLATE], [AC_REQUIRE([LT_AC_PROG_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. AC_DEFUN([_LT_LINKER_BOILERPLATE], [AC_REQUIRE([LT_AC_PROG_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # -------------------------- # Check for some things on darwin AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. echo "int foo(void){return 1;}" > conftest.c $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib ${wl}-single_module conftest.c if test -f libconftest.dylib; then lt_cv_apple_cc_single_mod=yes rm -rf libconftest.dylib* fi rm conftest.c fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) case $host_os in rhapsody* | darwin1.[[0123]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}" fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil="~$DSYMUTIL \$lib || :" else _lt_dsymutil= fi ;; esac ]) # _LT_AC_SYS_LIBPATH_AIX # ---------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_LINK_IFELSE(AC_LANG_PROGRAM,[ lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ])# _LT_AC_SYS_LIBPATH_AIX # _LT_AC_SHELL_INIT(ARG) # ---------------------- AC_DEFUN([_LT_AC_SHELL_INIT], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) $1 AC_DIVERT_POP ])# _LT_AC_SHELL_INIT # _LT_AC_PROG_ECHO_BACKSLASH # -------------------------- # Add some code to the start of the generated configure script which # will find an echo command which doesn't interpret backslashes. AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], [_LT_AC_SHELL_INIT([ # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac echo=${ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1 && unset CDPATH if test -z "$ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if (echo_test_string=`eval $cmd`) 2>/dev/null && echo_test_string=`eval $cmd` && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(ECHO) ])])# _LT_AC_PROG_ECHO_BACKSLASH # _LT_AC_LOCK # ----------- AC_DEFUN([_LT_AC_LOCK], [AC_ARG_ENABLE([libtool-lock], [AC_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], [*-*-cygwin* | *-*-mingw* | *-*-pw32*) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; ]) esac need_locks="$enable_libtool_lock" ])# _LT_AC_LOCK # AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_REQUIRE([LT_AC_PROG_SED]) AC_CACHE_CHECK([$1], [$2], [$2=no ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $rm conftest* ]) if test x"[$]$2" = xyes; then ifelse([$5], , :, [$5]) else ifelse([$6], , :, [$6]) fi ])# AC_LIBTOOL_COMPILER_OPTION # AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ------------------------------------------------------------ # Check whether the given compiler option works AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then ifelse([$4], , :, [$4]) else ifelse([$5], , :, [$5]) fi ])# AC_LIBTOOL_LINKER_OPTION # AC_LIBTOOL_SYS_MAX_CMD_LEN # -------------------------- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [# find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi ])# AC_LIBTOOL_SYS_MAX_CMD_LEN # _LT_AC_CHECK_DLFCN # ------------------ AC_DEFUN([_LT_AC_CHECK_DLFCN], [AC_CHECK_HEADERS(dlfcn.h)dnl ])# _LT_AC_CHECK_DLFCN # _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # --------------------------------------------------------------------- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); exit (status); }] EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_AC_TRY_DLOPEN_SELF # AC_LIBTOOL_DLOPEN_SELF # ---------------------- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi ])# AC_LIBTOOL_DLOPEN_SELF # AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) # --------------------------------- # Check to see if options -c and -o are simultaneously supported by compiler AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* ]) ])# AC_LIBTOOL_PROG_CC_C_O # AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) # ----------------------------------------- # Check to see if we can do hard links to lock some files if needed AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_REQUIRE([_LT_AC_LOCK])dnl hard_links="nottested" if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi ])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS # AC_LIBTOOL_OBJDIR # ----------------- AC_DEFUN([AC_LIBTOOL_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir ])# AC_LIBTOOL_OBJDIR # AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) # ---------------------------------------------- # Check hardcoding attributes. AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_AC_TAGVAR(hardcode_action, $1)= if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existant directories. if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_AC_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_AC_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_AC_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi ])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH # AC_LIBTOOL_SYS_LIB_STRIP # ------------------------ AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], [striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi ])# AC_LIBTOOL_SYS_LIB_STRIP # AC_LIBTOOL_SYS_DYNAMIC_LINKER # ----------------------------- # PORTME Fill in your ld.so characteristics AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_MSG_CHECKING([dynamic linker characteristics]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" m4_if($1,[],[ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`echo $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[123]]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[[3-9]]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no AC_CACHE_VAL([lt_cv_sys_lib_search_path_spec], [lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"]) sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" AC_CACHE_VAL([lt_cv_sys_lib_dlsearch_path_spec], [lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"]) sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi ])# AC_LIBTOOL_SYS_DYNAMIC_LINKER # _LT_AC_TAGCONFIG # ---------------- AC_DEFUN([_LT_AC_TAGCONFIG], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_ARG_WITH([tags], [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], [include additional configurations @<:@automatic@:>@])], [tagnames="$withval"]) if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then AC_MSG_WARN([output file `$ofile' does not exist]) fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) else AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) fi fi if test -z "$LTCFLAGS"; then eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in "") ;; *) AC_MSG_ERROR([invalid tag name: $tagname]) ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then AC_MSG_ERROR([tag name \"$tagname\" already exists]) fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_LIBTOOL_LANG_CXX_CONFIG else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then AC_LIBTOOL_LANG_F77_CONFIG else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then AC_LIBTOOL_LANG_GCJ_CONFIG else tagname="" fi ;; RC) AC_LIBTOOL_LANG_RC_CONFIG ;; *) AC_MSG_ERROR([Unsupported tag name: $tagname]) ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" AC_MSG_ERROR([unable to update list of available tagged configurations.]) fi fi ])# _LT_AC_TAGCONFIG # AC_LIBTOOL_DLOPEN # ----------------- # enable checks for dlopen support AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) ])# AC_LIBTOOL_DLOPEN # AC_LIBTOOL_WIN32_DLL # -------------------- # declare package support for building win32 DLLs AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) ])# AC_LIBTOOL_WIN32_DLL # AC_ENABLE_SHARED([DEFAULT]) # --------------------------- # implement the --enable-shared flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_SHARED], [define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([shared], [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]AC_ENABLE_SHARED_DEFAULT) ])# AC_ENABLE_SHARED # AC_DISABLE_SHARED # ----------------- # set the default shared flag to --disable-shared AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no) ])# AC_DISABLE_SHARED # AC_ENABLE_STATIC([DEFAULT]) # --------------------------- # implement the --enable-static flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_STATIC], [define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([static], [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]AC_ENABLE_STATIC_DEFAULT) ])# AC_ENABLE_STATIC # AC_DISABLE_STATIC # ----------------- # set the default static flag to --disable-static AC_DEFUN([AC_DISABLE_STATIC], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_STATIC(no) ])# AC_DISABLE_STATIC # AC_ENABLE_FAST_INSTALL([DEFAULT]) # --------------------------------- # implement the --enable-fast-install flag # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. AC_DEFUN([AC_ENABLE_FAST_INSTALL], [define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE([fast-install], [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) ])# AC_ENABLE_FAST_INSTALL # AC_DISABLE_FAST_INSTALL # ----------------------- # set the default to --disable-fast-install AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_FAST_INSTALL(no) ])# AC_DISABLE_FAST_INSTALL # AC_LIBTOOL_PICMODE([MODE]) # -------------------------- # implement the --with-pic flag # MODE is either `yes' or `no'. If omitted, it defaults to `both'. AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl pic_mode=ifelse($#,1,$1,default) ])# AC_LIBTOOL_PICMODE # AC_PROG_EGREP # ------------- # This is predefined starting with Autoconf 2.54, so this conditional # definition can be removed once we require Autoconf 2.54 or later. m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], [AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi]) EGREP=$ac_cv_prog_egrep AC_SUBST([EGREP]) ])]) # AC_PATH_TOOL_PREFIX # ------------------- # find a file program which can recognize shared library AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="ifelse([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi ])# AC_PATH_TOOL_PREFIX # AC_PATH_MAGIC # ------------- # find a file program which can recognize a shared library AC_DEFUN([AC_PATH_MAGIC], [AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# AC_PATH_MAGIC # AC_PROG_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([AC_PROG_LD], [AC_ARG_WITH([gnu-ld], [AC_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no]) AC_REQUIRE([LT_AC_PROG_SED])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown ])# AC_DEPLIBS_CHECK_METHOD # AC_PROG_NM # ---------- # find the pathname to a BSD-compatible name lister AC_DEFUN([AC_PROG_NM], [AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi]) NM="$lt_cv_path_NM" ])# AC_PROG_NM # AC_CHECK_LIBM # ------------- # check for math library AC_DEFUN([AC_CHECK_LIBM], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac ])# AC_CHECK_LIBM # AC_LIBLTDL_CONVENIENCE([DIRECTORY]) # ----------------------------------- # sets LIBLTDL to the link flags for the libltdl convenience library and # LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-convenience to the configure arguments. Note that # AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, # it is assumed to be `libltdl'. LIBLTDL will be prefixed with # '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' # (note the single quotes!). If your package is not flat and you're not # using automake, define top_builddir and top_srcdir appropriately in # the Makefiles. AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case $enable_ltdl_convenience in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ])# AC_LIBLTDL_CONVENIENCE # AC_LIBLTDL_INSTALLABLE([DIRECTORY]) # ----------------------------------- # sets LIBLTDL to the link flags for the libltdl installable library and # LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-install to the configure arguments. Note that # AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, # and an installed libltdl is not found, it is assumed to be `libltdl'. # LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with # '${top_srcdir}/' (note the single quotes!). If your package is not # flat and you're not using automake, define top_builddir and top_srcdir # appropriately in the Makefiles. # In the future, this macro may have to be called after AC_PROG_LIBTOOL. AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_CHECK_LIB(ltdl, lt_dlinit, [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], [if test x"$enable_ltdl_install" = xno; then AC_MSG_WARN([libltdl not installed, but installation disabled]) else enable_ltdl_install=yes fi ]) if test x"$enable_ltdl_install" = x"yes"; then ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) else ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" LTDLINCL= fi # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ])# AC_LIBLTDL_INSTALLABLE # AC_LIBTOOL_CXX # -------------- # enable support for C++ libraries AC_DEFUN([AC_LIBTOOL_CXX], [AC_REQUIRE([_LT_AC_LANG_CXX]) ])# AC_LIBTOOL_CXX # _LT_AC_LANG_CXX # --------------- AC_DEFUN([_LT_AC_LANG_CXX], [AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([_LT_AC_PROG_CXXCPP]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) ])# _LT_AC_LANG_CXX # _LT_AC_PROG_CXXCPP # ------------------ AC_DEFUN([_LT_AC_PROG_CXXCPP], [ AC_REQUIRE([AC_PROG_CXX]) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP fi ])# _LT_AC_PROG_CXXCPP # AC_LIBTOOL_F77 # -------------- # enable support for Fortran 77 libraries AC_DEFUN([AC_LIBTOOL_F77], [AC_REQUIRE([_LT_AC_LANG_F77]) ])# AC_LIBTOOL_F77 # _LT_AC_LANG_F77 # --------------- AC_DEFUN([_LT_AC_LANG_F77], [AC_REQUIRE([AC_PROG_F77]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) ])# _LT_AC_LANG_F77 # AC_LIBTOOL_GCJ # -------------- # enable support for GCJ libraries AC_DEFUN([AC_LIBTOOL_GCJ], [AC_REQUIRE([_LT_AC_LANG_GCJ]) ])# AC_LIBTOOL_GCJ # _LT_AC_LANG_GCJ # --------------- AC_DEFUN([_LT_AC_LANG_GCJ], [AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) ])# _LT_AC_LANG_GCJ # AC_LIBTOOL_RC # ------------- # enable support for Windows resource files AC_DEFUN([AC_LIBTOOL_RC], [AC_REQUIRE([LT_AC_PROG_RC]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) ])# AC_LIBTOOL_RC # AC_LIBTOOL_LANG_C_CONFIG # ------------------------ # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) AC_DEFUN([_LT_AC_LANG_C_CONFIG], [lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP AC_LIBTOOL_DLOPEN_SELF # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC="$lt_save_CC" ])# AC_LIBTOOL_LANG_C_CONFIG # AC_LIBTOOL_LANG_CXX_CONFIG # -------------------------- # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], [AC_LANG_PUSH(C++) AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([_LT_AC_PROG_CXXCPP]) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_AC_TAGVAR(no_undefined_flag, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Dependencies to place before and after the object being linked: _LT_AC_TAGVAR(predep_objects, $1)= _LT_AC_TAGVAR(postdep_objects, $1)= _LT_AC_TAGVAR(predeps, $1)= _LT_AC_TAGVAR(postdeps, $1)= _LT_AC_TAGVAR(compiler_lib_search_path, $1)= _LT_AC_TAGVAR(compiler_lib_search_dirs, $1)= # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration AC_PROG_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_AC_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_AC_TAGVAR(archive_cmds, $1)='' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_AC_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; darwin* | rhapsody*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes _LT_AC_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" if test "$GXX" = yes ; then output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else case $cc_basename in xlc*) output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd[[12]]*) # C++ shared libraries reported to be fairly broken before switch to ELF _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_AC_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; hpux9*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc*) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; openbsd2*) # C++ shared libraries are fairly broken _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd='echo' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; osf3*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; cxx*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; cxx*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ $rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. # So that behaviour is only enabled if SCOABSPATH is set to a # non-empty value in the environment. Most likely only useful for # creating official distributions of packages. # This is a hack until libtool officially supports absolute path # names for shared libraries. _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_AC_TAGVAR(GCC, $1)="$GXX" _LT_AC_TAGVAR(LD, $1)="$LD" AC_LIBTOOL_POSTDEP_PREDEP($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld ])# AC_LIBTOOL_LANG_CXX_CONFIG # AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) # ------------------------------------ # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP], [AC_REQUIRE([LT_AC_PROG_SED])dnl dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_AC_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac ])# AC_LIBTOOL_POSTDEP_PREDEP # AC_LIBTOOL_LANG_F77_CONFIG # -------------------------- # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)]) AC_DEFUN([_LT_AC_LANG_F77_CONFIG], [AC_REQUIRE([AC_PROG_F77]) AC_LANG_PUSH(Fortran 77) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_AC_TAGVAR(no_undefined_flag, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_AC_TAGVAR(GCC, $1)="$G77" _LT_AC_TAGVAR(LD, $1)="$LD" AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_CONFIG($1) AC_LANG_POP CC="$lt_save_CC" ])# AC_LIBTOOL_LANG_F77_CONFIG # AC_LIBTOOL_LANG_GCJ_CONFIG # -------------------------- # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)]) AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG], [AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_CONFIG($1) AC_LANG_RESTORE CC="$lt_save_CC" ])# AC_LIBTOOL_LANG_GCJ_CONFIG # AC_LIBTOOL_LANG_RC_CONFIG # ------------------------- # Ensure that the configuration vars for the Windows resource compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)]) AC_DEFUN([_LT_AC_LANG_RC_CONFIG], [AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_AC_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes AC_LIBTOOL_CONFIG($1) AC_LANG_RESTORE CC="$lt_save_CC" ])# AC_LIBTOOL_LANG_RC_CONFIG # AC_LIBTOOL_CONFIG([TAGNAME]) # ---------------------------- # If TAGNAME is not passed, then create an initial libtool script # with a default configuration from the untagged config vars. Otherwise # add code to config.status for appending the configuration named by # TAGNAME from the matching tagged config vars. AC_DEFUN([AC_LIBTOOL_CONFIG], [# The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ _LT_AC_TAGVAR(compiler, $1) \ _LT_AC_TAGVAR(CC, $1) \ _LT_AC_TAGVAR(LD, $1) \ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \ _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \ _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \ _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \ _LT_AC_TAGVAR(old_archive_cmds, $1) \ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \ _LT_AC_TAGVAR(predep_objects, $1) \ _LT_AC_TAGVAR(postdep_objects, $1) \ _LT_AC_TAGVAR(predeps, $1) \ _LT_AC_TAGVAR(postdeps, $1) \ _LT_AC_TAGVAR(compiler_lib_search_path, $1) \ _LT_AC_TAGVAR(compiler_lib_search_dirs, $1) \ _LT_AC_TAGVAR(archive_cmds, $1) \ _LT_AC_TAGVAR(archive_expsym_cmds, $1) \ _LT_AC_TAGVAR(postinstall_cmds, $1) \ _LT_AC_TAGVAR(postuninstall_cmds, $1) \ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \ _LT_AC_TAGVAR(allow_undefined_flag, $1) \ _LT_AC_TAGVAR(no_undefined_flag, $1) \ _LT_AC_TAGVAR(export_symbols_cmds, $1) \ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \ _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \ _LT_AC_TAGVAR(hardcode_automatic, $1) \ _LT_AC_TAGVAR(module_cmds, $1) \ _LT_AC_TAGVAR(module_expsym_cmds, $1) \ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \ _LT_AC_TAGVAR(fix_srcfile_path, $1) \ _LT_AC_TAGVAR(exclude_expsyms, $1) \ _LT_AC_TAGVAR(include_expsyms, $1); do case $var in _LT_AC_TAGVAR(old_archive_cmds, $1) | \ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \ _LT_AC_TAGVAR(archive_cmds, $1) | \ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \ _LT_AC_TAGVAR(module_cmds, $1) | \ _LT_AC_TAGVAR(module_expsym_cmds, $1) | \ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\[$]0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'` ;; esac ifelse([$1], [], [cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" AC_MSG_NOTICE([creating $ofile])], [cfgfile="$ofile"]) cat <<__EOF__ >> "$cfgfile" ifelse([$1], [], [#! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e 1s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG], [# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) # Is the compiler the GNU C compiler? with_gcc=$_LT_AC_TAGVAR(GCC, $1) # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_[]_LT_AC_TAGVAR(LD, $1) # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) # Commands used to build and install a shared archive. archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_dirs, $1) # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) # Flag that forces no undefined symbols. no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) # The commands to list exported symbols. export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) # Symbols that must always be exported. include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) ifelse([$1],[], [# ### END LIBTOOL CONFIG], [# ### END LIBTOOL TAG CONFIG: $tagname]) __EOF__ ifelse([$1],[], [ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ]) else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ])# AC_LIBTOOL_CONFIG # AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------------------- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi ])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # --------------------------------- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([LT_AC_PROG_SED]) AC_REQUIRE([AC_PROG_NM]) AC_REQUIRE([AC_OBJEXT]) # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32*) symcode='[[ABCDGISTW]]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; linux* | k*bsd*-gnu) if test "$host_cpu" = ia64; then symcode='[[ABCDGIRSTW]]' lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[[]] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi ]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) # --------------------------------------- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], [_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)= AC_MSG_CHECKING([for $compiler option to produce PIC]) ifelse([$1],[CXX],[ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; esac ;; dgux*) case $cc_basename in ec++*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; icpc* | ecpc*) # Intel C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler. _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; vxworks*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; newsos6) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], _LT_AC_TAGVAR(lt_cv_prog_compiler_pic_works, $1), [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" ;; esac # # Check to make sure the static flag actually works. # wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_AC_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) ]) # AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) # ------------------------------------ # See if the linker supports building shared libraries. AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_REQUIRE([LT_AC_PROG_SED])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) ifelse([$1],[CXX],[ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw*) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' ;; linux* | k*bsd*-gnu) _LT_AC_TAGVAR(link_all_deplibs, $1)=no ;; *) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] ],[ runpath_var= _LT_AC_TAGVAR(allow_undefined_flag, $1)= _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_AC_TAGVAR(archive_cmds, $1)= _LT_AC_TAGVAR(archive_expsym_cmds, $1)= _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_minus_L, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_AC_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. _LT_CC_BASENAME([$compiler]) case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac _LT_AC_TAGVAR(ld_shlibs, $1)=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; interix[[3-9]]*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac _LT_AC_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi _LT_AC_TAGVAR(link_all_deplibs, $1)=no else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=yes _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' else _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_AC_TAGVAR(archive_cmds, $1)='' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_AC_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # see comment about different semantics on the GNU ld section _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; bsdi[[45]]*) _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_AC_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[[012]]) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else case $cc_basename in xlc*) output_verbose_link_cmd='echo' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ;; dgux*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; freebsd1*) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' if test "$GCC" = yes; then wlarc='${wl}' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_AC_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_AC_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; esac fi ]) AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_AC_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) _LT_AC_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) then _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no else _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) ;; esac fi ;; esac ])# AC_LIBTOOL_PROG_LD_SHLIBS # _LT_AC_FILE_LTDLL_C # ------------------- # Be careful that the start marker always follows a newline. AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ ])# _LT_AC_FILE_LTDLL_C # _LT_AC_TAGVAR(VARNAME, [TAGNAME]) # --------------------------------- AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) # old names AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) # This is just to silence aclocal about the macro not being used ifelse([AC_DISABLE_FAST_INSTALL]) AC_DEFUN([LT_AC_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj, no) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS) ]) AC_DEFUN([LT_AC_PROG_RC], [AC_CHECK_TOOL(RC, windres, no) ]) # Cheap backport of AS_EXECUTABLE_P and required macros # from Autoconf 2.59; we should not use $as_executable_p directly. # _AS_TEST_PREPARE # ---------------- m4_ifndef([_AS_TEST_PREPARE], [m4_defun([_AS_TEST_PREPARE], [if test -x / >/dev/null 2>&1; then as_executable_p='test -x' else as_executable_p='test -f' fi ])])# _AS_TEST_PREPARE # AS_EXECUTABLE_P # --------------- # Check whether a file is executable. m4_ifndef([AS_EXECUTABLE_P], [m4_defun([AS_EXECUTABLE_P], [AS_REQUIRE([_AS_TEST_PREPARE])dnl $as_executable_p $1[]dnl ])])# AS_EXECUTABLE_P # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # # LT_AC_PROG_SED # -------------- # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. AC_DEFUN([LT_AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if AS_EXECUTABLE_P(["$as_dir/$lt_ac_prog$ac_exec_ext"]); then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ]) # Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.10' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.10.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.10.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 8 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 9 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 3 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 8 # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 13 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.60])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AM_PROG_INSTALL_SH AM_PROG_INSTALL_STRIP AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) ]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 AC_DEFUN([AM_MAINTAINER_MODE], [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode is disabled by default AC_ARG_ENABLE(maintainer-mode, [ --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer], USE_MAINTAINER_MODE=$enableval, USE_MAINTAINER_MODE=no) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST(MAINT)dnl ] ) AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([acinclude.m4]) libapreq2-2.13/apreq2-config.in0000644000076400017500000001345211473532340015306 0ustar issacissac#!/bin/sh ## ## Copyright 2003-2006 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. ## # apreq2-config- based on apu-config: # APR-util script designed to allow easy command line access to APR-util # configuration parameters. PATH=/bin:/usr/bin:/usr/local/bin prefix="@prefix@" exec_prefix="@exec_prefix@" bindir="@bindir@" libdir="@libdir@" includedir="@includedir@/@APREQ_LIBNAME@" LIBS="@APR_LIBS@" LDFLAGS="@APR_LDFLAGS@" INCLUDES="@APR_INCLUDES@" SOLARIS=`echo @build_os@ | grep -i solaris` APREQ_LIBNAME="@APREQ_LIBNAME@" APREQ_SOURCE_DIR="@abs_srcdir@" APREQ_BUILD_DIR="@abs_builddir@" show_usage() { cat << EOF Usage: apreq2-config [OPTION] Known values for OPTION are: --prefix[=DIR] change prefix to DIR --bindir print location where binaries are installed --includes print include information --includedir print location where headers are installed --ldflags print linker flags --libs print library information --srcdir print apreq2 source directory --link-ld print link switch(es) for linking to libapreq2 --link-libtool print the libtool inputs for linking to libapreq2 --la-file print the path to the library's .la file, if available --library-version print the API version as a dotted triple --libtool-version print the ABI version in a libtool-compatible format --package-version print the version number of the distribution --help print this help When linking with libtool, an application should do something like: APREQ_LIBS="\`apreq2-config --link-libtool --libs\`" or when linking directly: APREQ_LIBS="\`apreq2-config --link-ld --ldflags --libs\`" An application should use the results of --includes, and --ldflags in their build process. EOF } if test $# -eq 0; then show_usage exit 1 fi thisdir="`dirname $0`" thisdir="`cd $thisdir && pwd`" if test -d $bindir; then tmpbindir="`cd $bindir && pwd`" else tmpbindir="" fi # If we have the realpath program, use it to resolve symlinks. # Otherwise, being in a symlinked dir may result in incorrect output. if test -x "`which realpath 2>/dev/null`"; then thisdir="`realpath $thisdir`" if test -d "$APREQ_SOURCE_DIR"; then APREQ_SOURCE_DIR="`realpath $APREQ_SOURCE_DIR`" fi if test -n "$tmpbindir"; then tmpbindir="`realpath $tmpbindir`" fi fi if test "$tmpbindir" = "$thisdir"; then location=installed elif test "$APREQ_SOURCE_DIR" = "$thisdir"; then location=source else location=build fi if test "$location" = "installed"; then LA_FILE="$libdir/lib${APREQ_LIBNAME}.la" else LA_FILE="$thisdir/library/lib${APREQ_LIBNAME}.la" fi flags="" while test $# -gt 0; do # Normalize the prefix. case "$1" in -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac case "$1" in # It is possible for the user to override our prefix. --prefix=*) prefix=$optarg ;; --prefix) echo $prefix exit 0 ;; --bindir) echo $bindir exit 0 ;; --libs) flags="$flags $LIBS" ;; --includedir) if test "$location" = "installed"; then flags="$includedir" elif test "$location" = "source"; then flags="$APREQ_SOURCE_DIR/include" else # this is for VPATH builds flags="$thisdir/include $APREQ_SOURCE_DIR/include" fi echo $flags exit 0 ;; --includes) if test "$location" = "installed"; then flags="$flags -I$includedir $INCLUDES" elif test "$location" = "source"; then flags="$flags -I$APREQ_SOURCE_DIR/include $INCLUDES" else # this is for VPATH builds flags="$flags -I$thisdir/include -I$APREQ_SOURCE_DIR/include $INCLUDES" fi ;; --ldflags) flags="$flags $LDFLAGS" ;; --srcdir) echo $APREQ_SOURCE_DIR exit 0 ;; --library-version) echo @APREQ_DOTTED_VERSION@ exit 0 ;; --libtool-version) echo @APREQ_LIBTOOL_VERSION@ exit 0 ;; --package-version) echo "@VERSION@" exit 0 ;; --link-ld) if test "$location" = "installed"; then ### avoid using -L if libdir is a "standard" location like /usr/lib flags="$flags -L$libdir -l$APREQ_LIBNAME" else flags="$flags -L$thisdir/library/.libs -l$APREQ_LIBNAME" fi ;; --link-libtool) # If the LA_FILE exists where we think it should be, use it. If we're # installed and the LA_FILE does not exist, assume to use -L/-l # (the LA_FILE may not have been installed). If we're building ourselves, # we'll assume that at some point the .la file be created. if test -f "$LA_FILE"; then flags="$flags $LA_FILE" elif test "$location" = "installed"; then ### avoid using -L if libdir is a "standard" location like /usr/lib flags="$flags -L$libdir -l$APREQ_LIBNAME $apreq_libs" else flags="$flags $LA_FILE" fi ;; --la-file) if test -f "$LA_FILE"; then flags="$flags $LA_FILE" fi ;; --help) show_usage exit 0 ;; *) show_usage exit 1 ;; esac # Next please. shift done if test -n "$flags"; then if test -n "$SOLARIS"; then flags=`echo $flags | sed -e 's/-L\([^ ]*\)/-R\1 -L\1/g'` fi echo "$flags" fi exit 0 libapreq2-2.13/build/announcement.pl0000755000076400017500000000410411473532340016444 0ustar issacissac#! /usr/bin/perl use warnings; use strict; our($PACKAGE_VERSION, $LIBRARY_VERSION); foreach (qw/PACKAGE_VERSION LIBRARY_VERSION/) { no strict 'refs'; my $opt = lc; $opt =~ tr/_/-/; chomp ($$_ = `./apreq2-config --$opt`); } sub slurp { my $file_name = shift; open my $fh, "<", $file_name or die "Can't open $file_name: $!"; read $fh, my $buf, -s $fh; return wantarray ? split /\n/, $buf : $buf; } my $MAIL_FROM = shift; my $RCPT_TO = join ",\n ", map "<$_>" , qw( announce@httpd.apache.org apreq-dev@httpd.apache.org announce@perl.apache.org modperl@perl.apache.org ); my ($LICENSE_VERSION) = grep s/^\s+Version (\d\.\d),.*$/$1/, slurp "LICENSE"; my $CPAN_DATA = join "", <>; $CPAN_DATA =~ /^has entered CPAN as(.+?)\nNo action is required/ms or die "Bad CPAN message:\n$CPAN_DATA"; $CPAN_DATA = $1; my $TITLE = "libapreq2-$PACKAGE_VERSION Released"; my $mail_header = <s inside */ h2 a, h2 a:hover, h2 a:active { color: inherit; background-color: inherit; text-decoration: none; } /* h3, h4 */ /* ====================== */ h3 { background-color: inherit; color: #036; text-decoration: none; font-weight: bold; font-size: 16px; margin: 1.3em 0 0.4em 0; padding: 0; } h4 { background-color: inherit; color: #036; text-decoration: none; font-weight: bold; font-size: 14px; margin: 1.3em 0 0.2em 0; padding: 0; } /* margin adjustment */ h3 + *, h4 + * { margin-top: 0; } /* IE confuses the + * :-( * so reset some things */ ul, .section table, .directive-section table { margin-bottom: 1em; } /* take care of s inside */ h3 a, h3 a:hover, h3 a:active, h4 a, h4 a:hover, h4 a:active { color: inherit; background-color: inherit; text-decoration: none; } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Tables * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* general */ /* ====================== */ /* table { border: 1px solid #aaa; border-collapse: collapse; padding: 2px; margin-top: 0.5em; margin-bottom: 0; } td, th { empty-cells: show; /* show border around empty cells */ padding: 0.1em 0.2em; vertical-align: top; text-align: left; line-height: 1.3em; } */ th { font-weight: bold; } td.centered { text-align: center; } tr.odd { /* for large tables alternating colors */ background-color: #f2f2f2; } tr.header, tr.header th { background-color: #e2e2e2; border-top: 1px solid #aaa; border-bottom: 1px solid #aaa; } /* bordered table cells */ /* ====================== */ /* turn off borders in tables nested in * bordered tables per default */ table.bordered table td, table.bordered table th { border-style: none; } table.bordered td, table.bordered th, table table.bordered td, table table.bordered th { border: 1px solid #aaa; } /* index page layout table */ /* ======================= */ body#index-page div#page-content { width: 100%; /* IE fun */ } body[id]#index-page div#page-content { width: auto; /* reasonable browsers. */ } table#indextable { width: 100%; border-collapse: collapse; border: 0 none; } table#indextable td { width: 33.3%; border-left: 1px solid #aaa; padding-top: 0; padding-bottom: 0; } table#indextable td.col1 { border-left: 0 none; padding-left: 0; } table#indextable td.col3 { padding-right: 0; } /* mod/dir. overview table and quick reference */ /* ============================================ */ table.module th, table.directive th { white-space: nowrap; } table.qref { border-collapse: collapse; width: 100%; } table.qref td { border-style: none solid; border-color: #aaa; border-width: 1px; } table.qref td.descr { padding-left: 1em; font-size: 13px; } table#legend { width: 100%; border-style: none; border-width: 0; vertical-align: bottom; padding: 0; margin: 0; } table#legend td { vertical-align: bottom; margin: 0; padding: 0; } table#legend td.letters { width: 100%; padding-bottom: 0.5em; } table#legend table { vertical-align: bottom; margin: 0 0 0 0.4em; padding: 0; height: 7.5em; } table#legend table td, table#legend table th { vertical-align: middle; padding: 0.1ex 0.2em; line-height: 1em; white-space: nowrap; } /* related modules & dir. */ /* ====================== */ /* assuming, all links are enclosed by * or * */ table.related { border-collapse: separate; } table.related th { padding: 0.2ex 0.3em; background-color: #e5ecf3; color: #405871; vertical-align: middle; } table.related td { padding: 0.2ex 0.3em; } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Lists * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* list default values */ /* ====================== */ ul { list-style-type: disc; } ul ul { list-style-type: square; } ul ul ul { list-style-type: circle; } li, dt, dd { line-height: 1.3em; } dt { margin-top: 0.5em; font-weight: bold; } ol li { margin-top: 0.5em; } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * main page sections * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ div#page-header img { padding: 0; display: block; margin: -70px 0 1px 2em; width: 248px; height: 70px; } div#page-header p.apache { background-color: #405871; color: #fff; padding: 0 0 0 248px; margin: 0; text-align: center; vertical-align: middle; font-size: 16px; font-weight: bold; line-height: 29px; } div#page-header p.menu { text-align: right; font-size: 13px; margin: 30px 0 0.5em 0; padding: 0; } /* breadcrumb navigation */ div.qindex, div#path { text-align:center; margin: 0.2em 0 1.2em 30px; padding: 0; font-size: 13px; } p { line-height: 1.3em; } /* page footer */ /* ====================== */ div#footer { /* margin-left: 30px; */ font-size: 13px; border-top: 1px solid #405871; padding-top: 0.2em; } div#footer p.apache { float: left; text-align: left; padding: 0 0 1em 0; margin-top: 0; } div#footer p.menu { float: right; text-align: right; margin-top: 0; padding: 0 0 1em 0; } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * -> The End (modified doxygen-generated stylesheet below) <- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ CAPTION { font-weight: bold } A.qindex { font-weight: bold; } A.qindexHL { font-weight: bold; background-color: #405871; color: #ffffff; padding: 2px 6px; } A.qindexHL:hover { background-color: #405871; color: #ffffff; } A.qindexHL:visited { background-color: #405871; color: #ffffff } A.el { font-weight: bold } A.elRef { font-weight: bold } DL.el { margin-left: -1cm } PRE.fragment { border: 1px solid #CCCCCC; background-color: #f5f5f5; margin-top: 4px; margin-bottom: 4px; margin-left: 2px; margin-right: 8px; padding-left: 6px; padding-right: 6px; padding-top: 4px; padding-bottom: 4px; } DIV.fragment { border: 1px solid #CCCCCC; background-color: #f5f5f5; padding: 6px; } DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } TD.md { background-color: #F4F4FB; font-weight: bold; } TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; } TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; } DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold; } DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller } BODY { background: white; color: black; margin-right: 20px; margin-left: 30px; } TD.indexkey { background-color: #eeeeff; font-weight: bold; padding-right : 10px; padding-top : 2px; padding-left : 10px; padding-bottom : 2px; margin-left : 0px; margin-right : 0px; margin-top : 2px; margin-bottom : 2px; border: 1px solid #CCCCCC; } TD.indexvalue { background-color: #eeeeff; font-style: italic; padding-right : 10px; padding-top : 2px; padding-left : 10px; padding-bottom : 2px; margin-left : 0px; margin-right : 0px; margin-top : 2px; margin-bottom : 2px; border: 1px solid #CCCCCC; } TR.memlist { background-color: #f0f0f0; } P.formulaDsp { text-align: center; } IMG.formulaDsp { } IMG.formulaInl { vertical-align: middle; } SPAN.keyword { color: #008000 } SPAN.keywordtype { color: #604020 } SPAN.keywordflow { color: #e08000 } SPAN.comment { color: #800000 } SPAN.preprocessor { color: #806020 } SPAN.stringliteral { color: #002080 } SPAN.charliteral { color: #008080 } .mdTable { border: 1px solid #868686; background-color: #F4F4FB; } .mdRow { padding: 8px 10px; } .mdescLeft { font-size: smaller; font-style: italic; background-color: #FAFAFA; padding-left: 8px; border-top: 1px none #E0E0E0; border-right: 1px none #E0E0E0; border-bottom: 1px none #E0E0E0; border-left: 1px none #E0E0E0; margin: 0px; } .mdescRight { font-size: smaller; font-style: italic; background-color: #FAFAFA; padding-left: 4px; border-top: 1px none #E0E0E0; border-right: 1px none #E0E0E0; border-bottom: 1px none #E0E0E0; border-left: 1px none #E0E0E0; margin: 0px; padding-bottom: 0px; padding-right: 8px; } .memItemLeft { padding: 1px 0px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-right-style: none; border-bottom-style: none; border-left-style: none; background-color: #FAFAFA; font-size: 12px; } .memItemRight { padding: 1px 0px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-right-style: none; border-bottom-style: none; border-left-style: none; background-color: #FAFAFA; font-size: 13px; } td.tiny { font-size: 75%; } /* a { color: #252E78; } a:visited { color: #3D2185; } */ libapreq2-2.13/build/dox.foot0000644000076400017500000000056611473532340015105 0ustar issacissac libapreq2-2.13/build/dox.head0000644000076400017500000000075111473532340015033 0ustar issacissac $projectname-$projectnumber: $title libapreq2-2.13/build/doxygen.conf0000644000076400017500000000411311473533315015741 0ustar issacissacPROJECT_NAME = "libapreq2" PROJECT_NUMBER = "2.13" OUTPUT_DIRECTORY = docs OUTPUT_LANGUAGE = English BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES TAB_SIZE = 8 ALIASES = "req=@arg The request handle" OPTIMIZE_OUTPUT_FOR_C = YES INTERNAL_DOCS = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" INPUT = . include module/apache module/apache2 FILE_PATTERNS = *.h *.dox CHANGES STATUS RECURSIVE = NO EXTRACT_STATIC = YES EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = apreq_config* apreq_private* EXAMPLE_PATH = . include EXAMPLE_PATTERNS = README INSTALL LICENSE NOTICE *.html *.man *.h IMAGE_PATH = SOURCE_BROWSER = NO ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = GENERATE_HTML = YES HTML_HEADER = build/dox.head HTML_FOOTER = build/dox.foot HTML_STYLESHEET = build/dox.css HTML_ALIGN_MEMBERS = YES GENERATE_LATEX = NO GENERATE_RTF = NO GENERATE_MAN = YES MAN_LINKS = NO GENERATE_XML = NO GENERATE_AUTOGEN_DEF = NO GENERATE_PERLMOD = NO ENABLE_PREPROCESSING = YES MACRO_EXPANSION = YES EXPAND_ONLY_PREDEF = YES PREDEFINED = APREQ_DECLARE(x)=x \ APREQ_DECLARE_NONSTD(x)=x TAGFILES = docs/apr.tag=http://apr.apache.org/docs/apr/1.3 \ docs/apu.tag=http://apr.apache.org/docs/apr-util/1.3 GENERATE_TAGFILE = docs/apreq2.tag ALLEXTERNALS = NO EXTERNAL_GROUPS = NO PERL_PATH = /home/issac/asf/perl510/bin/perl HIDE_UNDOC_RELATIONS = YES SEARCHENGINE = NO libapreq2-2.13/build/doxygen.conf.in0000644000076400017500000000412211473532340016343 0ustar issacissacPROJECT_NAME = "@PACKAGE@" PROJECT_NUMBER = "@VERSION@" OUTPUT_DIRECTORY = docs OUTPUT_LANGUAGE = English BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES TAB_SIZE = 8 ALIASES = "req=@arg The request handle" OPTIMIZE_OUTPUT_FOR_C = YES INTERNAL_DOCS = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" INPUT = . include module/apache module/apache2 FILE_PATTERNS = *.h *.dox CHANGES STATUS RECURSIVE = NO EXTRACT_STATIC = YES EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = apreq_config* apreq_private* EXAMPLE_PATH = . include EXAMPLE_PATTERNS = README INSTALL LICENSE NOTICE *.html *.man *.h IMAGE_PATH = SOURCE_BROWSER = NO ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = GENERATE_HTML = YES HTML_HEADER = build/dox.head HTML_FOOTER = build/dox.foot HTML_STYLESHEET = build/dox.css HTML_ALIGN_MEMBERS = YES GENERATE_LATEX = NO GENERATE_RTF = NO GENERATE_MAN = YES MAN_LINKS = NO GENERATE_XML = NO GENERATE_AUTOGEN_DEF = NO GENERATE_PERLMOD = NO ENABLE_PREPROCESSING = YES MACRO_EXPANSION = YES EXPAND_ONLY_PREDEF = YES PREDEFINED = APREQ_DECLARE(x)=x \ APREQ_DECLARE_NONSTD(x)=x TAGFILES = docs/apr.tag=http://apr.apache.org/docs/apr/@APR_DOC_VERSION@ \ docs/apu.tag=http://apr.apache.org/docs/apr-util/@APU_DOC_VERSION@ GENERATE_TAGFILE = docs/apreq2.tag ALLEXTERNALS = NO EXTERNAL_GROUPS = NO PERL_PATH = @PERL@ HIDE_UNDOC_RELATIONS = YES SEARCHENGINE = NO libapreq2-2.13/build/get-version.sh0000755000076400017500000000221411473532340016213 0ustar issacissac#!/bin/sh # # extract version numbers from a header file # # USAGE: get-version.sh CMD VERSION_HEADER PREFIX # where CMD is one of: all, major, libtool # where PREFIX is the prefix to {MAJOR|MINOR|PATCH}_VERSION defines # # get-version.sh all returns a dotted version number # get-version.sh major returns just the major version number # get-version.sh minor returns just the minor version number # get-version.sh patch returns just the match version number # if test $# != 3; then echo "USAGE: $0 CMD INCLUDEDIR PREFIX" echo " where CMD is one of: all, major, minor, patch" exit 1 fi major_sed="/#define.*$3_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p" minor_sed="/#define.*$3_MINOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p" patch_sed="/#define.*$3_PATCH_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p" major="`sed -n $major_sed $2`" minor="`sed -n $minor_sed $2`" patch="`sed -n $patch_sed $2`" if test "$1" = "all"; then echo ${major}.${minor}.${patch} elif test "$1" = "major"; then echo ${major} elif test "$1" = "minor"; then echo ${minor} elif test "$1" = "patch"; then echo ${patch} else echo "ERROR: unknown version CMD ($1)" exit 1 fi libapreq2-2.13/build/RELEASE0000644000076400017500000000741511473532340014425 0ustar issacissacInstructions for the apreq Release Manager (RM) FreeBSD/Solaris note: use gmake! 1. Create a realease branch: svn cp https://svn.apache.org/repos/asf/httpd/apreq/trunk \ https://svn.apache.org/repos/asf/httpd/apreq/branches/v2_12 2. On the BRANCH Edit STATUS, marking the release date /** @page STATUS 2.12 released on . Also add the release date to the top @section in CHANGES: /** @page CHANGES @section v2_12 Changes with libapreq2-2.12 (released ...). And #undef the APREQ_VERSION_IS_DEV macro definition in include/apreq_version.h: * This symbol will be #undef'd for releases. */ #undef APREQ_IS_DEV_VERSION % svn commit -m "2.12 release started" STATUS CHANGES include/apreq_version.h 3. On TRUNK: Update CHANGES and STATUS to reflect the start of a new develoment cycle, and run this to update the package version numbers throughout the tree: % build/update_version.pl 2.13 % svn commit -m "2.13 cycle" 4. Prep the package for CPAN by running: % make release This will generate a libapreq2-2.12.tar.gz candidate in the current directory. You should keep this source tree intact to tag the final release. 5. Test the generated file with % make release_test Make sure all perl tests pass. 6. Sign it via gpg: % gpg --detach-sign --armor libapreq2-2.12.tar.gz or pgp: % pgp -sba libapreq2-2.12.tar.gz 7. Upload the release candidate to people.apache.org/~username and post a candidate announcement to apreq-dev@. Also, it is strongly recommended that the RM crosspost the candidate announcement to the modperl@ list, to solicit feedback from a much larger audience. Subject: [RELEASE CANDIDATE] libapreq2 2.12 RC\d+ 8. Give the mailing list participants 48-72 hours to comment and vote on the candidate. If there is a "majority consensus" (three +1 and more +1s than -1s) among the httpd pmc members, the RM may proceed with the release. 9. Tag the Release -- from the BRANCH svn mv https://svn.apache.org/repos/asf/httpd/apreq/branches/v2_12 \ https://svn.apache.org/repos/asf/httpd/apreq/tags/v2_12 10. Upload (scp) the package and signature to www.apache.org for distribution: % scp libapreq2-2.12.tar.gz* \ $USER@people.apache.org:/www/www.apache.org/dist/httpd/libapreq/ Ask another developer to confirm the uploaded signature is ok. % gpg --verify libapreq2-2.12.tar.gz.asc % pgp libapreq2-2.12.tar.gz.asc Check that your public key is among those listed in the /www/www.apache.org/dist/httpd/KEYS file. If not, you need to commit the necessary change to KEYS the httpd-dist repos. Then update the website's copy using "cvs co KEYS" in the /www/www.apache.org/dist/httpd/ directory. 11. Verify or get soeone to Verify that you have CPAN karma. Note, discuss getting a group kind of like AMPL in mod_perl land. (Currently, joes@ and pgollucci@ are active and have karma) 12. Upload the package to CPAN. Doublecheck that the md5 checksum received from PAUSE is correct. 13. Wait ~12-24 hours for the ASF mirrors to pick up the new package, then update the apreq homepage to list the new release in the News section Be sure to update the libapreq2 documentation. For instructions on updating the httpd website, see build/WEBSITE. IMPORTANT: YOU MUST UPDATE download.html TO POINT AT THE NEW RELEASE PACKAGE! 14. Mail the announcement from your people.apache.org account by piping the "CPAN Upload" email acknowledgement (from PAUSE) through build/announcement.pl: % build/announcement.pl $USER@apache.org < CPAN_ack | ssh $USER@people.apache.org "sendmail -oi -t -odq" 15. Drink Beer! libapreq2-2.13/build/update_version.pl0000755000076400017500000000222711473532340017005 0ustar issacissac#!/usr/bin/perl # update_version.pl - update all package version strings for apreq use strict; use warnings FATAL => "all"; my $version = shift; # .pod # glue/perl/xsbuilder # "This manpage documents version (\d+.\S+)" use File::Find; my @pod; find(sub { push @pod, $File::Find::name if /\.pod$/ }, qw(glue/perl/xsbuilder)); my $substitution = "s/(?<=This manpage documents version )\\S+/$version/"; system "perl -i -ple '$substitution' @pod"; # .pm # glue/perl/lib/Apache2/* # our $VERSION = "[^"]+" my @pm; find(sub { push @pm, $File::Find::name if /\.pm$/ }, qw(glue/perl/lib/Apache2)); my $pattern = '(?<=our \$VERSION = ")([^"]+)(?=")'; system "perl -i -ple 's/$pattern/$version/' @pm"; # # configure.ac - my $pattern1 = "(?<=AC_INIT\\(Apache HTTP Server Request Library, )(\\S+)(?=,)"; my $pattern2 = "(?<=AM_INIT_AUTOMAKE\\(libapreq2, )(\\S+)(?=\\))"; system "perl -i -ple 's/$pattern1/$version/ or s/$pattern2/$version/' configure.ac"; # # win32/Configure.pl # my $VERSION = '[^']+' my $pattern3 = qr/my \$VERSION = "2.08"/; my $replace = "my \\\$VERSION = \"$version\""; system "perl -i -ple 's/$pattern3/$replace/' win32/Configure.pl"; libapreq2-2.13/build/version_check.pl0000644000076400017500000001567011473532340016603 0ustar issacissac# version_check.pl tool version use strict; use warnings 'FATAL'; use Getopt::Long qw/GetOptions/; GetOptions(\my %opts, "version=s"); my ($tool, $path) = @ARGV; $path = $tool unless defined $path; sub exe_version { scalar qx/$path -v/ } sub gnu_version { scalar qx/$path --version/ } sub xsb_version { eval { require ExtUtils::XSBuilder; }; $@ ? return '' : return $ExtUtils::XSBuilder::VERSION; } sub ti_version { eval { require Test::Inline; }; @$ ? return '' : return $Test::Inline::VERSION; } sub a_t_version { require Apache::Test; $Apache::Test::VERSION; } sub tm_version { require Test::More; $Test::More::VERSION; } sub mm_version { require ExtUtils::MakeMaker; $ExtUtils::MakeMaker::VERSION; } sub mp2_version { eval { require mod_perl2; $mod_perl::VERSION; }; } my %svn = ( libtool => { version => "1.4.3", test => \&gnu_version }, autoconf => { version => "2.53", test => \&gnu_version }, automake => { version => "1.6.1", test => \&gnu_version }, doxygen => { version => "1.2", test => \&gnu_version, broken_version => { '1.4.5' => 1 } }, perl => { version => "5.6.1", test => \&gnu_version }, "ExtUtils::XSBuilder" => { version => "0.23", test => \&xsb_version }, ); my %build = ( apache2 => { version => "2.0.48", test => \&exe_version }, apr => { version => "0.9.4", test => \&gnu_version, comment => "bundled with apache2 2.0.48" }, apu => { version => "0.9.4", test => \&gnu_version, comment => "bundled with apache2 2.0.48" }, perl => $svn{perl}, ); my %perl_glue = ( perl => $svn{perl}, "ExtUtils::XSBuilder" => $svn{"ExtUtils::XSBuilder"}, "Apache::Test" => { version => "1.04", test => \&a_t_version, comment => "Win32 requires version 1.06" }, # mp2 does not contain "_" in its reported version number mod_perl2 => { version => "1.999022",test => \&mp2_version }, "ExtUtils::MakeMaker" => { version => "6.15", test => \&mm_version }, "Test::More" => { version => "0.47", test => \&tm_version }, ); my %test = ( "Test::Inline" => { version => "0.16", test => \&ti_version }, ); sub print_prereqs ($$) { my ($preamble, $prereq) = @_; print $preamble, "\n"; for (sort keys %$prereq) { my ($version, $comment) = @{$prereq->{$_}}{qw/version comment/}; if ($opts{version}) { print " $_: $version\n"; } else { $comment = defined $comment ? " ($comment)" : ""; printf "%30s: %s%s\n", $_, $version, $comment; } } } sub perl_prereqs { my @prereqs = map {"$_=>q[$perl_glue{$_}->{version}]"} grep {$_ ne 'perl'} keys %perl_glue; my $prereq_string = ''; if (@prereqs) { $prereq_string = 'PREREQ_PM => { ' . (join ', ', @prereqs) . ' }'; } return $prereq_string; } sub print_dummy_versions { require File::Spec; my $version = shift; my @mods = qw(APR::Request); push @mods, (map {"APR::Request::$_"} qw(Apache2 CGI Error Cookie Param)), (map {"Apache2::$_"} qw(Request Cookie Upload)); my $dummy_versions = File::Spec->catfile(qw(glue perl lib APR), 'DummyVersions.pm'); my $len = 0; for (@mods) { $len = length $_ if length $_ > $len; } $len += length '$::VERSION'; my $warning = << 'WARN'; ********************** WARNING ************************ This file was generated by build/version_check.pl Any changes made here will be lost. ******************************************************* WARN $warning =~ s/^/\# /mg; open(my $fh, '>', $dummy_versions) or die "Cannot open $dummy_versions for writing: $!"; print $fh $warning; for my $mod (@mods) { printf $fh "\npackage %s;\n%-${len}s = %s;\n", $mod, '$'.$mod."::VERSION", $version; } print $fh "\n\n1;\n"; close $fh; } if ($path eq 'perl_prereqs') { print perl_prereqs(); exit; } if (@ARGV == 0) { if ($opts{version}) { # generate META.yml file content print < $perl_glue{mod_perl}, perl => $perl_glue{perl}, ); print_prereqs "requires:", \%runtime_prereqs; print_prereqs "build_requires:", \%perl_glue; print_dummy_versions($opts{version}); } else { # generate PREREQUISITES file content print "=" x 50, "\n"; print_prereqs "Build system (core C API) prerequisites\n", \%build; print "\n", "=" x 50, "\n"; print_prereqs "Perl glue (Apache2::Request) prerequisites\n", \%perl_glue; print "\n", "=" x 50, "\n"; print_prereqs "Additional prerequisites for apreq subversion builds\n", \%svn; } exit 0; } # test prerequisites from the command-line arguments my %prereq = (%svn, %build, %perl_glue, %test); die "$0 failed: unknown tool '$tool'.\n" unless $prereq{$tool}; my $version = $prereq{$tool}->{version}; $_ = $prereq{$tool}->{test}->(); die "$0 failed: no version_string found in '$_' for '$tool'.\n" unless /(\d[.\d]+)/; my $saw = $1; my $fail; if ($saw =~ /^(\d+)(\.(\d+))$/ and $version =~ /^(\d+)(\.(\d+))$/) { $fail = $saw < $version; } else { my @version = split /\./, $version; my @saw = split /\./, $saw; $_ = 0 for @saw[@saw .. $#version]; # ensure @saw has enough entries for (0.. $#version) { last if $version[$_] < $saw[$_]; $fail = 1, last if $version[$_] > $saw[$_]; } die "version $saw of $tool is broken" if exists $prereq{$tool}->{broken_version} && $prereq{$tool}->{broken_version}->{$saw}; } if ($fail) { die < 'all'; use File::Basename; use constant WIN32 => ($^O =~ /Win32/i); use Cwd; my $cwd = WIN32 ? Win32::GetLongPathName(cwd) : cwd; $cwd =~ m{^(.+)/glue/perl$} or die "Can't find base directory"; my $base_dir = $1; my $inc_dir = "$base_dir/include"; my $mod_dir = "$base_dir/module"; my $xs_dir = "$base_dir/glue/perl/xsbuilder"; sub slurp($$) { open my $file, $_[1] or die "Can't open $_[1]: $!"; read $file, $_[0], -s $file; } my %c_macro_cache = ( XS => sub {s/XS\s*\(([^)]+)\)/void $1()/g}, ); sub c_macro { return $c_macro_cache{"@_"} if exists $c_macro_cache{"@_"}; my ($name, $header) = @_; my $src; if (defined $header) { slurp local $_ => "$inc_dir/$header"; /^#define $name\s*\(([^)]+)\)\s+(.+?[^\\])$/ms or die "Can't find definition for '$name': $_"; my $def = $2; my @args = split /\s*,\s*/, $1; for (1..@args) { $def =~ s/\b$args[$_-1]\b/ \$$_ /g; } my $args = join ',' => ('([^,)]+)') x @args; $src = "sub { /^#define $name.+?[^\\\\]\$/gms + s{$name\\s*\\($args\\)}{$def}g}"; } else { $src = "sub { /^#define $name.+?[^\\\\]\$/gms + s{$name\\s*\\(([^)]+)\\)}{\$1}g}"; } return $c_macro_cache{"@_"} = eval $src; } package My::ParseSource; use constant WIN32 => ($^O =~ /Win32/i); my @dirs = ("$inc_dir", "$mod_dir/apache2/", "$base_dir/glue/perl/xsbuilder"); use base qw/ExtUtils::XSBuilder::ParseSource/; __PACKAGE__->run; system("touch $base_dir/glue/perl/xsbuilder") == 0 or die "touch $base_dir/glue/perl/xsbuilder failed: $!" unless WIN32; sub package {'APR::Request'} sub unwanted_includes {[qw/apreq_config.h apreq_private_apache2.h/]} # ParseSource.pm v 0.23 bug: line 214 should read # my @dirs = @{$self->include_dirs}; # for now, we override it here just to work around the bug sub find_includes { my $self = shift; return $self->{includes} if $self->{includes}; require File::Find; my(@dirs) = @{$self->include_dirs}; unless (-d $dirs[0]) { die "could not find include directory"; } # print "Will search @dirs for include files...\n" if ($verbose) ; my @includes; my $unwanted = join '|', @{$self -> unwanted_includes} ; for my $dir (@dirs) { File::Find::finddepth({ wanted => sub { return unless /\.h$/; return if ($unwanted && (/^($unwanted)/o)); my $dir = $File::Find::dir; push @includes, "$dir/$_"; }, follow => not WIN32, }, $dir); } return $self->{includes} = $self -> sort_includes (\@includes) ; } sub include_dirs {\@dirs} sub preprocess { # need to macro-expand APREQ_DECLARE et.al. so P::RD can DTRT with # ExtUtils::XSBuilder::C::grammar for ($_[1]) { ::c_macro("APREQ_DECLARE", "apreq.h")->(); ::c_macro("APREQ_DECLARE_HOOK", "apreq_parser.h")->(); ::c_macro("APREQ_DECLARE_PARSER", "apreq_parser.h")->(); ::c_macro("APR_DECLARE")->(); ::c_macro("XS")-> (); s/APR_INLINE//g; s/static//g; } } 1; libapreq2-2.13/buildconf0000755000076400017500000000531411473532340014212 0ustar issacissac#!/bin/sh # # 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. # # # buildconf: Build the support scripts needed to compile from a # checked-out version of the source code. perl="${PERL:-perl}" libtool="${LIBTOOL:-libtool}" aclocal="${ACLOCAL:-aclocal}" automake="${AUTOMAKE:-automake}" autoconf="${AUTOCONF:-autoconf}" autoheader="${AUTOHEADER:-autoheader}" save_args="$*"; while test $# -gt 0 do # Normalize case "$1" in -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac case "$1" in --with-perl=*) perl=$optarg ;; --with-libtool=*) libtool=$optarg ;; --with-aclocal=*) aclocal=$optarg ;; --with-automake=*) automake=$optarg ;; --with-autoconf=*) autoconf=$optarg ;; --with-autoheader=*) autoheader=$optarg ;; esac shift done libtoolize="${libtool}ize --automake --copy --force" echo "removing stale config files" touch .deps rm -f aclocal.m4 rm -f generated_lists rm -rf autom4te*.cache echo "checking buildconf prereqs"; $perl build/version_check.pl libtool $libtool || exit 1 $perl build/version_check.pl autoconf $autoconf || exit 1 $perl build/version_check.pl automake $automake || exit 1 $perl build/version_check.pl ExtUtils::XSBuilder || exit 1 #$perl build/version_check.pl Test::Inline || exit 1 PREREQ_PM=`$perl build/version_check.pl perl_prereqs` echo "running $libtoolize" && $libtoolize && \ echo "running $aclocal" && $aclocal && \ echo "running $autoconf" && $autoconf && \ echo "running $autoheader" && $autoheader && \ echo "running $automake -a -c" && $automake -a -c && \ echo "running xsbuilder" && (cd glue/perl && $perl ../../build/xsbuilder.pl) && \ echo "running cpan prereq fixups" && $perl -i -wpe "s/PREREQ_PM/$PREREQ_PM/" Makefile.in && \ echo "saving arguments for reuse." && cat >buildconf.nice <cookies() to comply with its documentation - C API [Philip M. Gollucci] Use the APREQ_DEFAULT_READ_LIMIT constant for the read_limit - C API [Ville Skyttä, Dirk Nehring] Add explicit cast in apreq_escape()/apreq_util.h to keep C++ compilers happy. - C API [joes] Protect against arbitrary recursion depth in apreq_parse_multipart() by adding a reasonable compile-time MAX_LEVEL limit. - C API [joes] Clean up end-of-file parsing for apreq_parse_multipart(), conforming to rfc-2046 § 5.1.1. - Perl API [joes] Move APR::Request::Param::Table and APR::Request::Cookie::Table packages to APR::Request module. - Perl XS [Steve Hay] Fix compile problems on Win32 without PERL_IMPLICIT_SYS related to link being an unresolved symbol. - Perl API [joes] APR::Request::Cookie::thaw() isn't a class method. - C API [joes] Fix off-by-one bug in the continuation-lines portion of the header parser. - Perl API [joes] Move APR::Request::upload to APR::Request, where it belongs. - Perl XS [Nikolay Ananiev] Use MP_STATIC declarations to allow Cygwin builds. - Perl API [joes] encode()/decode() were busted with zero-length args. This caused Apache2::Cookie::new() to segfault on cookie value of "". - C API [joes] Add apreq_charset_divine() and eliminate charset offset from return value of apreq_decode(v). - C API [joes] Improve the cp1252-charset heuristics for apreq_decode(v). - C API [Ralph Mattes] Add explicit casts for apreq_param_charset_* to keep c++ compilers happy. @section v2_06_dev Changes with libapreq2-2.06-dev (released July 20, 2005) - C API [Marc Gràcia, joes] Fix apreq_decode(v) when iso-latin-1 chars appear at the end of an encoded string. - Perl API [Philip M. Gollucci] Fix "Attempt to free temp prematurely" error in apreq_xs_croak(). - C API [Philip M. Gollucci] Add mod_apreq2 to httpd's server tokens. - Perl API [joes] Drop support for $req->env(), which also died with 2.05-dev. - Perl API [joes] Support for table set/add/delete methods is formally withdrawn. Technically this feature died with the module API refactoring in 2.05-dev. - C API [max] Right-hand limit of apreq_brigade_move() is declared as "excluding", but APR_RING_UNSPLICE() wants an "including" right-hand limit. Fixed this by passing the previous bucket. - Perl API [joes] Drop support for Apache2::Request::new's HOOK_DATA. UPLOAD_HOOK now takes only two arguments: ($upload, $data). - Perl API [joes] Drop support for Apache2::Cookie::Jar::new's VALUE_CLASS. 2.05-dev broke that API, and it's not worth trying to fix. People who need that should use APR::Request::Cookie::Table's cookie_class() API instead. - Perl API [joes] Fix cookie domain/path munging in Apache2::Cookie::new(). @section v2_05_dev Changes with libapreq2-2.05-dev (released May 5, 2005) - Win32 build [Randy Kobes] Have top-level 'nmake', 'nmake test', and 'nmake install' targets, respectively, also include building, testing, and installing the corresponding perl glue targets. - C API [geoff] Minimum httpd version is now 2.0.48, which includes the official apr 0.9.4 release. - C API [Max Kellermann] Fix apreq_quote. - Perl API [joes] Remove Apache2::Request::args. WARNING: through inheritance, args() now maps to Apache2::RequestRec::args. Folks that want the pre-2.05-dev behavior need to invoke APR::Request::args by name. - C API [joes, Max Kellermann] Add apreq_initialize, apreq_pre_initialize and apreq_post_initialize. These are not thread-safe operations, so applications need to ensure they are invoked (in the correct sequence) prior to using any apreq2 modules. - C, Perl API [joes] Add pool, bucket_alloc to apreq_handle_t. - Perl API [joes] Drop $data argument from UPLOAD_HOOK, and also drop HOOK_DATA option. Perl folks should use a closure instead of passing in context data. - Perl API [joes] Move bake, bake2 to Apache2::Cookie, now requiring an extra $r argument. Also ""-operator is mapped to as_string() for Apache2::Cookie; but APR::Request::Cookie maps it to value(). - C API [joes] Remove header_in & header_out from apreq_module_t. Remove apreq_ua_cookie_version() and apreq_cookie_bake*(). Remove cookie2 argument to apreq_handle_custom(). - C API [joes] s/APREQ/APREQ2/g in webserver configuration directives. - C API [Igor Shevchenko, Philip Gollucci] Fix segfault in mfd parser caused by parts w/ empty param names. - C API [joes] Add apreq_cp1252_to_utf8(). - C, Perl API [joes] Add charset support for params and couple the SvUTF8 flag to the param's taint flag. - C API [joes] Replace v->size with v->nlen + v->dlen. Added supporting apreq_value_table_add(). - C API [joes] Remove apreq_cookie_attr(). - C API [joes] - Add apreq_error.h, apreq_module.h. - Rename apreq_run* and apreq_make* funcs to conform with apreq_$obj_$meth scheme. - Replace c->version & c->secure with flags. - Parsers are assumed to be working with external data, so the cookies & params they produce are marked tainted. - C API [joes] apreq_parse_cookie_header() failed to parse RFC Cookie headers which contained no space chars after the '$Version=1' preamble. - C API [joes] Reorganize around include/, library/, and module/ dirs. - C Tests [joes] Replace CuTest-based tests with custom TAP-compliant framework. - C API [Max Kellermann] Continue the API improvements: - Convert APREQ_RUN_PARSER and APREQ_RUN_HOOK to inline, and downcase them. - Remove apreq_memmem. - Convert apreq_(un)escape to inline. - apreq_escape does not create an apreq_value_t*. - Initialize default_parsers explicitly to NULL. - Convert APREQ_BRIGADE_COPY to inline, and downcase it. - Lowercase APREQ_BRIGADE_SETASIDE, APREQ_BRIGADE_COPY. - Convert apreq_cookie_name and apreq_cookie_value macros to inline. - Convert apreq_param_name, apreq_param_value, apreq_param_info, and apreq_param_brigade to inline. - C API [joes] Widespread API refactorization to remove apreq_jar_t and apreq_request_t: - Header includes reorganized; apreq_parsers.h added (back again). - Replaced apreq_jar_t and apreq_request_t with single apreq_env_handle_t. - Added const qualifier to "v" attribute of apreq_cookie_t and apreq_param_t. - Use union type-puns to drop const qualifiers inside the new apreq_value_to_cookie and apreq_value_to_param implementations (gcc generates same object code as the macro versions did). - Moved "flags" attribute from apreq_value_t to apreq_cookie_t and apreq_param_t. - Remove env argument from hooks and parsers. - Reduce apreq_env_module to minimal set of operations. - Replace apreq_log calls with apreq-specific error codes. - Hooks are called on each body param now, not just during file uploads. - Tie the cgi handle to its creator pool. Detailed changes by header file: [apreq.h] - Remove flags from apreq_value_t. - Remove const qualifier from apreq_value_t's "name" attribute. - Remove apreq_value_merge* and apreq_value_copy*. - Remove apreq_char_to_value, apreq_strtoval, and apreq_strlen. - Move apreq_enctype to apreq_env.h. - Move apreq_env_handle_t struct definition to apreq_env.h - Change signature of apreq_decode. - Move apreq_brigade_concat here, changed its signature and improved it alot. - Remove apreq_brigade_spoolfile. - Dropped APREQ_*_ENCTYPE, renamed some APREQ_$foo defaults APREQ_DEFAULT_$foo. - Added APREQ_ERROR_*. [apreq_cookie.h] - Remove apreq_env.h include. - Remove apreq_jar_t. - Add "flags" to apreq_cookie_t, add const qualifier to its "v" attr. - Remove apreq_jar* functions. - Add apreq_parse_cookie_header. - Move apreq_cookie, apreq_cookie_bake(2), and apreq_ua_cookie_version to apreq_env.h. [apreq_params.h] - Remove apreq_env.h include. - Remove apreq_request_t. - Add "flags" to apreq_param_t, and const qualifier to its "v" attr. - Rename "bb" attribute "upload" in apreq_param_t. - Remove apreq_request* functions. - Remove apreq_parse_request. - Changed apreq_decode_param signature. - Replace env argument with apr_table_t in apreq_params_as_array, apreq_params_as_string, - Move remaining apreq_param* to apreq_env.h. - Move parser and hook sections to apreq_parsers.h. - Change apreq_upload(s) old apreq_request_t arg to apr_table_t. [apreq_parsers.h] - Acquire the hook and parser sections of original apreq_params.h. - Remove env argument from APREQ_PARSER_ARGS and APREQ_HOOK_ARGS - Augment apreq_hook_t and apreq_parser_t to replace missing env features. - Change apreq_make_parser and apreq_make_hook signatures. - Rename apreq_add_hook to apreq_parser_add_hook, returning apr_status_t. - Change apreq_parser signature. [apreq_env.h] - Remove read, log, pool, bucket_alloc, request, jar, and query_string methods. - Include apreq_parsers.h. - Reorganize apreq_env_module_t to provide hook, parser, jar, args, & body table ops. - Rename max_brigade to "brigade_limit", max_body to "read_limit". - Change related module sigs, including temp_dir, to get/set methods. - Add parser and read_limit args to apreq_env_make_custom_handle. - Drop "name" arg and APREQ_ENV_MODULE =~ s/_ENV//. - s/apreq_env_make/apreq_handle/ in the handle constructor names. [mod_apreq.c, apreq_env_apache2.h] - Changed APREQ_Max* configs to APREQ_BrigadeLimit and APREQ_ReadLimit. - Handle constructor renamed apreq_handle_apache2. - C API [joes] Make our "libtool current interface" number depend on apr's major number. This allows libapreq2 to be installed into a system-wide location while avoiding ABI conflicts arising from our apr-based interfaces. - C API [Max Kellermann] Introduce apreq_env_handle_t to replace the void *env usage. Also added apreq_env_custom for making private handles, and new apreq_env_apache2.h to let mod_apreq export apreq_env_make_apache2. - C API [Max Kellermann] Rename apreq_env_t to apreq_env_module_t, to prepare for a new thread-safe apreq_env API. - C API [Max Kellermann] mod_apreq must check the return value of apreq_brigade_concat to avoid a RAM-consuming infinite loop. A bad APREQ_TempDir setting can cause this situation. - C API [joes] Provide workaround for chunked trailers bug in ap_http_filter. - C, Perl API [joes] Several upload-related bugfixes: 1) apreq_upload and apreq_uploads did not search the full body table, 2) $upload->slurp and $io->read did not autovivify the resultant string. - C API [joes] Add "flags" attribute to apreq_value_t, planning for charset support. This is an ABI change, starting with libapreq2.so.2.0.24. - C API [joes] Add apreq_env_bucket_alloc() to get an allocator directly from the environment instead of creating them from a pool. This is an ABI change, starting with libapreq2.so.2.0.23. - Build system [joes] Add --with-apache2-httpd option so users can override apxs's notion of where the httpd executable is. XSBuilder's header parser runs from buildconf now instead of configure, so we will include those tables in the release tarball. buildconf gets an additional --with-perl option for running the xsbuilder.pl parsing script. The XS generation code in xsbuilder.pl has moved to glue/perl/Makefile.PL. - Perl API [joes] Allow ctors for Apache::Cookie, Apache::Cookie::Jar and Apache:::Request to accept Apache::Request objects (instead of requiring an Apache::RequestRec object). This thread details the bug http://thread.gmane.org/gmane.comp.apache.mod-perl/15727 - C API [Bojan Smojver] Bake cookies with err_headers_out so they are sent on non-2xx server responses (ie. a 304 redirect). Also ensure that headers are copied with apr_table_add instead of apr_table_addn. Since apreq_cookie_bake() allocates from the stack, the Set-Cookie headers would occasionally get mangled without this patch. - C API [joes] Add apreq_register_parser(), which allows users to add their own parsers to apreq_parser()'s recognized MIME types. - C API [joes] Support "multipart/mixed" file uploads. Support XForms' "multipart/related" enctype. - C API [joes] Add apreq_hook_apr_xml_parser(), which is a simple wrapper hook around APR's expat-based apr_xml_parser. Add a generic parser apreq_parse_generic() to parse arbitrary enctypes using the hook API. @section v2_04_dev Changes with libapreq2-2.04-dev (released August 30, 2004) - Perl API [joes] Add TAINT checks, marking all parsed data as tainted. - C API [joes] Add body_status attribute to apreq_request_t, to allow the both environment and the parser to report any errors encountered. - C API [randyk, joes] Cookie parser was locking up on non-alphanumeric chars in cookie names. Also RFC Cookie attributes are always checked for quotes during bake(2), and the quotes are now stripped from incoming RFC cookies during parsing (but they are never stripped from the actual cookie value). - Perl API [joes] Apache::Cookie::Jar->new accepts a VALUE_CLASS argument, which effectively blesses all the jar's cookies into that class, which simplifies subclassing Apache::Cookie. Accordingly Apache::Cookie->freeze($value) no longer accepts a freeze()-able object in $value. - C API [Markus Wichitill, randyk, joes] Drop APR_DELONCLOSE from apreq_file_mktemp implementation and install apreq_file_cleanup. When passed to apr_file_open on Win32, APR_DELONCLOSE sets the FILE_SHARED_DELETE flag, which is, unfortunately, a property that is preserved across NTFS "hard" links. This breaks apps that link() the temp file to a permanent location, and subsequently expect to open it without FILE_SHARED_DELETE before the original tempfile is closed+deleted. In fact, even Apache::Upload does this, so it is a common enough event that the apreq_file_cleanup workaround is necessary. - C API [Ken Burcham, joes] Fix bug in url parser that occurs when a %XX-encoded sequence is split across multiple buckets. Added apreq_decode_decodev to make this problem less inconvenient. - Perl API [joes] Exception objects inherit from the object which raised it, which allows $@ to invoke its methods with impunity (exceptions are disabled for objects which derive from an exception class). - Perl API [joes] Implement HOOK_DATA and UPLOAD_HOOK. - Perl API [joes] Add safe XS wrappers for $table->add, $table->set, $table->STORE, and $table_class->new. - Perl API [joes] Add exceptions to $upload->link, $upload->tempname, $upload->slurp, and $cookie->set_attr. Return value of $upload->slurp is now the upload length. Also document new $upload->io. - C API [joes] Restrict all apr_status_t codes to APR_SUCCESS, APR_INCOMPLETE, APR_EGENERAL, APR_EINIT, APR_ENOTIMPL, since any others will generate confusing error messages from apr_strerror. - Perl API [joes] Added $upload->io with a TIEHANDLE API layered over APR::Brigade. $upload->fh remains implemented as an APR::PerlIO object, which is seekable but less efficient and currently suffers some portability issues associated with largefile support in perl and apr. - Perl API [joes] Added apreq_xs_croak for throwing APR::Error exceptions and included error-checking on $req->param, $req->args, $req->body, $req->upload, and $jar->get. - Perl API [joes] Added $jar->status, $req->args_status and $req->body_status to report parsing errors. Also add $upload->tempname per user request. - C API [joes] Dropped status attribute of apreq_value_t. Added status field to apreq_jar_t and added args_status field to apreq_request_t. Parsers also must return their public status code when a NULL brigade is passed. apreq_hook_disable_uploads() is also added. This is an ABI change affecting all versions of libapreq2 prior to 2.0.12. - Perl API [joes] $upload->info returns a proper APR::Table object now. Also implemented $upload->size, $upload->fh, and $upload->type. - C API [Jean-François Meesse] mfd parser fails to parse CRLF-terminated files when the terminating boundary string is at the start of a new bucket. This is reportedly a common event for PDF files uploaded with Netscape 7. - Perl API [joes] Add back-compat support for Apache::Cookie->fetch() via Apache->request. - C API [joes] Add MaxBody, MaxBrigade, and TempDir per-dir directives to mod_apreq filter. - C API [joes] Replace free/tempnam dependency in apreq_file_mktemp() with apr_temp_dir_get(). Add additional gcc warning flags when --enable-maintainer-mode is set. - C API [joes, Scott Hutton] Replace apreq_brigade_copy with more effective APREQ_BRIGADE_COPY macro. Also introduce APREQ_BRIGADE_SETASIDE to deal with buckets that need to be set aside for use in future function calls. mod_ssl generates transient buckets which tickled this bug. - Perl API [joes] Separate Apache::Upload module from Apache::Request for better organization. @section v2_03_dev Changes with libapreq2-2.03-dev (released June 12, 2004) - C API [joes] "Objectify" cookie/jar API: s/apreq_(make|serialize)_cookie/apreq_cookie_$1/ and reordering args so the cookie/jar object is always the first argument. Macros added to provide source-compatibility with the old names. - Perl API [joes] Added $upload->slurp($data), which reads the contents of the file upload "$upload" into the scalar "$data". - C API [joes, randyk] apreq_run_(hook|parser) are macros, so they are capitalized now. Fixed apreq_params_as_string() and added apreq_params_as_array(). Reworked definitions of APREQ_DECLARE_HOOK, APREQ_DECLARE_PARSER and apreq_(parser|hook)_t, hopefully to be more Win32 friendly. Also updated the documentation. - C API [joes] Compensate for a missing CRLF in empty file upload block, which actually complies with RFC 2046 Section 5.1.1. Konqueror (version unknown) and Mozilla 0.9.7 are known to emit such blocks. - Perl API [joes] $req->upload() in list context failed to filter out non-uploads. Also $req->upload("nonexistent-key-name") segfaults. - Perl test suite t/TEST.PL must run parent class' pre_configure to get the configuration right - C API [joes] apreq_brigade_concat() wasn't supplying the final EOS bucket to large brigades (>256K), which somtimes caused the prefetch loop in mod_apreq.c's apreq_filter() to hang. - Documentation [joes] CHANGES file reformatted, removing dates & other clutter as Stas suggests. - C API [joes] Rewrote cgi_read() in apreq_env.c and reworked mod_apreq.c to enforce apreq_env_max_body() settings. - C API [joes] Fixed bug in url_parser code- missing context brigade was needed to track key-value pairs which span multiple buckets. - C API [joes] API modifications: removed struct apreq_cfg_t, adding new apreq_env hooks max_body, max_brigade_len, and temp_dir. Folded apreq_parsers.h into apreq_params.h and modified the arguments to apreq_run_parser() and apreq_run_hook(). Renamed apreq_parser_t's content_type as enctype and apreq_copy_brigade() as apreq_brigade_copy(). These changes make libapreq2.so.2.0.5 incompatible with earlier versions. - Perl API [stas] Include ppport.h from blead-perl to support older perls. Add a proper support for ithreads. - C API [Swen Schillig, joes] Fixed bug in calculation of Netscape cookie expiration dates. apr_time_t is measured in microseconds, not seconds, which threw off the arithmetic; apr_time_from_sec was needed for the conversion. - C API [Max Kellermann] Fix segfault caused by invalid %-escape sequence in query string. @section v2_02_dev Changes with libapreq2-2.02-dev (released Nov 15, 2003) - Perl API [joes] Fix bogus pool/cookie initializers in Apache::Cookie::set_attr(), which caused Apache::Cookie::new to segfault. Bug first reported to modperl list by Wolfgang Kubens. @section v2_01_dev Changes with libapreq2-2.01-dev (released Nov 10, 2003) - build system [joes] Skip Apache::Test tests in env/ when Apache::Test is unavailable. This allows the C API to be build and installed without requiring Apache::Test (it is still a requirement for compiling the perl glue). - C API mod_apreq.c [joes] Parser errors were creeping into the return value of apreq_filter, which breaks the "transparent tee" paradigm. This caused bogus "400 Bad Request" responses (first reported by Vladimir Dudo) to occur when libapreq2 was used by an output filter during a GET request (handled by apache2's default handler). The test suite has been updated accordingly. - C API [joes] Incorporate libapreq_cgi into libapreq2 as the default environment, and add apreq_env_t and initializer apreq_env_module() to manage the environment at runtime (determining the environment at load-time was problematic on non-ELF systems). @section v2_0_0 Changes with libapreq2-2.00-dev (Oct 25, 2003) - C API: libapreq_cgi.c [randyk, joes] CGI environment defined by env/libapreq_cgi.c is functional (with tests added to env/t). This library may soon be incorporated directly into libapreq2 as a default enviroment. - C API: mod_apreq.c [joes] Added ctx->saw_eos to ensure we don't read from upstream filters after receiving an eos bucket. Otherwise it was possible for two eos buckets to appear when a prefetch read is involved, which breaks other modules like mod_proxy. This bug was uncovered by Philippe Chiasson. mod_apreq's apreq_env_majic_number bumped to reflect the added fixes. - configure: --enable-perl-glue [joes] The --enable-perl-glue option integrates the perl glue into the normal Unix build cycle. It is disabled by default, but is silently reenabled if the user configures the source tree via Makefile.PL. - C API [joes] Added apreq_header_attribute() and fixed mfd parser to allow "charset" attribute to appear in the Content-Type header. Sven Geisler points out that Opera 7.20 does generate such headers. - C API [joes] Added versioning API following http://apr.apache.org/versioning.html apreq_env renamed apreq_env_name, and apreq_env_magic_number added to provide versioning for environments (modules). The header files are now installed to "include/apreq2", and the library is renamed "libapreq2". Also added an apreq2-config script based on apu-config. - configure: static mod_apreq.c [Bojan Smojver, joes] Add --with-apache2-src configure option, along with --with-apr-config and --with-apu-config, and provide support for compiling mod_apreq into httpd as a static apache module. - C API: mod_apreq.c [joes] Support for internal redirects added to the mod_apreq filter. This ensures any POST data prefetched in the main request gets passed along to the subrequest handler(s). - C bugfix: apreq_decode [Graham Clark] If the source and destination strings are represented by the same pointer - e.g. if called as apreq_unescape(s) - string s is modified incorrectly in general. Patch includes new unit test. - Perl API [joes] Added $req->parse, $req->status, & "preparse" logic to $req->param & $req->upload. - C API [joes] Added "preparse" logic to apreq_params & apreq_uploads to bring behavior in line with libapreq-1.x. - C API [joes] Dropped param->charset. Make apreq_brigade_concat public, so mod_apreq can use it for its ctx->spool brigade. - Documentation [joes] Updated Cookie_pod to reflect API changes over v1.X. - Documentation [joes] Added doxygen links to Apache::Request and Apache::Cookie perl docs. - C API [joes] Added apreq_copy_brigade(bb) to apreq.h. - C API [joes] The new filter-based design required a complete departure from libapreq-1.X codebase. libapreq-2 is based solely on APR, and to be fully functional, requires a supporting environment similar to Apache-2. A person wishing to port libapreq-2 to a new environment needs to provide definitions for the declarations in apreq_env.h. - Perl API [joes] Aggregates are always collected into an APR::Table-based package. New table packages: Apache::Cookie::Table, Apache::Request::Table, and Apache::Upload::Table. - Perl API [joes] Apache::Cookie->fetch now requires an "environment" argument ($r). Its return value is blessed into the Apache::Cookie::Jar class. - Perl API [joes] Two new request lookup functions: -# $req->args - param lookup using only the query string -# $req->body - param lookup using only the POST data **/ libapreq2-2.13/config.guess0000755000076400017500000012753410756112266014654 0ustar issacissac#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. timestamp='2008-01-23' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:[3456]*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; EM64T | authenticamd) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else echo ${UNAME_MACHINE}-unknown-linux-gnueabi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^LIBC/{ s: ::g p }'`" test x"${LIBC}" != x && { echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit } test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: libapreq2-2.13/config.sub0000755000076400017500000010115310756112266014304 0ustar issacissac#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. timestamp='2008-01-16' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64vr | mips64vrel \ | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | score \ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64vr-* | mips64vrel-* \ | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; c90) basic_machine=c90-cray os=-unicos ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tile*) basic_machine=tile-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: libapreq2-2.13/configure0000755000076400017500000260772511473533245014253 0ustar issacissac#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for Apache HTTP Server Request Library 2.13. # # Report bugs to . # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) as_nl=' ' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH if test "x$CONFIG_SHELL" = x; then if (eval ":") 2>/dev/null; then as_have_required=yes else as_have_required=no fi if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=\$LINENO as_lineno_2=\$LINENO test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ") 2> /dev/null; then : else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. case $as_dir in /*) for as_base in sh bash ksh sh5; do as_candidate_shells="$as_candidate_shells $as_dir/$as_base" done;; esac done IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : (as_func_return () { (exit $1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = "$1" ); then : else exitcode=1 echo positional parameters were not saved. fi test $exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } _ASEOF }; then break fi fi done if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test $as_have_required = no; then echo This script requires a shell more modern than all the echo shells that I found on your system. Please install a echo modern shell, or manually run the script under such a echo shell if you do have one. { (exit 1); exit 1; } fi fi fi (eval "as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0") || { echo No shell found that supports shell functions. echo Please tell autoconf@gnu.org about your system, echo including any error possibly output before this echo message } as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac echo=${ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1 && unset CDPATH if test -z "$ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if (echo_test_string=`eval $cmd`) 2>/dev/null && echo_test_string=`eval $cmd` && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi tagnames=${tagnames+${tagnames},}CXX tagnames=${tagnames+${tagnames},}F77 exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='Apache HTTP Server Request Library' PACKAGE_TARNAME='libapreq2' PACKAGE_VERSION='2.13' PACKAGE_STRING='Apache HTTP Server Request Library 2.13' PACKAGE_BUGREPORT='apreq-dev@httpd.apache.org' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datarootdir datadir sysconfdir sharedstatedir localstatedir includedir oldincludedir docdir infodir htmldir dvidir pdfdir psdir libdir localedir mandir DEFS ECHO_C ECHO_N ECHO_T LIBS build_alias host_alias target_alias INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA am__isrc CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os SED GREP EGREP LN_S ECHO AR RANLIB DSYMUTIL NMEDIT CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT ENABLE_PROFILE_TRUE ENABLE_PROFILE_FALSE BUILD_PERL_GLUE_TRUE BUILD_PERL_GLUE_FALSE HAVE_APACHE_TEST_TRUE HAVE_APACHE_TEST_FALSE BUILD_HTTPD_TRUE BUILD_HTTPD_FALSE BUILD_APR_TRUE BUILD_APR_FALSE BUILD_APU_TRUE BUILD_APU_FALSE HAVE_APACHE1_TRUE HAVE_APACHE1_FALSE APREQ_CONFIG APREQ_LIBNAME APREQ_LIBTOOL_VERSION APREQ_MAJOR_VERSION APREQ_DOTTED_VERSION APACHE2_APXS APACHE2_SRC APACHE2_INCLUDES APACHE2_HTTPD APACHE1_APXS APU_CONFIG APR_CONFIG APR_INCLUDES APR_LDFLAGS APR_LTFLAGS APR_LIBS APR_LA APU_LA PERL PERL_OPTS MM_OPTS TAR APR_DOC_VERSION APU_DOC_VERSION LIBOBJS LTLIBOBJS' ac_subst_files='' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP CXX CXXFLAGS CCC CXXCPP F77 FFLAGS' # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` eval enable_$ac_feature=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` eval enable_$ac_feature=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/[-.]/_/g'` eval with_$ac_package=\$ac_optarg ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/[-.]/_/g'` eval with_$ac_package=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute directory names. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || { echo "$as_me: error: Working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$0" || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures Apache HTTP Server Request Library 2.13 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/libapreq2] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of Apache HTTP Server Request Library 2.13:";; esac cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-profile compile libapreq2 with "-pg -fprofile-arcs -ftest-coverage" for gcov/gprof --enable-perl-glue build perl modules Apache::Request and Apache::Cookie Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-pic try to use only PIC/non-PIC objects [default=use both] --with-tags[=TAGS] include additional configurations [automatic] --with-perl path to perl executable --with-apache2-apxs path to apache2's apxs --with-apache2-src path to httpd source --with-apache2-httpd path to httpd binary --with-apr-config path to apr-*-config script --with-apu-config path to apu-*-config script --with-apache1-apxs path to apache1's apxs --with-perl-opts extra PERL options --with-mm-opts extra ExtUtils::MakeMaker options --with-expat specify expat location Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor F77 Fortran 77 compiler command FFLAGS Fortran 77 compiler flags Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF Apache HTTP Server Request Library configure 2.13 generated by GNU Autoconf 2.61 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by Apache HTTP Server Request Library $as_me 2.13, which was generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------------- ## ## File substitutions. ## ## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo cat confdefs.h echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then set x "$CONFIG_SITE" elif test "x$prefix" != xNONE; then set x "$prefix/share/config.site" "$prefix/etc/config.site" else set x "$ac_default_prefix/share/config.site" \ "$ac_default_prefix/etc/config.site" fi shift for ac_site_file do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu rm -f config.nice cat >config.nice<> config.nice fi if test -n "$CFLAGS"; then echo "CFLAGS=\"$CFLAGS\"; export CFLAGS" >> config.nice fi if test -n "$CPPFLAGS"; then echo "CPPFLAGS=\"$CPPFLAGS\"; export CPPFLAGS" >> config.nice fi if test -n "$LDFLAGS"; then echo "LDFLAGS=\"$LDFLAGS\"; export LDFLAGS" >> config.nice fi if test -n "$LTFLAGS"; then echo "LTFLAGS=\"$LTFLAGS\"; export LTFLAGS" >> config.nice fi if test -n "$LIBS"; then echo "LIBS=\"$LIBS\"; export LIBS" >> config.nice fi if test -n "$INCLUDES"; then echo "INCLUDES=\"$INCLUDES\"; export INCLUDES" >> config.nice fi if test -n "$NOTEST_CFLAGS"; then echo "NOTEST_CFLAGS=\"$NOTEST_CFLAGS\"; export NOTEST_CFLAGS" >> config.nice fi if test -n "$NOTEST_CPPFLAGS"; then echo "NOTEST_CPPFLAGS=\"$NOTEST_CPPFLAGS\"; export NOTEST_CPPFLAGS" >> config.nice fi if test -n "$NOTEST_LDFLAGS"; then echo "NOTEST_LDFLAGS=\"$NOTEST_LDFLAGS\"; export NOTEST_LDFLAGS" >> config.nice fi if test -n "$NOTEST_LIBS"; then echo "NOTEST_LIBS=\"$NOTEST_LIBS\"; export NOTEST_LIBS" >> config.nice fi echo $0 $ac_configure_args '"$@"' >> config.nice chmod +x config.nice am__api_version='1.10' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} { (exit 1); exit 1; }; } fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. { echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done IFS=$as_save_IFS fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { echo "$as_me:$LINENO: checking whether build environment is sane" >&5 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. echo might interpret backslashes. # By default was `s,x,x', remove it if useless. cat <<\_ACEOF >conftest.sed s/[\\$]/&&/g;s/;s,x,x,$// _ACEOF program_transform_name=`echo $program_transform_name | sed -f conftest.sed` rm -f conftest.sed # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi { echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } if test -z "$MKDIR_P"; then if test "${ac_cv_path_mkdir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi { echo "$as_me:$LINENO: result: $MKDIR_P" >&5 echo "${ECHO_T}$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { echo "$as_me:$LINENO: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$AWK" && break done { echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } SET_MAKE= else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE=libapreq2 VERSION=2.13 cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' { echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } SET_MAKE= else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO: checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # # List of possible output files, starting from the most likely. # The algorithm is not robust to junk in `.', hence go to wildcards (a.*) # only as a last resort. b.out is created by i960 compilers. ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' # # The IRIX 6 linker writes into existing files which may not be # executable, retaining their permissions. Remove them first so a # subsequent execution test works. ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { (ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi { echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6; } if test -z "$ac_file"; then echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } { echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6; } { echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext { echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6; } ;; xno) { echo "$as_me:$LINENO: result: unsupported" >&5 echo "${ECHO_T}unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi { echo "$as_me:$LINENO: result: $_am_result" >&5 echo "${ECHO_T}$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } { echo "$as_me:$LINENO: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6; } if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi { echo "$as_me:$LINENO: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 echo "$as_me: error: invalid value of canonical build" >&2;} { (exit 1); exit 1; }; };; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { echo "$as_me:$LINENO: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6; } if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { echo "$as_me:$LINENO: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 echo "$as_me: error: invalid value of canonical host" >&2;} { (exit 1); exit 1; }; };; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; } if test "${lt_cv_path_SED+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$lt_ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$lt_ac_prog$ac_exec_ext"; }; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done fi SED=$lt_cv_path_SED { echo "$as_me:$LINENO: result: $SED" >&5 echo "${ECHO_T}$SED" >&6; } { echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } if test "${ac_cv_path_GREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Extract the first word of "grep ggrep" to use in msg output if test -z "$GREP"; then set dummy grep ggrep; ac_prog_name=$2 if test "${ac_cv_path_GREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS fi GREP="$ac_cv_path_GREP" if test -z "$GREP"; then { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_GREP=$GREP fi fi { echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 echo "${ECHO_T}$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } if test "${ac_cv_path_EGREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else # Extract the first word of "egrep" to use in msg output if test -z "$EGREP"; then set dummy egrep; ac_prog_name=$2 if test "${ac_cv_path_EGREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS fi EGREP="$ac_cv_path_EGREP" if test -z "$EGREP"; then { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_EGREP=$EGREP fi fi fi { echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } else { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 echo "${ECHO_T}$LD" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } if test "${lt_cv_ld_reload_flag+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_ld_reload_flag='-r' fi { echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac { echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; } if test "${lt_cv_path_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi { echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 echo "${ECHO_T}$lt_cv_path_NM" >&6; } NM="$lt_cv_path_NM" { echo "$as_me:$LINENO: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } else { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 echo "${ECHO_T}no, using $LN_S" >&6; } fi { echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6; } if test "${lt_cv_deplibs_check_method+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; nto-qnx*) lt_cv_deplibs_check_method=unknown ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line 4450 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } if test "${lt_cv_cc_needs_belf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_cv_cc_needs_belf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ----------------------------------------- ## ## Report this to apreq-dev@httpd.apache.org ## ## ----------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { echo "$as_me:$LINENO: result: $CXX" >&5 echo "${ECHO_T}$CXX" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 echo "${ECHO_T}$ac_ct_CXX" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. echo "$as_me:$LINENO: checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CXXFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CXX" am_compiler_list= { echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; } if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { echo "$as_me:$LINENO: result: $CXXCPP" >&5 echo "${ECHO_T}$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$F77"; then ac_cv_prog_F77="$F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_F77="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi F77=$ac_cv_prog_F77 if test -n "$F77"; then { echo "$as_me:$LINENO: result: $F77" >&5 echo "${ECHO_T}$F77" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$F77" && break done fi if test -z "$F77"; then ac_ct_F77=$F77 for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_F77"; then ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_F77="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_F77=$ac_cv_prog_ac_ct_F77 if test -n "$ac_ct_F77"; then { echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 echo "${ECHO_T}$ac_ct_F77" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$ac_ct_F77" && break done if test "x$ac_ct_F77" = x; then F77="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac F77=$ac_ct_F77 fi fi # Provide some information about the compiler. echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -f a.out # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F { echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6; } if test "${ac_cv_f77_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_f77_compiler_gnu=$ac_compiler_gnu fi { echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6; } ac_ext=$ac_save_ext ac_test_FFLAGS=${FFLAGS+set} ac_save_FFLAGS=$FFLAGS FFLAGS= { echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_f77_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else FFLAGS=-g cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_f77_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_f77_g=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 echo "${ECHO_T}$ac_cv_prog_f77_g" >&6; } if test "$ac_test_FFLAGS" = set; then FFLAGS=$ac_save_FFLAGS elif test $ac_cv_prog_f77_g = yes; then if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-g -O2" else FFLAGS="-g" fi else if test "x$ac_cv_f77_compiler_gnu" = xyes; then FFLAGS="-O2" else FFLAGS= fi fi G77=`test $ac_compiler_gnu = yes && echo yes` ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! # find the maximum length of command line arguments { echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } if test "${lt_cv_sys_max_cmd_len+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done teststring= # Add a significant safety factor because C++ compilers can tack on massive # amounts of additional arguments before passing them to the linker. # It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } else { echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6; } fi # Check for command to grab the raw symbol name followed by C symbol from nm. { echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; } if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; linux* | k*bsd*-gnu) if test "$host_cpu" = ia64; then symcode='[ABCDGIRSTW]' lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if grep ' nm_test_var$' "$nlist" >/dev/null; then if grep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = { EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { echo "$as_me:$LINENO: result: failed" >&5 echo "${ECHO_T}failed" >&6; } else { echo "$as_me:$LINENO: result: ok" >&5 echo "${ECHO_T}ok" >&6; } fi { echo "$as_me:$LINENO: checking for objdir" >&5 echo $ECHO_N "checking for objdir... $ECHO_C" >&6; } if test "${lt_cv_objdir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 echo "${ECHO_T}$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="${ac_tool_prefix}ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { echo "$as_me:$LINENO: result: $AR" >&5 echo "${ECHO_T}$AR" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="ar" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 echo "${ECHO_T}$ac_ct_AR" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { echo "$as_me:$LINENO: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$SED" && SED=sed test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { echo "$as_me:$LINENO: checking for file" >&5 echo $ECHO_N "checking for file... $ECHO_C" >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_DSYMUTIL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 echo "${ECHO_T}$DSYMUTIL" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 echo "${ECHO_T}$ac_ct_DSYMUTIL" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_NMEDIT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { echo "$as_me:$LINENO: result: $NMEDIT" >&5 echo "${ECHO_T}$NMEDIT" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_NMEDIT="nmedit" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 echo "${ECHO_T}$ac_ct_NMEDIT" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi { echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 echo $ECHO_N "checking for -single_module linker flag... $ECHO_C" >&6; } if test "${lt_cv_apple_cc_single_mod+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. echo "int foo(void){return 1;}" > conftest.c $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib ${wl}-single_module conftest.c if test -f libconftest.dylib; then lt_cv_apple_cc_single_mod=yes rm -rf libconftest.dylib* fi rm conftest.c fi fi { echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 echo "${ECHO_T}$lt_cv_apple_cc_single_mod" >&6; } { echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 echo $ECHO_N "checking for -exported_symbols_list linker flag... $ECHO_C" >&6; } if test "${lt_cv_ld_exported_symbols_list+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_cv_ld_exported_symbols_list=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 echo "${ECHO_T}$lt_cv_ld_exported_symbols_list" >&6; } case $host_os in rhapsody* | darwin1.[0123]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}" fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil="~$DSYMUTIL \$lib || :" else _lt_dsymutil= fi ;; esac enable_dlopen=no enable_win32_dll=no # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Check whether --with-pic was given. if test "${with_pic+set}" = set; then withval=$with_pic; pic_mode="$withval" else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script tagname= lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' { echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:7507: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:7511: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= { echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; *) lt_prog_compiler_pic='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic='-qnocommon' lt_prog_compiler_wl='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 echo "${ECHO_T}$lt_prog_compiler_pic" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_pic_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:7797: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:7801: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_static_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:7901: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:7905: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6; } if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } runpath_var= allow_undefined_flag= enable_shared_with_static_runtimes=no archive_cmds= archive_expsym_cmds= old_archive_From_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported link_all_deplibs=unknown hardcode_automatic=no module_cmds= module_expsym_cmds= always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi link_all_deplibs=no else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_libdir_separator=':' link_all_deplibs=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[012]) allow_undefined_flag='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='' link_all_deplibs=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs=no ;; esac fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld='-rpath $libdir' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi { echo "$as_me:$LINENO: result: $ld_shlibs" >&5 echo "${ECHO_T}$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 echo "${ECHO_T}$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`echo $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var" || \ test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { echo "$as_me:$LINENO: result: $hardcode_action" >&5 echo "${ECHO_T}$hardcode_action" >&6; } if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi striplib= old_striplib= { echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi ;; *) { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } ;; esac fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) { echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; } if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_shl_load || defined __stub___shl_load choke me #endif int main () { return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6; } if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; } if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; } if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else { echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_dlopen || defined __stub___dlopen choke me #endif int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; } if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; } if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; } if test "${ac_cv_lib_dld_dld_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_dld_dld_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; } if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; } if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; } if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # Report which library types will actually be built { echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } { echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6; } { echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6; } { echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6; } # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler \ CC \ LD \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_prog_compiler_no_builtin_flag \ export_dynamic_flag_spec \ thread_safe_flag_spec \ whole_archive_flag_spec \ enable_shared_with_static_runtimes \ old_archive_cmds \ old_archive_from_new_cmds \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ compiler_lib_search_dirs \ archive_cmds \ archive_expsym_cmds \ postinstall_cmds \ postuninstall_cmds \ old_archive_from_expsyms_cmds \ allow_undefined_flag \ no_undefined_flag \ export_symbols_cmds \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ hardcode_automatic \ module_cmds \ module_expsym_cmds \ lt_cv_prog_compiler_c_o \ fix_srcfile_path \ exclude_expsyms \ include_expsyms; do case $var in old_archive_cmds | \ old_archive_from_new_cmds | \ archive_cmds | \ archive_expsym_cmds | \ module_cmds | \ module_expsym_cmds | \ old_archive_from_expsyms_cmds | \ export_symbols_cmds | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" { echo "$as_me:$LINENO: creating $ofile" >&5 echo "$as_me: creating $ofile" >&6;} cat <<__EOF__ >> "$cfgfile" #! $SHELL # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. # # This file is part of GNU Libtool: # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="$SED -e 1s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # The names of the tagged configurations supported by this script. available_tags= # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler # Is the compiler the GNU C compiler? with_gcc=$GCC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || \ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" # Check whether --with-tags was given. if test "${with_tags+set}" = set; then withval=$with_tags; tagnames="$withval" fi if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} else { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} fi fi if test -z "$LTCFLAGS"; then eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for tagname in $tagnames; do IFS="$lt_save_ifs" # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in "") ;; *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 echo "$as_me: error: invalid tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} { (exit 1); exit 1; }; } fi # Update the list of available tags. if test -n "$tagname"; then echo appending configuration tag \"$tagname\" to $ofile case $tagname in CXX) if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= compiler_lib_search_dirs_CXX= # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } else { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 echo "${ECHO_T}$LD" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported whole_archive_flag_spec_CXX='' link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_lt_dar_allow_undefined" if test "$GXX" = yes ; then output_verbose_link_cmd='echo' archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_CXX=no ;; esac fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd[12]*) # C++ shared libraries reported to be fairly broken before switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc*) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd='echo' else ld_shlibs_CXX=no fi ;; osf3*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ $rm $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | grep -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. # So that behaviour is only enabled if SCOABSPATH is set to a # non-empty value in the environment. Most likely only useful for # creating official distributions of packages. # This is a hack until libtool officially supports absolute path # names for shared libraries. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 echo "${ECHO_T}$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no # The `*' in the case matches for architectures that use `case' in # $output_verbose_cmd can trigger glob expansion during the loop # eval without this substitution. output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` for p in `eval $output_verbose_link_cmd`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" \ || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $rm -f confest.$objext compiler_lib_search_dirs_CXX= if test -n "$compiler_lib_search_path_CXX"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= { echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_CXX='-qnocommon' lt_prog_compiler_wl_CXX='-Wl,' ;; esac ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; icpc* | ecpc*) # Intel C++ lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:12779: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:12783: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_CXX=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:12883: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:12887: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6; } if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw*) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' ;; linux* | k*bsd*-gnu) link_all_deplibs_CXX=no ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' { echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 echo "${ECHO_T}$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_CXX=no else archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; } ;; esac fi ;; esac { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || \ test -n "$runpath_var_CXX" || \ test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 echo "${ECHO_T}$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_CXX \ CC_CXX \ LD_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_static_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ export_dynamic_flag_spec_CXX \ thread_safe_flag_spec_CXX \ whole_archive_flag_spec_CXX \ enable_shared_with_static_runtimes_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX \ compiler_lib_search_dirs_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ postinstall_cmds_CXX \ postuninstall_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ export_symbols_cmds_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ hardcode_automatic_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ lt_cv_prog_compiler_c_o_CXX \ fix_srcfile_path_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX; do case $var in old_archive_cmds_CXX | \ old_archive_from_new_cmds_CXX | \ archive_cmds_CXX | \ archive_expsym_cmds_CXX | \ module_cmds_CXX | \ module_expsym_cmds_CXX | \ old_archive_from_expsyms_cmds_CXX | \ export_symbols_cmds_CXX | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU C compiler? with_gcc=$GCC_CXX # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_CXX # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_CXX old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_CXX # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_CXX # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_CXX # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_CXX # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_CXX # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ldcxx=$with_gnu_ld with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld else tagname="" fi ;; F77) if test -n "$F77" && test "X$F77" != "Xno"; then ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu archive_cmds_need_lc_F77=no allow_undefined_flag_F77= always_export_symbols_F77=no archive_expsym_cmds_F77= export_dynamic_flag_spec_F77= hardcode_direct_F77=no hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_minus_L_F77=no hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= link_all_deplibs_F77=unknown old_archive_cmds_F77=$old_archive_cmds no_undefined_flag_F77= whole_archive_flag_spec_F77= enable_shared_with_static_runtimes_F77=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o objext_F77=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC compiler_F77=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` { echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } { echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6; } { echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { echo "$as_me:$LINENO: result: $enable_shared" >&5 echo "${ECHO_T}$enable_shared" >&6; } { echo "$as_me:$LINENO: checking whether to build static libraries" >&5 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6; } GCC_F77="$G77" LD_F77="$LD" lt_prog_compiler_wl_F77= lt_prog_compiler_pic_F77= lt_prog_compiler_static_F77= { echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_static_F77='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_F77='-fno-common' ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_F77=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_F77=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_F77='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_F77='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_F77='-Bstatic' else lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_F77='-qnocommon' lt_prog_compiler_wl_F77='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_F77='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_F77='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_F77='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_F77='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_F77='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_F77='-non_shared' ;; newsos6) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-fpic' lt_prog_compiler_static_F77='-Bstatic' ;; ccc*) lt_prog_compiler_wl_F77='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' lt_prog_compiler_wl_F77='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' lt_prog_compiler_wl_F77='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_F77='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_F77='-non_shared' ;; rdos*) lt_prog_compiler_static_F77='-non_shared' ;; solaris*) lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl_F77='-Qoption ld ';; *) lt_prog_compiler_wl_F77='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl_F77='-Qoption ld ' lt_prog_compiler_pic_F77='-PIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_F77='-Kconform_pic' lt_prog_compiler_static_F77='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' ;; unicos*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_can_build_shared_F77=no ;; uts4*) lt_prog_compiler_pic_F77='-pic' lt_prog_compiler_static_F77='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_F77=no ;; esac fi { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_F77"; then { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_pic_works_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_pic_works_F77=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_F77" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:14481: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:14485: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_F77=yes fi fi $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_F77" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_F77" >&6; } if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then case $lt_prog_compiler_pic_F77 in "" | " "*) ;; *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; esac else lt_prog_compiler_pic_F77= lt_prog_compiler_can_build_shared_F77=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_F77= ;; *) lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" { echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_static_works_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_static_works_F77=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_F77=yes fi else lt_cv_prog_compiler_static_works_F77=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_F77" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_static_works_F77" >&6; } if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then : else lt_prog_compiler_static_F77= fi { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_F77=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:14585: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:14589: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_F77=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6; } if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } runpath_var= allow_undefined_flag_F77= enable_shared_with_static_runtimes_F77=no archive_cmds_F77= archive_expsym_cmds_F77= old_archive_From_new_cmds_F77= old_archive_from_expsyms_cmds_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= thread_safe_flag_spec_F77= hardcode_libdir_flag_spec_F77= hardcode_libdir_flag_spec_ld_F77= hardcode_libdir_separator_F77= hardcode_direct_F77=no hardcode_minus_L_F77=no hardcode_shlibpath_var_F77=unsupported link_all_deplibs_F77=unknown hardcode_automatic_F77=no module_cmds_F77= module_expsym_cmds_F77= always_export_symbols_F77=no export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_F77= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_F77='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_F77=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_F77='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_F77= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_F77=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_F77=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_F77=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_F77=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_F77='-L$libdir' allow_undefined_flag_F77=unsupported always_export_symbols_F77=no enable_shared_with_static_runtimes_F77=yes export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_F77=no fi ;; interix[3-9]*) hardcode_direct_F77=no hardcode_shlibpath_var_F77=no hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' export_dynamic_flag_spec_F77='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi link_all_deplibs_F77=no else ld_shlibs_F77=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_F77=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs_F77=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac ;; sunos4*) archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_F77=no fi ;; esac if test "$ld_shlibs_F77" = no; then runpath_var= hardcode_libdir_flag_spec_F77= export_dynamic_flag_spec_F77= whole_archive_flag_spec_F77= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_F77=unsupported always_export_symbols_F77=yes archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_F77=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_F77=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_F77='' hardcode_direct_F77=yes hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_F77=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_F77=yes hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_libdir_separator_F77= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_F77=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_F77='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_F77="-z nodefs" archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF program main end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_f77_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_F77=' ${wl}-bernotok' allow_undefined_flag_F77=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_F77='$convenience' archive_cmds_need_lc_F77=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes # see comment about different semantics on the GNU ld section ld_shlibs_F77=no ;; bsdi[45]*) export_dynamic_flag_spec_F77=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_F77=' ' allow_undefined_flag_F77=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_F77='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path_F77='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_F77=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[012]) allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc_F77=no hardcode_direct_F77=no hardcode_automatic_F77=yes hardcode_shlibpath_var_F77=unsupported whole_archive_flag_spec_F77='' link_all_deplibs_F77=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds_F77="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_F77=no ;; esac fi ;; dgux*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; freebsd1*) ld_shlibs_F77=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes export_dynamic_flag_spec_F77='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_direct_F77=yes export_dynamic_flag_spec_F77='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' hardcode_libdir_separator_F77=: case $host_cpu in hppa*64*|ia64*) hardcode_libdir_flag_spec_ld_F77='+b $libdir' hardcode_direct_F77=no hardcode_shlibpath_var_F77=no ;; *) hardcode_direct_F77=yes export_dynamic_flag_spec_F77='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_F77=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: link_all_deplibs_F77=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no ;; newsos6) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: hardcode_shlibpath_var_F77=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_F77=yes hardcode_shlibpath_var_F77=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' export_dynamic_flag_spec_F77='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-R$libdir' ;; *) archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs_F77=no fi ;; os2*) hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_minus_L_F77=yes allow_undefined_flag_F77=unsupported archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_F77=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_F77='-rpath $libdir' fi hardcode_libdir_separator_F77=: ;; solaris*) no_undefined_flag_F77=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_shlibpath_var_F77=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs_F77=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_direct_F77=yes hardcode_minus_L_F77=yes hardcode_shlibpath_var_F77=no ;; sysv4) case $host_vendor in sni) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_F77='$CC -r -o $output$reload_objs' hardcode_direct_F77=no ;; motorola) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_F77=no ;; sysv4.3*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no export_dynamic_flag_spec_F77='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_F77=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_F77=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_F77='${wl}-z,text' archive_cmds_need_lc_F77=no hardcode_shlibpath_var_F77=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_F77='${wl}-z,text' allow_undefined_flag_F77='${wl}-z,nodefs' archive_cmds_need_lc_F77=no hardcode_shlibpath_var_F77=no hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator_F77=':' link_all_deplibs_F77=yes export_dynamic_flag_spec_F77='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_shlibpath_var_F77=no ;; *) ld_shlibs_F77=no ;; esac fi { echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 echo "${ECHO_T}$ld_shlibs_F77" >&6; } test "$ld_shlibs_F77" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_F77" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_F77=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_F77 in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_F77 pic_flag=$lt_prog_compiler_pic_F77 compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_F77 allow_undefined_flag_F77= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_F77=no else archive_cmds_need_lc_F77=yes fi allow_undefined_flag_F77=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6; } ;; esac fi ;; esac { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } hardcode_action_F77= if test -n "$hardcode_libdir_flag_spec_F77" || \ test -n "$runpath_var_F77" || \ test "X$hardcode_automatic_F77" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_F77" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && test "$hardcode_minus_L_F77" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_F77=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_F77=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_F77=unsupported fi { echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 echo "${ECHO_T}$hardcode_action_F77" >&6; } if test "$hardcode_action_F77" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_F77 \ CC_F77 \ LD_F77 \ lt_prog_compiler_wl_F77 \ lt_prog_compiler_pic_F77 \ lt_prog_compiler_static_F77 \ lt_prog_compiler_no_builtin_flag_F77 \ export_dynamic_flag_spec_F77 \ thread_safe_flag_spec_F77 \ whole_archive_flag_spec_F77 \ enable_shared_with_static_runtimes_F77 \ old_archive_cmds_F77 \ old_archive_from_new_cmds_F77 \ predep_objects_F77 \ postdep_objects_F77 \ predeps_F77 \ postdeps_F77 \ compiler_lib_search_path_F77 \ compiler_lib_search_dirs_F77 \ archive_cmds_F77 \ archive_expsym_cmds_F77 \ postinstall_cmds_F77 \ postuninstall_cmds_F77 \ old_archive_from_expsyms_cmds_F77 \ allow_undefined_flag_F77 \ no_undefined_flag_F77 \ export_symbols_cmds_F77 \ hardcode_libdir_flag_spec_F77 \ hardcode_libdir_flag_spec_ld_F77 \ hardcode_libdir_separator_F77 \ hardcode_automatic_F77 \ module_cmds_F77 \ module_expsym_cmds_F77 \ lt_cv_prog_compiler_c_o_F77 \ fix_srcfile_path_F77 \ exclude_expsyms_F77 \ include_expsyms_F77; do case $var in old_archive_cmds_F77 | \ old_archive_from_new_cmds_F77 | \ archive_cmds_F77 | \ archive_expsym_cmds_F77 | \ module_cmds_F77 | \ module_expsym_cmds_F77 | \ old_archive_from_expsyms_cmds_F77 | \ export_symbols_cmds_F77 | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_F77 # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_F77 # Is the compiler the GNU C compiler? with_gcc=$GCC_F77 # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_F77 # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_F77 # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_F77 pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_F77 # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_F77 old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_F77 archive_expsym_cmds=$lt_archive_expsym_cmds_F77 postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_F77 module_expsym_cmds=$lt_module_expsym_cmds_F77 # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_F77 # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_F77 # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_F77 # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_F77 # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_F77 # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_F77 # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_F77 # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_F77 # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_F77 # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_F77 # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_F77 # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_F77 # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_F77 # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_F77 # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_F77 # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_F77 # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_F77 # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; GCJ) if test -n "$GCJ" && test "X$GCJ" != "Xno"; then # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o objext_GCJ=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC compiler_GCJ=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # GCJ did not exist at the time GCC didn't implicitly link libc in. archive_cmds_need_lc_GCJ=no old_archive_cmds_GCJ=$old_archive_cmds lt_prog_compiler_no_builtin_flag_GCJ= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' { echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:16805: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:16809: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl_GCJ= lt_prog_compiler_pic_GCJ= lt_prog_compiler_static_GCJ= { echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_static_GCJ='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' fi ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_GCJ='-fno-common' ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_GCJ=no enable_shared=no ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_GCJ=-Kconform_pic fi ;; hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac ;; *) lt_prog_compiler_pic_GCJ='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_GCJ='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_GCJ='-Bstatic' else lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' fi ;; darwin*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files case $cc_basename in xlc*) lt_prog_compiler_pic_GCJ='-qnocommon' lt_prog_compiler_wl_GCJ='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_GCJ='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_GCJ='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_GCJ='-non_shared' ;; newsos6) lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-fpic' lt_prog_compiler_static_GCJ='-Bstatic' ;; ccc*) lt_prog_compiler_wl_GCJ='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' lt_prog_compiler_wl_GCJ='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' lt_prog_compiler_wl_GCJ='' ;; esac ;; esac ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_GCJ='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_GCJ='-non_shared' ;; rdos*) lt_prog_compiler_static_GCJ='-non_shared' ;; solaris*) lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl_GCJ='-Qoption ld ';; *) lt_prog_compiler_wl_GCJ='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl_GCJ='-Qoption ld ' lt_prog_compiler_pic_GCJ='-PIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_GCJ='-Kconform_pic' lt_prog_compiler_static_GCJ='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' ;; unicos*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_can_build_shared_GCJ=no ;; uts4*) lt_prog_compiler_pic_GCJ='-pic' lt_prog_compiler_static_GCJ='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_GCJ=no ;; esac fi { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_GCJ"; then { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_pic_works_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_pic_works_GCJ=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_GCJ" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:17095: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:17099: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_GCJ=yes fi fi $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_GCJ" >&6; } if test x"$lt_cv_prog_compiler_pic_works_GCJ" = xyes; then case $lt_prog_compiler_pic_GCJ in "" | " "*) ;; *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; esac else lt_prog_compiler_pic_GCJ= lt_prog_compiler_can_build_shared_GCJ=no fi fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_GCJ= ;; *) lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" ;; esac # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" { echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_static_works_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_static_works_GCJ=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_GCJ=yes fi else lt_cv_prog_compiler_static_works_GCJ=yes fi fi $rm -r conftest* LDFLAGS="$save_LDFLAGS" fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_GCJ" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_static_works_GCJ" >&6; } if test x"$lt_cv_prog_compiler_static_works_GCJ" = xyes; then : else lt_prog_compiler_static_GCJ= fi { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_compiler_c_o_GCJ=no $rm -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:17199: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:17203: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_GCJ=yes fi fi chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files $rm out/* && rmdir out cd .. rmdir conftest $rm conftest* fi { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6; } if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } runpath_var= allow_undefined_flag_GCJ= enable_shared_with_static_runtimes_GCJ=no archive_cmds_GCJ= archive_expsym_cmds_GCJ= old_archive_From_new_cmds_GCJ= old_archive_from_expsyms_cmds_GCJ= export_dynamic_flag_spec_GCJ= whole_archive_flag_spec_GCJ= thread_safe_flag_spec_GCJ= hardcode_libdir_flag_spec_GCJ= hardcode_libdir_flag_spec_ld_GCJ= hardcode_libdir_separator_GCJ= hardcode_direct_GCJ=no hardcode_minus_L_GCJ=no hardcode_shlibpath_var_GCJ=unsupported link_all_deplibs_GCJ=unknown hardcode_automatic_GCJ=no module_cmds_GCJ= module_expsym_cmds_GCJ= always_export_symbols_GCJ=no export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_GCJ= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_GCJ='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= # Just being paranoid about ensuring that cc_basename is set. for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_GCJ=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_GCJ= fi supports_anon_versioning=no case `$LD -v 2>/dev/null` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_GCJ=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can't use # them. ld_shlibs_GCJ=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_GCJ=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_GCJ=no fi ;; cygwin* | mingw* | pw32*) # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_GCJ='-L$libdir' allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=no enable_shared_with_static_runtimes_GCJ=yes export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_GCJ=no fi ;; interix[3-9]*) hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' export_dynamic_flag_spec_GCJ='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then tmp_addflag= case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec_GCJ='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; *) tmp_sharedflag='-shared' ;; esac archive_cmds_GCJ='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test $supports_anon_versioning = yes; then archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi link_all_deplibs_GCJ=no else ld_shlibs_GCJ=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_GCJ=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs_GCJ=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; esac ;; sunos4*) archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_GCJ=no fi ;; esac if test "$ld_shlibs_GCJ" = no; then runpath_var= hardcode_libdir_flag_spec_GCJ= export_dynamic_flag_spec_GCJ= whole_archive_flag_spec_GCJ= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=yes archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_GCJ=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_GCJ=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | grep 'GNU' > /dev/null; then export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_GCJ='' hardcode_direct_GCJ=yes hardcode_libdir_separator_GCJ=':' link_all_deplibs_GCJ=yes if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_GCJ=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_GCJ=yes hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_libdir_separator_GCJ= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_GCJ=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_GCJ='-berok' # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_GCJ="-z nodefs" archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_GCJ=' ${wl}-bernotok' allow_undefined_flag_GCJ=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_GCJ='$convenience' archive_cmds_need_lc_GCJ=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes # see comment about different semantics on the GNU ld section ld_shlibs_GCJ=no ;; bsdi[45]*) export_dynamic_flag_spec_GCJ=-rdynamic ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_GCJ=' ' allow_undefined_flag_GCJ=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_From_new_cmds_GCJ='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_GCJ='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_GCJ=yes ;; darwin* | rhapsody*) case $host_os in rhapsody* | darwin1.[012]) allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' ;; *) # Darwin 1.3 on if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' else case ${MACOSX_DEPLOYMENT_TARGET} in 10.[012]) allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' ;; esac fi ;; esac archive_cmds_need_lc_GCJ=no hardcode_direct_GCJ=no hardcode_automatic_GCJ=yes hardcode_shlibpath_var_GCJ=unsupported whole_archive_flag_spec_GCJ='' link_all_deplibs_GCJ=yes if test "$GCC" = yes ; then output_verbose_link_cmd='echo' archive_cmds_GCJ="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_GCJ="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_GCJ="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_GCJ="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else case $cc_basename in xlc*) output_verbose_link_cmd='echo' archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ;; *) ld_shlibs_GCJ=no ;; esac fi ;; dgux*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; freebsd1*) ld_shlibs_GCJ=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' hardcode_libdir_separator_GCJ=: case $host_cpu in hppa*64*|ia64*) hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no ;; *) hardcode_direct_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_GCJ=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: link_all_deplibs_GCJ=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; newsos6) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: hardcode_shlibpath_var_GCJ=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_GCJ=yes hardcode_shlibpath_var_GCJ=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' export_dynamic_flag_spec_GCJ='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' ;; *) archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs_GCJ=no fi ;; os2*) hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_minus_L_GCJ=yes allow_undefined_flag_GCJ=unsupported archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_GCJ=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_GCJ='-rpath $libdir' fi hardcode_libdir_separator_GCJ=: ;; solaris*) no_undefined_flag_GCJ=' -z text' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else wlarc='' archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' fi hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_shlibpath_var_GCJ=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs_GCJ=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_direct_GCJ=yes hardcode_minus_L_GCJ=yes hardcode_shlibpath_var_GCJ=no ;; sysv4) case $host_vendor in sni) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_GCJ='$CC -r -o $output$reload_objs' hardcode_direct_GCJ=no ;; motorola) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_GCJ=no ;; sysv4.3*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no export_dynamic_flag_spec_GCJ='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_GCJ=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_GCJ=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_GCJ='${wl}-z,text' archive_cmds_need_lc_GCJ=no hardcode_shlibpath_var_GCJ=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_GCJ='${wl}-z,text' allow_undefined_flag_GCJ='${wl}-z,nodefs' archive_cmds_need_lc_GCJ=no hardcode_shlibpath_var_GCJ=no hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator_GCJ=':' link_all_deplibs_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_shlibpath_var_GCJ=no ;; *) ld_shlibs_GCJ=no ;; esac fi { echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 echo "${ECHO_T}$ld_shlibs_GCJ" >&6; } test "$ld_shlibs_GCJ" = no && can_build_shared=no # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_GCJ" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_GCJ=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_GCJ in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_GCJ pic_flag=$lt_prog_compiler_pic_GCJ compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ allow_undefined_flag_GCJ= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_GCJ=no else archive_cmds_need_lc_GCJ=yes fi allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $rm conftest* { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6; } ;; esac fi ;; esac { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; nto-qnx*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' shlibpath_overrides_runpath=no else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' shlibpath_overrides_runpath=yes case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } hardcode_action_GCJ= if test -n "$hardcode_libdir_flag_spec_GCJ" || \ test -n "$runpath_var_GCJ" || \ test "X$hardcode_automatic_GCJ" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_GCJ" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && test "$hardcode_minus_L_GCJ" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_GCJ=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_GCJ=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_GCJ=unsupported fi { echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 echo "${ECHO_T}$hardcode_action_GCJ" >&6; } if test "$hardcode_action_GCJ" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_GCJ \ CC_GCJ \ LD_GCJ \ lt_prog_compiler_wl_GCJ \ lt_prog_compiler_pic_GCJ \ lt_prog_compiler_static_GCJ \ lt_prog_compiler_no_builtin_flag_GCJ \ export_dynamic_flag_spec_GCJ \ thread_safe_flag_spec_GCJ \ whole_archive_flag_spec_GCJ \ enable_shared_with_static_runtimes_GCJ \ old_archive_cmds_GCJ \ old_archive_from_new_cmds_GCJ \ predep_objects_GCJ \ postdep_objects_GCJ \ predeps_GCJ \ postdeps_GCJ \ compiler_lib_search_path_GCJ \ compiler_lib_search_dirs_GCJ \ archive_cmds_GCJ \ archive_expsym_cmds_GCJ \ postinstall_cmds_GCJ \ postuninstall_cmds_GCJ \ old_archive_from_expsyms_cmds_GCJ \ allow_undefined_flag_GCJ \ no_undefined_flag_GCJ \ export_symbols_cmds_GCJ \ hardcode_libdir_flag_spec_GCJ \ hardcode_libdir_flag_spec_ld_GCJ \ hardcode_libdir_separator_GCJ \ hardcode_automatic_GCJ \ module_cmds_GCJ \ module_expsym_cmds_GCJ \ lt_cv_prog_compiler_c_o_GCJ \ fix_srcfile_path_GCJ \ exclude_expsyms_GCJ \ include_expsyms_GCJ; do case $var in old_archive_cmds_GCJ | \ old_archive_from_new_cmds_GCJ | \ archive_cmds_GCJ | \ archive_expsym_cmds_GCJ | \ module_cmds_GCJ | \ module_expsym_cmds_GCJ | \ old_archive_from_expsyms_cmds_GCJ | \ export_symbols_cmds_GCJ | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_GCJ # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_GCJ # Is the compiler the GNU C compiler? with_gcc=$GCC_GCJ # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_GCJ # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_GCJ # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_GCJ pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_GCJ # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_GCJ old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_GCJ archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_GCJ module_expsym_cmds=$lt_module_expsym_cmds_GCJ # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_GCJ # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_GCJ # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_GCJ # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_GCJ # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_GCJ # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_GCJ # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_GCJ # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_GCJ # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_GCJ # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_GCJ # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_GCJ # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_GCJ # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_GCJ # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_GCJ # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_GCJ # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" else tagname="" fi ;; RC) # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o objext_RC=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $rm conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $rm -r conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC compiler_RC=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` lt_cv_prog_compiler_c_o_RC=yes # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then # See if we are running on zsh, and set the options which allow our commands through # without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ deplibs_check_method reload_flag reload_cmds need_locks \ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ old_postinstall_cmds old_postuninstall_cmds \ compiler_RC \ CC_RC \ LD_RC \ lt_prog_compiler_wl_RC \ lt_prog_compiler_pic_RC \ lt_prog_compiler_static_RC \ lt_prog_compiler_no_builtin_flag_RC \ export_dynamic_flag_spec_RC \ thread_safe_flag_spec_RC \ whole_archive_flag_spec_RC \ enable_shared_with_static_runtimes_RC \ old_archive_cmds_RC \ old_archive_from_new_cmds_RC \ predep_objects_RC \ postdep_objects_RC \ predeps_RC \ postdeps_RC \ compiler_lib_search_path_RC \ compiler_lib_search_dirs_RC \ archive_cmds_RC \ archive_expsym_cmds_RC \ postinstall_cmds_RC \ postuninstall_cmds_RC \ old_archive_from_expsyms_cmds_RC \ allow_undefined_flag_RC \ no_undefined_flag_RC \ export_symbols_cmds_RC \ hardcode_libdir_flag_spec_RC \ hardcode_libdir_flag_spec_ld_RC \ hardcode_libdir_separator_RC \ hardcode_automatic_RC \ module_cmds_RC \ module_expsym_cmds_RC \ lt_cv_prog_compiler_c_o_RC \ fix_srcfile_path_RC \ exclude_expsyms_RC \ include_expsyms_RC; do case $var in old_archive_cmds_RC | \ old_archive_from_new_cmds_RC | \ archive_cmds_RC | \ archive_expsym_cmds_RC | \ module_cmds_RC | \ module_expsym_cmds_RC | \ old_archive_from_expsyms_cmds_RC | \ export_symbols_cmds_RC | \ extract_expsyms_cmds | reload_cmds | finish_cmds | \ postinstall_cmds | postuninstall_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case $lt_echo in *'\$0 --fallback-echo"') lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac cfgfile="$ofile" cat <<__EOF__ >> "$cfgfile" # ### BEGIN LIBTOOL TAG CONFIG: $tagname # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_RC # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC # LTCC compiler flags. LTCFLAGS=$lt_LTCFLAGS # A language-specific compiler. CC=$lt_compiler_RC # Is the compiler the GNU C compiler? with_gcc=$GCC_RC # An ERE matcher. EGREP=$lt_EGREP # The linker used to build libraries. LD=$lt_LD_RC # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$lt_STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_RC # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Shared library suffix (normally ".so"). shrext_cmds='$shrext_cmds' # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_RC pic_mode=$pic_mode # What is the maximum length of a command? max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC # Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_RC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds_RC old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds_RC archive_expsym_cmds=$lt_archive_expsym_cmds_RC postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands used to build a loadable module (assumed same as above if empty) module_cmds=$lt_module_cmds_RC module_expsym_cmds=$lt_module_expsym_cmds_RC # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Dependencies to place before the objects being linked to create a # shared library. predep_objects=$lt_predep_objects_RC # Dependencies to place after the objects being linked to create a # shared library. postdep_objects=$lt_postdep_objects_RC # Dependencies to place before the objects being linked to create a # shared library. predeps=$lt_predeps_RC # Dependencies to place after the objects being linked to create a # shared library. postdeps=$lt_postdeps_RC # The directories searched by this compiler when creating a shared # library compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_RC # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_RC # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_RC # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_RC # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_RC # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC # If ld is used when linking, flag to hardcode \$libdir into # a binary during linking. This must work even if \$libdir does # not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct_RC # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L_RC # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_RC # Set to yes if building a shared library automatically hardcodes DIR into the library # and all subsequent libraries and executables linked against it. hardcode_automatic=$hardcode_automatic_RC # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_RC # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols_RC # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_RC # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_RC # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_RC # ### END LIBTOOL TAG CONFIG: $tagname __EOF__ else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` if test -f "$ltmain_in"; then test -f Makefile && make "$ltmain" fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ;; *) { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 echo "$as_me: error: Unsupported tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac # Append the new tag name to the list of available tags. if test -n "$tagname" ; then available_tags="$available_tags $tagname" fi fi done IFS="$lt_save_ifs" # Now substitute the updated list of available tags. if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then mv "${ofile}T" "$ofile" chmod +x "$ofile" else rm -f "${ofile}T" { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 echo "$as_me: error: unable to update list of available tagged configurations." >&2;} { (exit 1); exit 1; }; } fi fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' # Prevent multiple expansion if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { echo "$as_me:$LINENO: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. { echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done IFS=$as_save_IFS fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { echo "$as_me:$LINENO: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } else { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 echo "${ECHO_T}no, using $LN_S" >&6; } fi { echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE ac_config_headers="$ac_config_headers include/apreq_config.h" # Check whether --enable-profile was given. if test "${enable_profile+set}" = set; then enableval=$enable_profile; PROFILE=$enableval else PROFILE="no" fi # Check whether --enable-perl_glue was given. if test "${enable_perl_glue+set}" = set; then enableval=$enable_perl_glue; PERL_GLUE=$enableval else PERL_GLUE="no" fi # Check whether --with-perl was given. if test "${with_perl+set}" = set; then withval=$with_perl; PERL=$withval else PERL="perl" fi # Check whether --with-apache2-apxs was given. if test "${with_apache2_apxs+set}" = set; then withval=$with_apache2_apxs; APACHE2_APXS=$withval else APACHE2_APXS="apxs" fi # Check whether --with-apache2-src was given. if test "${with_apache2_src+set}" = set; then withval=$with_apache2_src; APACHE2_SRC=$withval else APACHE2_SRC="" fi # Check whether --with-apache2-httpd was given. if test "${with_apache2_httpd+set}" = set; then withval=$with_apache2_httpd; APACHE2_HTTPD=$withval else APACHE2_HTTPD="" fi # Check whether --with-apr-config was given. if test "${with_apr_config+set}" = set; then withval=$with_apr_config; APR_CONFIG=$withval else APR_CONFIG="" fi # Check whether --with-apu-config was given. if test "${with_apu_config+set}" = set; then withval=$with_apu_config; APU_CONFIG=$withval else APU_CONFIG="" fi # Check whether --with-apache1-apxs was given. if test "${with_apache1_apxs+set}" = set; then withval=$with_apache1_apxs; APACHE1_APXS=$withval else APACHE1_APXS="" fi # Check whether --with-perl-opts was given. if test "${with_perl_opts+set}" = set; then withval=$with_perl_opts; PERL_OPTS=$withval else PERL_OPTS="" fi # Check whether --with-mm-opts was given. if test "${with_mm_opts+set}" = set; then withval=$with_mm_opts; MM_OPTS=$withval else MM_OPTS="" fi # Check whether --with-expat was given. if test "${with_expat+set}" = set; then withval=$with_expat; EXPAT_DIR=$withval else EXPAT_DIR="" fi OS=`$PERL -e 'print $^O'` prereq_check="$PERL $PERL_OPTS build/version_check.pl" if test -n "$APACHE2_SRC"; then # no apxs: must compile httpd from source APACHE2_SRC=`cd $APACHE2_SRC;pwd` as_ac_File=`echo "ac_cv_file_$APACHE2_SRC/include/httpd.h" | $as_tr_sh` { echo "$as_me:$LINENO: checking for $APACHE2_SRC/include/httpd.h" >&5 echo $ECHO_N "checking for $APACHE2_SRC/include/httpd.h... $ECHO_C" >&6; } if { as_var=$as_ac_File; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else test "$cross_compiling" = yes && { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "$APACHE2_SRC/include/httpd.h"; then eval "$as_ac_File=yes" else eval "$as_ac_File=no" fi fi ac_res=`eval echo '${'$as_ac_File'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_File'}'` = yes; then : else { { echo "$as_me:$LINENO: error: invalid Apache2 source directory" >&5 echo "$as_me: error: invalid Apache2 source directory" >&2;} { (exit 1); exit 1; }; } fi APACHE2_INCLUDES=-I$APACHE2_SRC/include if test -z "$APR_CONFIG"; then APR_CONFIG="$APACHE2_SRC/srclib/apr/apr-config" fi if test -z "$APU_CONFIG"; then APU_CONFIG="$APACHE2_SRC/srclib/apr-util/apu-config" fi APACHE2_HTTPD=$APACHE2_SRC/httpd else # have apxs: use it APACHE2_INCLUDES=-I`$APACHE2_APXS -q INCLUDEDIR` APR_MAJOR_VERSION=`$APACHE2_APXS -q APR_VERSION 2>/dev/null | cut -d. -f 1` if test ${APR_MAJOR_VERSION:="0"} -eq 0; then apr_config=apr-config apu_config=apu-config apreq_libs="-lapr -laprutil" else apr_config=apr-$APR_MAJOR_VERSION-config apu_config=apu-$APR_MAJOR_VERSION-config apreq_libs="-lapr-$APR_MAJOR_VERSION -laprutil-$APR_MAJOR_VERSION" fi if test -z "$APR_CONFIG"; then APR_CONFIG=`$APACHE2_APXS -q APR_BINDIR`/$apr_config fi if test -z "$APU_CONFIG"; then APU_CONFIG=`$APACHE2_APXS -q APU_BINDIR`/$apu_config fi if test -z "$APACHE2_HTTPD"; then APACHE2_HTTPD=`$APACHE2_APXS -q SBINDIR`/`$APACHE2_APXS -q progname` fi if test -z "`$prereq_check apache2 $APACHE2_HTTPD`"; then { { echo "$as_me:$LINENO: error: Bad apache2 binary ($APACHE2_HTTPD)" >&5 echo "$as_me: error: Bad apache2 binary ($APACHE2_HTTPD)" >&2;} { (exit 1); exit 1; }; } fi APR_DOC_VERSION=`$APACHE2_APXS -q APR_VERSION 2>/dev/null | cut -d. -f -2` APU_DOC_VERSION=`$APACHE2_APXS -q APU_VERSION 2>/dev/null | cut -d. -f -2` fi if test "x$APR_DOC_VERSION" = 'x'; then APR_DOC_VERSION=0.9 fi if test "x$APU_DOC_VERSION" = 'x'; then APU_DOC_VERSION=0.9 fi as_ac_File=`echo "ac_cv_file_$APR_CONFIG" | $as_tr_sh` { echo "$as_me:$LINENO: checking for $APR_CONFIG" >&5 echo $ECHO_N "checking for $APR_CONFIG... $ECHO_C" >&6; } if { as_var=$as_ac_File; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else test "$cross_compiling" = yes && { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "$APR_CONFIG"; then eval "$as_ac_File=yes" else eval "$as_ac_File=no" fi fi ac_res=`eval echo '${'$as_ac_File'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_File'}'` = yes; then : else { { echo "$as_me:$LINENO: error: invalid apr-config location ($APR_CONFIG)- did you forget to configure apr?" >&5 echo "$as_me: error: invalid apr-config location ($APR_CONFIG)- did you forget to configure apr?" >&2;} { (exit 1); exit 1; }; } fi if test -z "`$prereq_check apr $APR_CONFIG`"; then { { echo "$as_me:$LINENO: error: Bad libapr version" >&5 echo "$as_me: error: Bad libapr version" >&2;} { (exit 1); exit 1; }; } fi as_ac_File=`echo "ac_cv_file_$APU_CONFIG" | $as_tr_sh` { echo "$as_me:$LINENO: checking for $APU_CONFIG" >&5 echo $ECHO_N "checking for $APU_CONFIG... $ECHO_C" >&6; } if { as_var=$as_ac_File; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else test "$cross_compiling" = yes && { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "$APU_CONFIG"; then eval "$as_ac_File=yes" else eval "$as_ac_File=no" fi fi ac_res=`eval echo '${'$as_ac_File'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_File'}'` = yes; then : else { { echo "$as_me:$LINENO: error: invalid apu-config location ($APU_CONFIG)- did you forget to configure apr-util?" >&5 echo "$as_me: error: invalid apu-config location ($APU_CONFIG)- did you forget to configure apr-util?" >&2;} { (exit 1); exit 1; }; } fi if test -z "`$prereq_check apu $APU_CONFIG`"; then { { echo "$as_me:$LINENO: error: Bad libaprutil version" >&5 echo "$as_me: error: Bad libaprutil version" >&2;} { (exit 1); exit 1; }; } fi if test "x$PERL_GLUE" != "xno"; then { echo "$as_me:$LINENO: checking for perl" >&5 echo $ECHO_N "checking for perl... $ECHO_C" >&6; } if test -z "`$prereq_check perl $PERL`"; then { { echo "$as_me:$LINENO: error: Bad perl version" >&5 echo "$as_me: error: Bad perl version" >&2;} { (exit 1); exit 1; }; } fi { echo "$as_me:$LINENO: result: $PERL" >&5 echo "${ECHO_T}$PERL" >&6; } { echo "$as_me:$LINENO: checking for ExtUtils::XSBuilder" >&5 echo $ECHO_N "checking for ExtUtils::XSBuilder... $ECHO_C" >&6; } if test -z "`$prereq_check ExtUtils::XSBuilder`"; then { echo "$as_me:$LINENO: WARNING: Bad ExtUtils::XSBuilder version" >&5 echo "$as_me: WARNING: Bad ExtUtils::XSBuilder version" >&2;} fi { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } { echo "$as_me:$LINENO: checking for mod_perl2" >&5 echo $ECHO_N "checking for mod_perl2... $ECHO_C" >&6; } if test -z "`$prereq_check mod_perl2`"; then { echo "$as_me:$LINENO: WARNING: Bad mod_perl2 version" >&5 echo "$as_me: WARNING: Bad mod_perl2 version" >&2;} fi { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } { echo "$as_me:$LINENO: checking for Apache::Test" >&5 echo $ECHO_N "checking for Apache::Test... $ECHO_C" >&6; } if test -z "`$prereq_check Apache::Test`"; then { echo "$as_me:$LINENO: WARNING: Bad Apache::Test version" >&5 echo "$as_me: WARNING: Bad Apache::Test version" >&2;} fi { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } { echo "$as_me:$LINENO: checking for ExtUtils::MakeMaker" >&5 echo $ECHO_N "checking for ExtUtils::MakeMaker... $ECHO_C" >&6; } if test -z "`$prereq_check ExtUtils::MakeMaker`"; then { echo "$as_me:$LINENO: WARNING: Bad ExtUtils::MakeMaker version" >&5 echo "$as_me: WARNING: Bad ExtUtils::MakeMaker version" >&2;} fi { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } fi if test "x$PROFILE" != "xno"; then ENABLE_PROFILE_TRUE= ENABLE_PROFILE_FALSE='#' else ENABLE_PROFILE_TRUE='#' ENABLE_PROFILE_FALSE= fi if test "x$PERL_GLUE" != "xno"; then BUILD_PERL_GLUE_TRUE= BUILD_PERL_GLUE_FALSE='#' else BUILD_PERL_GLUE_TRUE='#' BUILD_PERL_GLUE_FALSE= fi if test -n "`$prereq_check Apache::Test`"; then HAVE_APACHE_TEST_TRUE= HAVE_APACHE_TEST_FALSE='#' else HAVE_APACHE_TEST_TRUE='#' HAVE_APACHE_TEST_FALSE= fi if test -n "$APACHE2_SRC"; then BUILD_HTTPD_TRUE= BUILD_HTTPD_FALSE='#' else BUILD_HTTPD_TRUE='#' BUILD_HTTPD_FALSE= fi if test "x$APR_CONFIG" = x`$APR_CONFIG --srcdir`/apr-config; then BUILD_APR_TRUE= BUILD_APR_FALSE='#' else BUILD_APR_TRUE='#' BUILD_APR_FALSE= fi if test "x$APU_CONFIG" = x`$APU_CONFIG --srcdir`/apu-config; then BUILD_APU_TRUE= BUILD_APU_FALSE='#' else BUILD_APU_TRUE='#' BUILD_APU_FALSE= fi if test -n "$APACHE1_APXS"; then HAVE_APACHE1_TRUE= HAVE_APACHE1_FALSE='#' else HAVE_APACHE1_TRUE='#' HAVE_APACHE1_FALSE= fi ac_default_prefix="`$APU_CONFIG --prefix`" if test "x$APR_INCLUDES" = "x"; then echo " setting APR_INCLUDES to \""`$APR_CONFIG --includes`"\"" APR_INCLUDES=""`$APR_CONFIG --includes`"" else apr_addto_bugger=""`$APR_CONFIG --includes`"" for i in $apr_addto_bugger; do apr_addto_duplicate="0" for j in $APR_INCLUDES; do if test "x$i" = "x$j"; then apr_addto_duplicate="1" break fi done if test $apr_addto_duplicate = "0"; then echo " adding \"$i\" to APR_INCLUDES" APR_INCLUDES="$APR_INCLUDES $i" fi done fi if test "x$APR_INCLUDES" = "x"; then echo " setting APR_INCLUDES to \""`$APU_CONFIG --includes`"\"" APR_INCLUDES=""`$APU_CONFIG --includes`"" else apr_addto_bugger=""`$APU_CONFIG --includes`"" for i in $apr_addto_bugger; do apr_addto_duplicate="0" for j in $APR_INCLUDES; do if test "x$i" = "x$j"; then apr_addto_duplicate="1" break fi done if test $apr_addto_duplicate = "0"; then echo " adding \"$i\" to APR_INCLUDES" APR_INCLUDES="$APR_INCLUDES $i" fi done fi APR_LA="`$APR_CONFIG --apr-la-file`" APU_LA="`$APU_CONFIG --apu-la-file`" if test "x$APR_LTFLAGS" = "x"; then echo " setting APR_LTFLAGS to \""`$APR_CONFIG --link-libtool`"\"" APR_LTFLAGS=""`$APR_CONFIG --link-libtool`"" else apr_addto_bugger=""`$APR_CONFIG --link-libtool`"" for i in $apr_addto_bugger; do apr_addto_duplicate="0" for j in $APR_LTFLAGS; do if test "x$i" = "x$j"; then apr_addto_duplicate="1" break fi done if test $apr_addto_duplicate = "0"; then echo " adding \"$i\" to APR_LTFLAGS" APR_LTFLAGS="$APR_LTFLAGS $i" fi done fi if test "x$APR_LTFLAGS" = "x"; then echo " setting APR_LTFLAGS to \""`$APU_CONFIG --link-libtool`"\"" APR_LTFLAGS=""`$APU_CONFIG --link-libtool`"" else apr_addto_bugger=""`$APU_CONFIG --link-libtool`"" for i in $apr_addto_bugger; do apr_addto_duplicate="0" for j in $APR_LTFLAGS; do if test "x$i" = "x$j"; then apr_addto_duplicate="1" break fi done if test $apr_addto_duplicate = "0"; then echo " adding \"$i\" to APR_LTFLAGS" APR_LTFLAGS="$APR_LTFLAGS $i" fi done fi if test "x$APR_LIBS" = "x"; then echo " setting APR_LIBS to \""`$APR_CONFIG --libs`"\"" APR_LIBS=""`$APR_CONFIG --libs`"" else apr_addto_bugger=""`$APR_CONFIG --libs`"" for i in $apr_addto_bugger; do apr_addto_duplicate="0" for j in $APR_LIBS; do if test "x$i" = "x$j"; then apr_addto_duplicate="1" break fi done if test $apr_addto_duplicate = "0"; then echo " adding \"$i\" to APR_LIBS" APR_LIBS="$APR_LIBS $i" fi done fi apu_avoid_libs="" if $APU_CONFIG --avoid-ldap >/dev/null 2>&1; then apu_avoid_libs="--avoid-ldap" fi if $APU_CONFIG --avoid-dbm >/dev/null 2>&1; then apu_avoid_libs="--avoid-dbm $apu_avoid_libs" fi if test "x$OS" = "xsolaris"; then APU_LIBS="`$APU_CONFIG $apu_avoid_libs --libs | $PERL -pe 's,-lexpat,,'`" else APU_LIBS="`$APU_CONFIG $apu_avoid_libs --libs`" fi if test "x$APR_LIBS" = "x"; then echo " setting APR_LIBS to \""$APU_LIBS"\"" APR_LIBS=""$APU_LIBS"" else apr_addto_bugger=""$APU_LIBS"" for i in $apr_addto_bugger; do apr_addto_duplicate="0" for j in $APR_LIBS; do if test "x$i" = "x$j"; then apr_addto_duplicate="1" break fi done if test $apr_addto_duplicate = "0"; then echo " adding \"$i\" to APR_LIBS" APR_LIBS="$APR_LIBS $i" fi done fi if test "x$APR_LDFLAGS" = "x"; then echo " setting APR_LDFLAGS to \""`$APU_CONFIG --link-ld --ldflags`"\"" APR_LDFLAGS=""`$APU_CONFIG --link-ld --ldflags`"" else apr_addto_bugger=""`$APU_CONFIG --link-ld --ldflags`"" for i in $apr_addto_bugger; do apr_addto_duplicate="0" for j in $APR_LDFLAGS; do if test "x$i" = "x$j"; then apr_addto_duplicate="1" break fi done if test $apr_addto_duplicate = "0"; then echo " adding \"$i\" to APR_LDFLAGS" APR_LDFLAGS="$APR_LDFLAGS $i" fi done fi if test "x$APR_LDFLAGS" = "x"; then echo " setting APR_LDFLAGS to \""`$APR_CONFIG --link-ld --ldflags`"\"" APR_LDFLAGS=""`$APR_CONFIG --link-ld --ldflags`"" else apr_addto_bugger=""`$APR_CONFIG --link-ld --ldflags`"" for i in $apr_addto_bugger; do apr_addto_duplicate="0" for j in $APR_LDFLAGS; do if test "x$i" = "x$j"; then apr_addto_duplicate="1" break fi done if test $apr_addto_duplicate = "0"; then echo " adding \"$i\" to APR_LDFLAGS" APR_LDFLAGS="$APR_LDFLAGS $i" fi done fi if test -n "$EXPAT_DIR"; then if test "x$APR_INCLUDES" = "x"; then echo " setting APR_INCLUDES to \""-I$EXPAT_DIR/include"\"" APR_INCLUDES=""-I$EXPAT_DIR/include"" else apr_addto_bugger=""-I$EXPAT_DIR/include"" for i in $apr_addto_bugger; do apr_addto_duplicate="0" for j in $APR_INCLUDES; do if test "x$i" = "x$j"; then apr_addto_duplicate="1" break fi done if test $apr_addto_duplicate = "0"; then echo " adding \"$i\" to APR_INCLUDES" APR_INCLUDES="$APR_INCLUDES $i" fi done fi if test "x$APR_LTFLAGS" = "x"; then echo " setting APR_LTFLAGS to \""-L$EXPAT_DIR/lib"\"" APR_LTFLAGS=""-L$EXPAT_DIR/lib"" else apr_addto_bugger=""-L$EXPAT_DIR/lib"" for i in $apr_addto_bugger; do apr_addto_duplicate="0" for j in $APR_LTFLAGS; do if test "x$i" = "x$j"; then apr_addto_duplicate="1" break fi done if test $apr_addto_duplicate = "0"; then echo " adding \"$i\" to APR_LTFLAGS" APR_LTFLAGS="$APR_LTFLAGS $i" fi done fi fi abs_srcdir=`(cd $srcdir && pwd)` abs_builddir=`pwd` top_builddir="$abs_srcdir" if test "$abs_builddir" != "$abs_srcdir"; then USE_VPATH=1 fi if test "x$USE_MAINTAINER_MODE" != "xno"; then if test "x$CFLAGS" = "x"; then echo " setting CFLAGS to \" -fno-strict-aliasing -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Wwrite-strings -Wcast-qual -Wfloat-equal -Wshadow -Wpointer-arith -Wbad-function-cast -Wsign-compare -Waggregate-return -Wmissing-noreturn -Wmissing-format-attribute -Wpacked -Wredundant-decls -Wnested-externs -Wdisabled-optimization -Wno-long-long -Wendif-labels -Wcast-align -Wpacked \"" CFLAGS=" -fno-strict-aliasing -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Wwrite-strings -Wcast-qual -Wfloat-equal -Wshadow -Wpointer-arith -Wbad-function-cast -Wsign-compare -Waggregate-return -Wmissing-noreturn -Wmissing-format-attribute -Wpacked -Wredundant-decls -Wnested-externs -Wdisabled-optimization -Wno-long-long -Wendif-labels -Wcast-align -Wpacked " else apr_addto_bugger=" -fno-strict-aliasing -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Wwrite-strings -Wcast-qual -Wfloat-equal -Wshadow -Wpointer-arith -Wbad-function-cast -Wsign-compare -Waggregate-return -Wmissing-noreturn -Wmissing-format-attribute -Wpacked -Wredundant-decls -Wnested-externs -Wdisabled-optimization -Wno-long-long -Wendif-labels -Wcast-align -Wpacked " for i in $apr_addto_bugger; do apr_addto_duplicate="0" for j in $CFLAGS; do if test "x$i" = "x$j"; then apr_addto_duplicate="1" break fi done if test $apr_addto_duplicate = "0"; then echo " adding \"$i\" to CFLAGS" CFLAGS="$CFLAGS $i" fi done fi # -Wdeclaration-after-statement is only supported on gcc 3.4+ fi if test "x$CPPFLAGS" = "x"; then echo " setting CPPFLAGS to \""`$APR_CONFIG --cppflags`"\"" CPPFLAGS=""`$APR_CONFIG --cppflags`"" else apr_addto_bugger=""`$APR_CONFIG --cppflags`"" for i in $apr_addto_bugger; do apr_addto_duplicate="0" for j in $CPPFLAGS; do if test "x$i" = "x$j"; then apr_addto_duplicate="1" break fi done if test $apr_addto_duplicate = "0"; then echo " adding \"$i\" to CPPFLAGS" CPPFLAGS="$CPPFLAGS $i" fi done fi get_version="$SHELL $abs_srcdir/build/get-version.sh" version_hdr="$abs_srcdir/include/apreq_version.h" # set version data APREQ_CONFIG="$top_builddir/apreq2-config" APREQ_MAJOR_VERSION=`$get_version major $version_hdr APREQ` APREQ_MINOR_VERSION=`$get_version minor $version_hdr APREQ` APREQ_PATCH_VERSION=`$get_version patch $version_hdr APREQ` APREQ_DOTTED_VERSION=`$get_version all $version_hdr APREQ` # XXX: APR_MAJOR_VERSION doesn't yet work for static builds APREQ_LIBTOOL_CURRENT=`expr $APREQ_MAJOR_VERSION + $APREQ_MINOR_VERSION + $APR_MAJOR_VERSION` APREQ_LIBTOOL_REVISION=$APREQ_PATCH_VERSION APREQ_LIBTOOL_AGE=$APREQ_MINOR_VERSION APREQ_LIBTOOL_VERSION="$APREQ_LIBTOOL_CURRENT:$APREQ_LIBTOOL_REVISION:$APREQ_LIBTOOL_AGE" APREQ_LIBNAME="apreq$APREQ_MAJOR_VERSION" echo "lib$APREQ_LIBNAME Version: $APREQ_DOTTED_VERSION" ## Apparently FC5 doesn't like bsdtar ## which is the default /usr/bin/tar on FreeBSD ## by default /usr/ports/archivers/gtar installs here if test "x$OS" = 'xfreebsd'; then TAR='/usr/local/bin/gtar' else TAR='tar' fi if test "x$OS" = "xsolaris"; then $PERL -pi -e 's,^shrext=,shrext_cmds=,' libtool fi ac_config_files="$ac_config_files Makefile include/Makefile library/Makefile library/t/Makefile module/Makefile module/apache2/Makefile glue/Makefile" ac_config_files="$ac_config_files build/doxygen.conf include/groups.dox" ac_config_files="$ac_config_files apreq2-config" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { echo "$as_me:$LINENO: updating cache $cache_file" >&5 echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${ENABLE_PROFILE_TRUE}" && test -z "${ENABLE_PROFILE_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"ENABLE_PROFILE\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"ENABLE_PROFILE\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${BUILD_PERL_GLUE_TRUE}" && test -z "${BUILD_PERL_GLUE_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"BUILD_PERL_GLUE\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"BUILD_PERL_GLUE\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${HAVE_APACHE_TEST_TRUE}" && test -z "${HAVE_APACHE_TEST_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"HAVE_APACHE_TEST\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"HAVE_APACHE_TEST\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${BUILD_HTTPD_TRUE}" && test -z "${BUILD_HTTPD_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"BUILD_HTTPD\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"BUILD_HTTPD\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${BUILD_APR_TRUE}" && test -z "${BUILD_APR_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"BUILD_APR\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"BUILD_APR\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${BUILD_APU_TRUE}" && test -z "${BUILD_APU_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"BUILD_APU\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"BUILD_APU\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${HAVE_APACHE1_TRUE}" && test -z "${HAVE_APACHE1_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"HAVE_APACHE1\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"HAVE_APACHE1\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) as_nl=' ' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 # Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by Apache HTTP Server Request Library $as_me 2.13, which was generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ Apache HTTP Server Request Library config.status 2.13 configured by $0, generated by GNU Autoconf 2.61, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2006 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) echo "$ac_cs_version"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header { echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 CONFIG_SHELL=$SHELL export CONFIG_SHELL exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "include/apreq_config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/apreq_config.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; "library/Makefile") CONFIG_FILES="$CONFIG_FILES library/Makefile" ;; "library/t/Makefile") CONFIG_FILES="$CONFIG_FILES library/t/Makefile" ;; "module/Makefile") CONFIG_FILES="$CONFIG_FILES module/Makefile" ;; "module/apache2/Makefile") CONFIG_FILES="$CONFIG_FILES module/apache2/Makefile" ;; "glue/Makefile") CONFIG_FILES="$CONFIG_FILES glue/Makefile" ;; "build/doxygen.conf") CONFIG_FILES="$CONFIG_FILES build/doxygen.conf" ;; "include/groups.dox") CONFIG_FILES="$CONFIG_FILES include/groups.dox" ;; "apreq2-config") CONFIG_FILES="$CONFIG_FILES apreq2-config" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # # Set up the sed scripts for CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "$CONFIG_FILES"; then _ACEOF ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF SHELL!$SHELL$ac_delim PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim PACKAGE_NAME!$PACKAGE_NAME$ac_delim PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim PACKAGE_STRING!$PACKAGE_STRING$ac_delim PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim exec_prefix!$exec_prefix$ac_delim prefix!$prefix$ac_delim program_transform_name!$program_transform_name$ac_delim bindir!$bindir$ac_delim sbindir!$sbindir$ac_delim libexecdir!$libexecdir$ac_delim datarootdir!$datarootdir$ac_delim datadir!$datadir$ac_delim sysconfdir!$sysconfdir$ac_delim sharedstatedir!$sharedstatedir$ac_delim localstatedir!$localstatedir$ac_delim includedir!$includedir$ac_delim oldincludedir!$oldincludedir$ac_delim docdir!$docdir$ac_delim infodir!$infodir$ac_delim htmldir!$htmldir$ac_delim dvidir!$dvidir$ac_delim pdfdir!$pdfdir$ac_delim psdir!$psdir$ac_delim libdir!$libdir$ac_delim localedir!$localedir$ac_delim mandir!$mandir$ac_delim DEFS!$DEFS$ac_delim ECHO_C!$ECHO_C$ac_delim ECHO_N!$ECHO_N$ac_delim ECHO_T!$ECHO_T$ac_delim LIBS!$LIBS$ac_delim build_alias!$build_alias$ac_delim host_alias!$host_alias$ac_delim target_alias!$target_alias$ac_delim INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim INSTALL_DATA!$INSTALL_DATA$ac_delim am__isrc!$am__isrc$ac_delim CYGPATH_W!$CYGPATH_W$ac_delim PACKAGE!$PACKAGE$ac_delim VERSION!$VERSION$ac_delim ACLOCAL!$ACLOCAL$ac_delim AUTOCONF!$AUTOCONF$ac_delim AUTOMAKE!$AUTOMAKE$ac_delim AUTOHEADER!$AUTOHEADER$ac_delim MAKEINFO!$MAKEINFO$ac_delim install_sh!$install_sh$ac_delim STRIP!$STRIP$ac_delim INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim mkdir_p!$mkdir_p$ac_delim AWK!$AWK$ac_delim SET_MAKE!$SET_MAKE$ac_delim am__leading_dot!$am__leading_dot$ac_delim AMTAR!$AMTAR$ac_delim am__tar!$am__tar$ac_delim am__untar!$am__untar$ac_delim CC!$CC$ac_delim CFLAGS!$CFLAGS$ac_delim LDFLAGS!$LDFLAGS$ac_delim CPPFLAGS!$CPPFLAGS$ac_delim ac_ct_CC!$ac_ct_CC$ac_delim EXEEXT!$EXEEXT$ac_delim OBJEXT!$OBJEXT$ac_delim DEPDIR!$DEPDIR$ac_delim am__include!$am__include$ac_delim am__quote!$am__quote$ac_delim AMDEP_TRUE!$AMDEP_TRUE$ac_delim AMDEP_FALSE!$AMDEP_FALSE$ac_delim AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim CCDEPMODE!$CCDEPMODE$ac_delim am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim build!$build$ac_delim build_cpu!$build_cpu$ac_delim build_vendor!$build_vendor$ac_delim build_os!$build_os$ac_delim host!$host$ac_delim host_cpu!$host_cpu$ac_delim host_vendor!$host_vendor$ac_delim host_os!$host_os$ac_delim SED!$SED$ac_delim GREP!$GREP$ac_delim EGREP!$EGREP$ac_delim LN_S!$LN_S$ac_delim ECHO!$ECHO$ac_delim AR!$AR$ac_delim RANLIB!$RANLIB$ac_delim DSYMUTIL!$DSYMUTIL$ac_delim NMEDIT!$NMEDIT$ac_delim CPP!$CPP$ac_delim CXX!$CXX$ac_delim CXXFLAGS!$CXXFLAGS$ac_delim ac_ct_CXX!$ac_ct_CXX$ac_delim CXXDEPMODE!$CXXDEPMODE$ac_delim _ACEOF if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` if test -n "$ac_eof"; then ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ac_eof=`expr $ac_eof + 1` fi cat >>$CONFIG_STATUS <<_ACEOF cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof /@[a-zA-Z_][a-zA-Z_0-9]*@/!b _ACEOF sed ' s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g s/^/s,@/; s/!/@,|#_!!_#|/ :n t n s/'"$ac_delim"'$/,g/; t s/$/\\/; p N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF CEOF$ac_eof _ACEOF ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim CXXCPP!$CXXCPP$ac_delim F77!$F77$ac_delim FFLAGS!$FFLAGS$ac_delim ac_ct_F77!$ac_ct_F77$ac_delim LIBTOOL!$LIBTOOL$ac_delim MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim MAINT!$MAINT$ac_delim ENABLE_PROFILE_TRUE!$ENABLE_PROFILE_TRUE$ac_delim ENABLE_PROFILE_FALSE!$ENABLE_PROFILE_FALSE$ac_delim BUILD_PERL_GLUE_TRUE!$BUILD_PERL_GLUE_TRUE$ac_delim BUILD_PERL_GLUE_FALSE!$BUILD_PERL_GLUE_FALSE$ac_delim HAVE_APACHE_TEST_TRUE!$HAVE_APACHE_TEST_TRUE$ac_delim HAVE_APACHE_TEST_FALSE!$HAVE_APACHE_TEST_FALSE$ac_delim BUILD_HTTPD_TRUE!$BUILD_HTTPD_TRUE$ac_delim BUILD_HTTPD_FALSE!$BUILD_HTTPD_FALSE$ac_delim BUILD_APR_TRUE!$BUILD_APR_TRUE$ac_delim BUILD_APR_FALSE!$BUILD_APR_FALSE$ac_delim BUILD_APU_TRUE!$BUILD_APU_TRUE$ac_delim BUILD_APU_FALSE!$BUILD_APU_FALSE$ac_delim HAVE_APACHE1_TRUE!$HAVE_APACHE1_TRUE$ac_delim HAVE_APACHE1_FALSE!$HAVE_APACHE1_FALSE$ac_delim APREQ_CONFIG!$APREQ_CONFIG$ac_delim APREQ_LIBNAME!$APREQ_LIBNAME$ac_delim APREQ_LIBTOOL_VERSION!$APREQ_LIBTOOL_VERSION$ac_delim APREQ_MAJOR_VERSION!$APREQ_MAJOR_VERSION$ac_delim APREQ_DOTTED_VERSION!$APREQ_DOTTED_VERSION$ac_delim APACHE2_APXS!$APACHE2_APXS$ac_delim APACHE2_SRC!$APACHE2_SRC$ac_delim APACHE2_INCLUDES!$APACHE2_INCLUDES$ac_delim APACHE2_HTTPD!$APACHE2_HTTPD$ac_delim APACHE1_APXS!$APACHE1_APXS$ac_delim APU_CONFIG!$APU_CONFIG$ac_delim APR_CONFIG!$APR_CONFIG$ac_delim APR_INCLUDES!$APR_INCLUDES$ac_delim APR_LDFLAGS!$APR_LDFLAGS$ac_delim APR_LTFLAGS!$APR_LTFLAGS$ac_delim APR_LIBS!$APR_LIBS$ac_delim APR_LA!$APR_LA$ac_delim APU_LA!$APU_LA$ac_delim PERL!$PERL$ac_delim PERL_OPTS!$PERL_OPTS$ac_delim MM_OPTS!$MM_OPTS$ac_delim TAR!$TAR$ac_delim APR_DOC_VERSION!$APR_DOC_VERSION$ac_delim APU_DOC_VERSION!$APU_DOC_VERSION$ac_delim LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 50; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` if test -n "$ac_eof"; then ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ac_eof=`expr $ac_eof + 1` fi cat >>$CONFIG_STATUS <<_ACEOF cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof /@[a-zA-Z_][a-zA-Z_0-9]*@/!b end _ACEOF sed ' s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g s/^/s,@/; s/!/@,|#_!!_#|/ :n t n s/'"$ac_delim"'$/,g/; t s/$/\\/; p N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF :end s/|#_!!_#|//g CEOF$ac_eof _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF fi # test -n "$CONFIG_FILES" for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 echo "$as_me: error: Invalid tag $ac_tag." >&2;} { (exit 1); exit 1; }; };; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac ac_file_inputs="$ac_file_inputs $ac_f" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input="Generated from "`IFS=: echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} fi case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin";; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir="$ac_dir" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= case `sed -n '/datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p ' $ac_file_inputs` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s&@configure_input@&$configure_input&;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out"; rm -f "$tmp/out";; *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; esac ;; :H) # # CONFIG_HEADER # _ACEOF # Transform confdefs.h into a sed script `conftest.defines', that # substitutes the proper values into config.h.in to produce config.h. rm -f conftest.defines conftest.tail # First, append a space to every undef/define line, to ease matching. echo 's/$/ /' >conftest.defines # Then, protect against being on the right side of a sed subst, or in # an unquoted here document, in config.status. If some macros were # called several times there might be several #defines for the same # symbol, which is useless. But do not sort them, since the last # AC_DEFINE must be honored. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* # These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where # NAME is the cpp macro being defined, VALUE is the value it is being given. # PARAMS is the parameter list in the macro definition--in most cases, it's # just an empty string. ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' ac_dB='\\)[ (].*,\\1define\\2' ac_dC=' ' ac_dD=' ,' uniq confdefs.h | sed -n ' t rset :rset s/^[ ]*#[ ]*define[ ][ ]*// t ok d :ok s/[\\&,]/\\&/g s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p ' >>conftest.defines # Remove the space that was appended to ease matching. # Then replace #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. # (The regexp can be short, since the line contains either #define or #undef.) echo 's/ $// s,^[ #]*u.*,/* & */,' >>conftest.defines # Break up conftest.defines: ac_max_sed_lines=50 # First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" # Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" # Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" # et cetera. ac_in='$ac_file_inputs' ac_out='"$tmp/out1"' ac_nxt='"$tmp/out2"' while : do # Write a here document: cat >>$CONFIG_STATUS <<_ACEOF # First, check the format of the line: cat >"\$tmp/defines.sed" <<\\CEOF /^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def /^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def b :def _ACEOF sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail grep . conftest.tail >/dev/null || break rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines conftest.tail echo "ac_result=$ac_in" >>$CONFIG_STATUS cat >>$CONFIG_STATUS <<\_ACEOF if test x"$ac_file" != x-; then echo "/* $configure_input */" >"$tmp/config.h" cat "$ac_result" >>"$tmp/config.h" if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else rm -f $ac_file mv "$tmp/config.h" $ac_file fi else echo "/* $configure_input */" cat "$ac_result" fi rm -f "$tmp/out12" # Compute $ac_file's index in $config_headers. _am_arg=$ac_file _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir=$dirpart/$fdir case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; "apreq2-config":F) chmod +x apreq2-config ;; esac done # for ac_tag { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi libapreq2-2.13/configure.ac0000644000076400017500000000223611473532340014605 0ustar issacissacdnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.53) AC_INIT(Apache HTTP Server Request Library, 2.13, apreq-dev@httpd.apache.org, libapreq2) dnl Generate config.nice script- macro must be here at the top dnl to avoid corruption of $0 and $@. APR_CONFIG_NICE(config.nice) dnl this: dnl AC_CONFIG_AUX_DIR(build) dnl causes problems on certain platforms dnl aclocal.m4:817: required file `build/ltmain.sh' not found dnl debian woody's archaic auto* tools don't set PACKAGE/VERSION correctly via dnl AC_INIT above, so we do it again here. AM_INIT_AUTOMAKE(libapreq2, 2.13) AC_PROG_MAKE_SET dnl Checks for programs. AC_PROG_CC AM_PROG_LIBTOOL AC_PROG_RANLIB AC_PROG_INSTALL AC_PROG_LN_S AM_MAINTAINER_MODE dnl Checks for header files. AM_CONFIG_HEADER(include/apreq_config.h) dnl Checks for typedefs, structures, and compiler characteristics. dnl Checks for library functions. AC_APREQ AC_CONFIG_FILES([Makefile include/Makefile library/Makefile library/t/Makefile module/Makefile module/apache2/Makefile glue/Makefile]) AC_CONFIG_FILES([build/doxygen.conf include/groups.dox]) AC_CONFIG_FILES([apreq2-config], [chmod +x apreq2-config]) AC_OUTPUT libapreq2-2.13/depcomp0000755000076400017500000004271311473532767013715 0ustar issacissac#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2007-03-29.01 # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software # Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> $depfile echo >> $depfile # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> $depfile else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # X makedepend shift cleared=no for arg in "$@"; do case $cleared in no) set ""; shift cleared=yes ;; esac case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix="`echo $object | sed 's/^.*\././'`" touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. "$@" || exit $? IFS=" " for arg do case "$arg" in "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: libapreq2-2.13/docs/apr.tag0000644000076400017500000243432611473533321014541 0ustar issacissac apr.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr_8h #define APR_INLINE group__apr__platform.html gada0f3e7bf27ea51795c2c27c20aee84 #define APR_HAS_INLINE group__apr__platform.html g1bfff486847c3fe487884bca79cb21fd #define APR_HAVE_ARPA_INET_H group__apr__platform.html ga6740450eabc6384924801d569e89742 #define APR_HAVE_CONIO_H group__apr__platform.html g24eb6d10ed0942ee4a4228df697fd5bb #define APR_HAVE_CRYPT_H group__apr__platform.html g38a75f33c3096b153d5302c0370e9e38 #define APR_HAVE_CTYPE_H group__apr__platform.html gd0fe0c5bffd8073cb57178ceb9761933 #define APR_HAVE_DIRENT_H group__apr__platform.html g87b424528fd6448c5aabc6cc61024c9a #define APR_HAVE_ERRNO_H group__apr__platform.html gbb48338e636d4184f28d8fb08f449f6b #define APR_HAVE_FCNTL_H group__apr__platform.html g40e3ceafec2098262742573bb28797cf #define APR_HAVE_IO_H group__apr__platform.html g2cf42c89ca9d5682dba7b12377342cc0 #define APR_HAVE_LIMITS_H group__apr__platform.html g449046121ca29eda9759cb2d30442e80 #define APR_HAVE_NETDB_H group__apr__platform.html gc92f65f1d27253f3af6d9714e4604550 #define APR_HAVE_NETINET_IN_H group__apr__platform.html gb7a6381062416846012d9a0676e0f35c #define APR_HAVE_NETINET_SCTP_H group__apr__platform.html g933a3c59c351de4f17cfb8601649fd91 #define APR_HAVE_NETINET_SCTP_UIO_H group__apr__platform.html g1bb6606091cafba71be8c37796d36e8a #define APR_HAVE_NETINET_TCP_H group__apr__platform.html g2cf9c403892bb0830f24e58b614b8bce #define APR_HAVE_PTHREAD_H group__apr__platform.html g4275921ca7165eb1b2a3732a40f1b4ec #define APR_HAVE_SEMAPHORE_H group__apr__platform.html g9080d52aaa134fdefc9a03275c7ac4a6 #define APR_HAVE_SIGNAL_H group__apr__platform.html g124a7e90c6c2c74fc54f995e025f694e #define APR_HAVE_STDARG_H group__apr__platform.html gece8f1d70792f3b735fd63cb2233b6a3 #define APR_HAVE_STDINT_H group__apr__platform.html g967df26603971704f396b0ec776ed86f #define APR_HAVE_STDIO_H group__apr__platform.html g3b5b55be7a0839f63e0ff1d60a3354ff #define APR_HAVE_STDLIB_H group__apr__platform.html g1c8c763f1a54be0d960e0bfa838ee0fb #define APR_HAVE_STRING_H group__apr__platform.html g0bc16ef0942f44f579dc8027d50f780a #define APR_HAVE_STRINGS_H group__apr__platform.html g9c3381ac9d13a54181f0f0db44edb9da #define APR_HAVE_SYS_IOCTL_H group__apr__platform.html ga770dc014bd3652af53e0b5007bacbba #define APR_HAVE_SYS_SENDFILE_H group__apr__platform.html gdad28590d1ed5f6417d364da8d224c32 #define APR_HAVE_SYS_SIGNAL_H group__apr__platform.html g8fcdcf3453badd12e7690ef1d3633524 #define APR_HAVE_SYS_SOCKET_H group__apr__platform.html g355cce8fb6a675d1608a249e80943cd1 #define APR_HAVE_SYS_SOCKIO_H group__apr__platform.html g66930e9c37ff249fac4f04660e0b4658 #define APR_HAVE_SYS_SYSLIMITS_H group__apr__platform.html g5f63518e601ff8db2435aac44aa1f5f1 #define APR_HAVE_SYS_TIME_H group__apr__platform.html g9c3c283b26dc4a611e0e90586940d988 #define APR_HAVE_SYS_TYPES_H group__apr__platform.html gd364bcfd0d4403388881ae74f30ae870 #define APR_HAVE_SYS_UIO_H group__apr__platform.html gbaeaf82b82e76979dfbe64a43e02b23f #define APR_HAVE_SYS_UN_H group__apr__platform.html g342802d31427d75aa8d9508fc42862f1 #define APR_HAVE_SYS_WAIT_H group__apr__platform.html g4358584279b9bef5e9befef3e70be3a0 #define APR_HAVE_TIME_H group__apr__platform.html gd8de7d46efa8bf6404fcb105cb9fec66 #define APR_HAVE_UNISTD_H group__apr__platform.html g5027a53811b56363639e832027752456 #define APR_HAVE_WINDOWS_H group__apr__platform.html g129087a39c180d855be6585c9efe2ff2 #define APR_HAVE_WINSOCK2_H group__apr__platform.html g46a930f2ecfa34bfa627a8f18532bceb #define APR_HAVE_SHMEM_MMAP_TMP group__apr__platform.html gac072bb1db885925d1d426a1650aee18 #define APR_HAVE_SHMEM_MMAP_SHM group__apr__platform.html gae95d5ab380a1519c849b3f54f53dbdb #define APR_HAVE_SHMEM_MMAP_ZERO group__apr__platform.html ge77c5864ac1e978b5cdc4613efe874b9 #define APR_HAVE_SHMEM_SHMGET_ANON group__apr__platform.html g3c0e8fc59b8891eeacac290bca9df09b #define APR_HAVE_SHMEM_SHMGET group__apr__platform.html g35d1fadddb8c1e83a5548946d169da2a #define APR_HAVE_SHMEM_MMAP_ANON group__apr__platform.html g8237055d9f5700fdccfd173da26ff614 #define APR_HAVE_SHMEM_BEOS group__apr__platform.html g158aa4bb703689e01adced53d16ae503 #define APR_USE_SHMEM_MMAP_TMP group__apr__platform.html g165e27e6100d65b6893d1c9b7e808536 #define APR_USE_SHMEM_MMAP_SHM group__apr__platform.html g38ed6a0607f8fbbe977843d84c42b02a #define APR_USE_SHMEM_MMAP_ZERO group__apr__platform.html gd75204199cfa3631263fb1f1ea8abc94 #define APR_USE_SHMEM_SHMGET_ANON group__apr__platform.html geaedd6e1272ded14f16701b96a3ad14c #define APR_USE_SHMEM_SHMGET group__apr__platform.html g04fb6b9c97e668cef00645dd05c45079 #define APR_USE_SHMEM_MMAP_ANON group__apr__platform.html g7b556f92b8b710978339dc827d2a7a22 #define APR_USE_SHMEM_BEOS group__apr__platform.html g964a36a0d15537eb89733bd92e1159cd #define APR_USE_FLOCK_SERIALIZE group__apr__platform.html g627ab3fb1738314c7e50616e7e4e9370 #define APR_USE_SYSVSEM_SERIALIZE group__apr__platform.html g91ab4154618c08a76cc688ec3f384a27 #define APR_USE_POSIXSEM_SERIALIZE group__apr__platform.html gb41840f9559a2eda0aed18e24911d4fa #define APR_USE_FCNTL_SERIALIZE group__apr__platform.html g66b87d9b0c7e5b97b8fb21f55a0714d7 #define APR_USE_PROC_PTHREAD_SERIALIZE group__apr__platform.html g2738f508b5926ec10a966d2bdb348452 #define APR_USE_PTHREAD_SERIALIZE group__apr__platform.html g28fb90a0db4bd6c6f677b269fc743cda #define APR_HAS_FLOCK_SERIALIZE group__apr__platform.html g3cdde1dc287da276eb56d7c5ed351713 #define APR_HAS_SYSVSEM_SERIALIZE group__apr__platform.html g3b4f7591d97f21818b51b793752fa5fe #define APR_HAS_POSIXSEM_SERIALIZE group__apr__platform.html g100a44703cbec87774ad3ba78ce4372a #define APR_HAS_FCNTL_SERIALIZE group__apr__platform.html g372220e70e4da519ebcaaf8476525227 #define APR_HAS_PROC_PTHREAD_SERIALIZE group__apr__platform.html gbc09d4599769b9cef0e972b0050c9e11 #define APR_PROCESS_LOCK_IS_GLOBAL group__apr__platform.html g2faf50198d02b5f6e21c32429ca1c5b4 #define APR_HAVE_CORKABLE_TCP group__apr__platform.html gb841a4b1a92684a089fbab9e7bce737a #define APR_HAVE_GETRLIMIT group__apr__platform.html g58025dd20776cbc5a5e7a18f1ac6d5ad #define APR_HAVE_IN_ADDR group__apr__platform.html g2713eb83fc527f0b262b58c0c449cdcb #define APR_HAVE_INET_ADDR group__apr__platform.html g0c38cccb121e483045a2564bb1ae61ec #define APR_HAVE_INET_NETWORK group__apr__platform.html gadacfca3c1cbae0447c1b4d4ea499d57 #define APR_HAVE_IPV6 group__apr__platform.html gb42a2abcd9e58a79b4bf40e8f02e57a2 #define APR_HAVE_MEMMOVE group__apr__platform.html g0aff7b8d78dc6cea94892a3738bc0edf #define APR_HAVE_SETRLIMIT group__apr__platform.html g4a858c53da127087a9bef6105531ce54 #define APR_HAVE_SIGACTION group__apr__platform.html g2ed59eb76fdfc4d332a1ef5583206f05 #define APR_HAVE_SIGSUSPEND group__apr__platform.html g661ccf871e31f9e8e4adc75dbfd67951 #define APR_HAVE_SIGWAIT group__apr__platform.html g0117237934a6095a050a9d39ff152a26 #define APR_HAVE_SA_STORAGE group__apr__platform.html g57c4c6c8a22aeef21db29093f2f648f9 #define APR_HAVE_STRCASECMP group__apr__platform.html g4da5b6343c5b896efb3695c94f8dd374 #define APR_HAVE_STRDUP group__apr__platform.html g73cf943f6399274e71979e902b3030a0 #define APR_HAVE_STRICMP group__apr__platform.html g07a4215d05bb012f8ff9c4c681b2f9a3 #define APR_HAVE_STRNCASECMP group__apr__platform.html g8f45d52206b5d6ee37dc05e53d9bd93c #define APR_HAVE_STRNICMP group__apr__platform.html gdc5209ed6b80ac6734ce2a13a3a2273d #define APR_HAVE_STRSTR group__apr__platform.html g2850a7c280e08a629d2b0bc2eeb97b41 #define APR_HAVE_MEMCHR group__apr__platform.html g510e98c8dd8ef45a6c902b8daaedc3a4 #define APR_HAVE_STRUCT_RLIMIT group__apr__platform.html g2519340ecb3c313c81d36d70335430f9 #define APR_HAVE_UNION_SEMUN group__apr__platform.html g40fd92f709fa181dee59734f4564ead1 #define APR_HAVE_SCTP group__apr__platform.html g06b60866b89f9881de1022d193a7f126 #define APR_HAVE_IOVEC group__apr__platform.html gfb25c8af133971c391c18193e67a5f4f #define APR_HAS_SHARED_MEMORY group__apr__platform.html g88684cc5f8a23bc2cd6a4b63e5943e05 #define APR_HAS_THREADS group__apr__platform.html g8f98cbf61cd2ac1fada71fe486b04a34 #define APR_HAS_SENDFILE group__apr__platform.html g653f9e26ef4064c7daaad1bb126b5d1f #define APR_HAS_MMAP group__apr__platform.html g4f63ee64cebd015823f922c7ff98eadf #define APR_HAS_FORK group__apr__platform.html g3261ef06837fa5dc1a0164f7b0f16fab #define APR_HAS_RANDOM group__apr__platform.html g1a277e1905ab841d2979eff95816f8fb #define APR_HAS_OTHER_CHILD group__apr__platform.html g082384ec95907197e41f546570e06a69 #define APR_HAS_DSO group__apr__platform.html ge41e3d3c78f6937ea2de78b03629494a #define APR_HAS_SO_ACCEPTFILTER group__apr__platform.html ga6797fde63363c83c54c97a2a873e84d #define APR_HAS_UNICODE_FS group__apr__platform.html ge1e6a359fe305ed4ede275f404e61cfe #define APR_HAS_PROC_INVOKED group__apr__platform.html gcd61f2c191c71203833599e8caee3e79 #define APR_HAS_USER group__apr__platform.html g9d8d5646ade1d3d29e456d8df29a656a #define APR_HAS_LARGE_FILES group__apr__platform.html gb5019720a44a0a412b053bd4c8275ac0 #define APR_HAS_XTHREAD_FILES group__apr__platform.html g98aef4781225d1713d088283f4abd8f2 #define APR_HAS_OS_UUID group__apr__platform.html ge5e245b691c1f1765e547480de321731 #define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD group__apr__platform.html g0108ca8b595e62174e8b42cce0d063f5 #define APR_FILES_AS_SOCKETS group__apr__platform.html gce899f1ccb69c00ae7c65212ca5890b1 #define APR_CHARSET_EBCDIC group__apr__platform.html g8c71221bae49df0b88a0f725e96c681f #define APR_TCP_NOPUSH_FLAG group__apr__platform.html g6e74a453e90a6495a981f5f312ec6beb #define APR_TCP_NODELAY_INHERITED group__apr__platform.html g22df092ebdce7f9f8c6611d974a4ae82 #define APR_O_NONBLOCK_INHERITED group__apr__platform.html gc6a178e9f749311c8f3a98da3dfd321d #define APR_SIZEOF_VOIDP group__apr__platform.html ga7a2a1de7949f09e29edae60b0d4c27f #define APR_IS_BIGENDIAN group__apr__platform.html gbf5174c5d522e1a149cbb38a4310743f #define APR_INT64_C group__apr__platform.html gae749817bb595cd5dcb9c17c119ddb13 (val) #define APR_UINT64_C group__apr__platform.html gede133b7384b6a7a08c51cf1fa9c4001 (val) #define APR_INT16_MIN group__apr__platform.html g93b69f6b2d426b30c991a74f55be5308 #define APR_INT16_MAX group__apr__platform.html gc4180108ae7cfe8b7f636183368c89c5 #define APR_UINT16_MAX group__apr__platform.html g2b7a0eb7506ac0bfc4d711929f9a3a48 #define APR_INT32_MIN group__apr__platform.html ga99bd633c3478131fa672559601a76e7 #define APR_INT32_MAX group__apr__platform.html g0966ef0d235765d9fe1b9900fbe04faa #define APR_UINT32_MAX group__apr__platform.html g239c26656c361f627f7db619997abaac #define APR_INT64_MIN group__apr__platform.html gf371ae92dbf0fed20801cf279cd85f1a #define APR_INT64_MAX group__apr__platform.html g3b25669924dcfa853cd6ea3395c8717f #define APR_UINT64_MAX group__apr__platform.html g2d20379176b15b8b0598992df3def796 #define APR_SIZE_MAX group__apr__platform.html gb5865d64b134a3924014837dd44627a7 #define APR_BEGIN_DECLS group__apr__platform.html ga046c9c51a1af394db3a34dec1972630 #define APR_END_DECLS group__apr__platform.html g32d22bd9e118350c750a9c9c05bdeef8 #define APR_THREAD_FUNC group__apr__platform.html gde8f829f9bd98fd4386894acf72edd7c #define APR_DECLARE group__apr__platform.html gd7b91b811a172bfa802603c2fb688f98 (type) #define APR_DECLARE_NONSTD group__apr__platform.html g3ad5e45fabbda0ec5f106c334f1a0ae5 (type) #define APR_DECLARE_DATA group__apr__platform.html g16a1a3d65c57ce052fffb63190b1cadc #define APR_SSIZE_T_FMT group__apr__platform.html gbac6108769f9b7deded82e73f3cd4060 #define APR_SIZE_T_FMT group__apr__platform.html g86928aa34fa77f8e7855d69050e3a27a #define APR_OFF_T_FMT group__apr__platform.html gd71d0d5a325d1aedeb6328d6bdacac76 #define APR_PID_T_FMT group__apr__platform.html g6c8e5aeab20eeaed373e3dd65cd33689 #define APR_INT64_T_FMT group__apr__platform.html g41cc6dfe3d69cd66cffc8aae4b59bd08 #define APR_UINT64_T_FMT group__apr__platform.html g7fc21e56e167a47d7478600dee7ab502 #define APR_UINT64_T_HEX_FMT group__apr__platform.html g528bc9f3c6f3500b35e97c4b25566b48 #define APR_PROC_MUTEX_IS_GLOBAL group__apr__platform.html g90ebe3e3537fdff1e66c6baf4b560de8 #define APR_EOL_STR group__apr__platform.html g20953ff75ca59692aac949acfdaa25f6 #define apr_wait_t group__apr__platform.html g13fae72fec73474a6b35ed86b9104bf5 #define WEXITSTATUS group__apr__platform.html g77f17ed4771a558a0f16e5f3aecee222 (status) #define WTERMSIG group__apr__platform.html g94ec02a12424092a8391069adcd2ff73 (status) #define APR_DSOPATH group__apr__platform.html g2eb8121bd28ad578c3cbca3a68f6d823 unsigned char apr_byte_t group__apr__platform.html gdcfa334915b4605a0052cb4ca542eb3a short apr_int16_t group__apr__platform.html g43c359f64f6c84d8af869539e0737df4 unsigned short apr_uint16_t group__apr__platform.html g3fb87c977e28a526d872d1081411b129 int apr_int32_t group__apr__platform.html g21ef1e35fd3ff9be386f3cb20164ff02 unsigned int apr_uint32_t group__apr__platform.html g558548a135d8a816c4787250744ea147 long long apr_int64_t group__apr__platform.html g616cbaaadee33420d47071209fc30052 unsigned long long apr_uint64_t group__apr__platform.html g1a3eadd69cfefe46e764bd7e4ff0d9ee size_t apr_size_t group__apr__platform.html gaa72b2253f6f3032cefea5712a27540e ssize_t apr_ssize_t group__apr__platform.html g215ebb88932bee220b766263ebbfe6fa off64_t apr_off_t group__apr__platform.html g5e189bcae807cf93466aa5c905726edd socklen_t apr_socklen_t group__apr__platform.html gb613b0701b7a8b0ccd1a3c157a800f27 unsigned long apr_ino_t group__apr__platform.html gf2b362780bafb83b0892e8319ea32ff8 apr_uint32_t apr_uintptr_t group__apr__platform.html g28944d75286582858fc071aaad892129 apr_allocator.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__allocator_8h apr.h apr_errno.h apr_want.h apr_pools.h apr_thread_mutex.h apr_memnode_t #define APR_WANT_MEMFUNC apr__allocator_8h.html 26faf43e3f61783d8b7aa928c0a41a11 #define APR_MEMNODE_T_SIZE group__apr__allocator.html gf382851817012929f4e2458b43f4482c #define APR_ALLOCATOR_MAX_FREE_UNLIMITED group__apr__allocator.html g54f32b19d8dad59bc6364a7a6b8ebec9 struct apr_allocator_t apr_allocator_t group__apr__allocator.html g1ceabfd30fcfc455e47d052d2a24244b struct apr_memnode_t apr_memnode_t group__apr__allocator.html g3b6437036dfcdffbf87ad4677c818211 apr_status_t apr_allocator_create group__apr__allocator.html gf834f409a34b7f8656c045cff02fd953 (apr_allocator_t **allocator) void apr_allocator_destroy group__apr__allocator.html g704529f6b26279ad1c48d5e8372d859c (apr_allocator_t *allocator) apr_memnode_t * apr_allocator_alloc group__apr__allocator.html g7452b0837c2148bd63109f89bbc0c3db (apr_allocator_t *allocator, apr_size_t size) void apr_allocator_free group__apr__allocator.html g124e48339838213fd5e160a4125cb7e8 (apr_allocator_t *allocator, apr_memnode_t *memnode) void apr_allocator_owner_set group__apr__allocator.html gdf38bbec37c29c24388e95b1c9acad28 (apr_allocator_t *allocator, apr_pool_t *pool) apr_pool_t * apr_allocator_owner_get group__apr__allocator.html g3cfe48c8717de6495480ce1479d262f1 (apr_allocator_t *allocator) void apr_allocator_max_free_set group__apr__allocator.html g1d45cb6dbe69ba25dee0ec5f4e031d60 (apr_allocator_t *allocator, apr_size_t size) void apr_allocator_mutex_set group__apr__allocator.html gb803d74f56683004f7ec384ced210dd5 (apr_allocator_t *allocator, apr_thread_mutex_t *mutex) apr_thread_mutex_t * apr_allocator_mutex_get group__apr__allocator.html g38599aa9f1330846a2d2b25ec5c8d9c9 (apr_allocator_t *allocator) apr_atomic.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__atomic_8h apr.h apr_pools.h apr_status_t apr_atomic_init group__apr__atomic.html ga89b4022de39ca4d1c2ae6715e888e97 (apr_pool_t *p) apr_uint32_t apr_atomic_read32 group__apr__atomic.html gfba4de90e113d26536cff48418689771 (volatile apr_uint32_t *mem) void apr_atomic_set32 group__apr__atomic.html gc689de9df18c093f66959227359328bb (volatile apr_uint32_t *mem, apr_uint32_t val) apr_uint32_t apr_atomic_add32 group__apr__atomic.html g3ef16e13b679710fafd5196713e17433 (volatile apr_uint32_t *mem, apr_uint32_t val) void apr_atomic_sub32 group__apr__atomic.html g4603396650e844bd987f01358ccb4df1 (volatile apr_uint32_t *mem, apr_uint32_t val) apr_uint32_t apr_atomic_inc32 group__apr__atomic.html g4af33da5aa6493ec321af14bedfc47a9 (volatile apr_uint32_t *mem) int apr_atomic_dec32 group__apr__atomic.html g7a8d16335fdcd27f2baca90df35ad300 (volatile apr_uint32_t *mem) apr_uint32_t apr_atomic_cas32 group__apr__atomic.html ge45c529f14f8489102382bd3fd4cce22 (volatile apr_uint32_t *mem, apr_uint32_t with, apr_uint32_t cmp) apr_uint32_t apr_atomic_xchg32 group__apr__atomic.html g50850e462d65e0409d5a93a6b4ec26c6 (volatile apr_uint32_t *mem, apr_uint32_t val) void * apr_atomic_casptr group__apr__atomic.html gfdd02b41cc39ade873daa2734597b0fa (volatile void **mem, void *with, const void *cmp) void * apr_atomic_xchgptr group__apr__atomic.html gab4c1c5b8be70ded06dd31a1a4f65bf6 (volatile void **mem, void *with) apr_dso.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__dso_8h apr.h apr_pools.h apr_errno.h struct apr_dso_handle_t apr_dso_handle_t group__apr__dso.html g85e7e28490d026aeed78bd78e9933472 void * apr_dso_handle_sym_t group__apr__dso.html gf1aa0a039e8003586cfdfbc4ac57e775 apr_status_t apr_dso_load group__apr__dso.html gedc8609c2bb76e5c43f2df2281a9d8b6 (apr_dso_handle_t **res_handle, const char *path, apr_pool_t *ctx) apr_status_t apr_dso_unload group__apr__dso.html g4c7b1b4e98a5d23c56182ece047fbb7b (apr_dso_handle_t *handle) apr_status_t apr_dso_sym group__apr__dso.html ge84cd7041976787d73a9558e3393b97c (apr_dso_handle_sym_t *ressym, apr_dso_handle_t *handle, const char *symname) const char * apr_dso_error group__apr__dso.html gfa34fc75e1e9b8856385d3b18cfac05c (apr_dso_handle_t *dso, char *buf, apr_size_t bufsize) apr_env.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__env_8h apr_errno.h apr_pools.h apr_status_t apr_env_get group__apr__env.html gda7cd6ccada789a3738f8fc6334da809 (char **value, const char *envvar, apr_pool_t *pool) apr_status_t apr_env_set group__apr__env.html ge11f733a639393a35e82c795f4ecd470 (const char *envvar, const char *value, apr_pool_t *pool) apr_status_t apr_env_delete group__apr__env.html g2bfac0686199b2fee97a7638df7cbfdc (const char *envvar, apr_pool_t *pool) apr_errno.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__errno_8h apr.h #define APR_FROM_OS_ERROR group__apr__errno.html g2096daff578ef301e060b80c7a4525bf (e) #define APR_TO_OS_ERROR group__apr__errno.html g2385cae04b04afbdcb65f1a45c4d8506 (e) #define APR_OS_START_ERROR group__apr__errno.html g191894048b7bd0cca3cf0bdff1eb695b #define APR_OS_ERRSPACE_SIZE group__apr__errno.html gdb8d97e6836ccdc57b43b6119a5acccf #define APR_UTIL_ERRSPACE_SIZE group__apr__errno.html gef5e79630739f24d1512d0d044c2bae7 #define APR_OS_START_STATUS group__apr__errno.html g450e1a5734732e092ddaa5b67414f69b #define APR_UTIL_START_STATUS group__apr__errno.html gdf26297a72afa0ea224e7097fe59a1cd #define APR_OS_START_USERERR group__apr__errno.html gcd35b2de1e38a1fa4717e38d5e153571 #define APR_OS_START_USEERR group__apr__errno.html g803b8badf8695bdfa4fbcf4d330371f0 #define APR_OS_START_CANONERR group__apr__errno.html g7bca957c11b80b31cb54b0d2cbe9e025 #define APR_OS_START_EAIERR group__apr__errno.html g2d04991cb57c67a896e22125a1f22b49 #define APR_OS_START_SYSERR group__apr__errno.html gd70a5cad6862a9abcc254d35e827ac8b #define APR_SUCCESS group__apr__errno.html g9ee311b7bf1c691dc521d721339ee2a6 #define APR_ENOSTAT group___a_p_r___error.html g7995805cf68be1fb16f684c544e45fbe #define APR_ENOPOOL group___a_p_r___error.html ga8461873202e5e0b4c0ea261e05b07a9 #define APR_EBADDATE group___a_p_r___error.html g7911720c540a929cc08a2c25e606b56e #define APR_EINVALSOCK group___a_p_r___error.html g548032b79ce0671d9986db0654858812 #define APR_ENOPROC group___a_p_r___error.html g18aa6d4ebaefda39478649c20bbeb9df #define APR_ENOTIME group___a_p_r___error.html g7acfb436774a21ae93ff5c1b89e7c4f5 #define APR_ENODIR group___a_p_r___error.html g9a8077e85b6241c1e91b69548395fc09 #define APR_ENOLOCK group___a_p_r___error.html g9c411624c42f7562a5c6c3461bdcb0ec #define APR_ENOPOLL group___a_p_r___error.html geff8d4ed7bf9b99cbe62a3e7068e85b7 #define APR_ENOSOCKET group___a_p_r___error.html g99e125e203a1d44f12bd88b41696716d #define APR_ENOTHREAD group___a_p_r___error.html g7b43e1e075ff031e142aa809295ee441 #define APR_ENOTHDKEY group___a_p_r___error.html g29faf801fac647a14360e7493f7fd74e #define APR_EGENERAL group___a_p_r___error.html g18f5678bea0c2c704a2b6a186c9e158b #define APR_ENOSHMAVAIL group___a_p_r___error.html g67516f4e87197490333480a8bbc78725 #define APR_EBADIP group___a_p_r___error.html g96180fb8075ae0150bfed50c2e7f7a59 #define APR_EBADMASK group___a_p_r___error.html g5249b5edc27466f6b60b3dfa1541ba31 #define APR_EDSOOPEN group___a_p_r___error.html gc96fbde76282364e8c482d6f23bc61bb #define APR_EABSOLUTE group___a_p_r___error.html gfd1ffc5bf2bf215ad048780408913d0e #define APR_ERELATIVE group___a_p_r___error.html ge4688dfa866265b9ec3623689c23923b #define APR_EINCOMPLETE group___a_p_r___error.html gb4357bcbdc2922183e0594865b59ce58 #define APR_EABOVEROOT group___a_p_r___error.html g4828cc04f97dc7bed691456adf7c073e #define APR_EBADPATH group___a_p_r___error.html g1731292eb3e3cdc801d3bf0b09cd8da7 #define APR_EPATHWILD group___a_p_r___error.html g01d0fb965051103b5c8f15a43ad2c767 #define APR_ESYMNOTFOUND group___a_p_r___error.html g8d96410fc32408160e1e85e2e96402fa #define APR_EPROC_UNKNOWN group___a_p_r___error.html g01b21dc62b410707f44641d3cea3e6ed #define APR_ENOTENOUGHENTROPY group___a_p_r___error.html gaee9e4e763844197e3750bb66ff75cd0 #define APR_STATUS_IS_ENOSTAT group___a_p_r___s_t_a_t_u_s___i_s.html g1f0d21900aa879ca4866b1bf846cfd0d (s) #define APR_STATUS_IS_ENOPOOL group___a_p_r___s_t_a_t_u_s___i_s.html g71f149437af305f0a0cabde2cc3f3b19 (s) #define APR_STATUS_IS_EBADDATE group___a_p_r___s_t_a_t_u_s___i_s.html gf1313bed3538d6d57995bca164ebac20 (s) #define APR_STATUS_IS_EINVALSOCK group___a_p_r___s_t_a_t_u_s___i_s.html g7fcc752663660de85fa046b2de014b97 (s) #define APR_STATUS_IS_ENOPROC group___a_p_r___s_t_a_t_u_s___i_s.html g566f4c9b9db8a0c31199a938bdc4e38a (s) #define APR_STATUS_IS_ENOTIME group___a_p_r___s_t_a_t_u_s___i_s.html g65cb54d0b5902784037626841e26e709 (s) #define APR_STATUS_IS_ENODIR group___a_p_r___s_t_a_t_u_s___i_s.html g666c0bcfb97d26df7e7e360041d93fc6 (s) #define APR_STATUS_IS_ENOLOCK group___a_p_r___s_t_a_t_u_s___i_s.html gced66cdb08529210dbf2f6bcbba99258 (s) #define APR_STATUS_IS_ENOPOLL group___a_p_r___s_t_a_t_u_s___i_s.html g590bc2090fe120d142853dec27eaf9e8 (s) #define APR_STATUS_IS_ENOSOCKET group___a_p_r___s_t_a_t_u_s___i_s.html ge415d3119f7b13edc8af627a5e3f440b (s) #define APR_STATUS_IS_ENOTHREAD group___a_p_r___s_t_a_t_u_s___i_s.html gf33e51e4df639e2b93c99a2fa8b5c7e7 (s) #define APR_STATUS_IS_ENOTHDKEY group___a_p_r___s_t_a_t_u_s___i_s.html g782b37d892214ee60911062791871ae2 (s) #define APR_STATUS_IS_EGENERAL group___a_p_r___s_t_a_t_u_s___i_s.html gb015701a084807912b3c0464c6badf1a (s) #define APR_STATUS_IS_ENOSHMAVAIL group___a_p_r___s_t_a_t_u_s___i_s.html g99af86378a3ac8eb5a59f1acffec6440 (s) #define APR_STATUS_IS_EBADIP group___a_p_r___s_t_a_t_u_s___i_s.html g02d9309a113e07050308af66e955d600 (s) #define APR_STATUS_IS_EBADMASK group___a_p_r___s_t_a_t_u_s___i_s.html gbec95c93d0c5996f14a94e2cc37e1904 (s) #define APR_STATUS_IS_EDSOOPEN group___a_p_r___s_t_a_t_u_s___i_s.html ge87f4877aa35535eb3546b499ef9d9f3 (s) #define APR_STATUS_IS_EABSOLUTE group___a_p_r___s_t_a_t_u_s___i_s.html ge662804298416a68e63c4f84f245d30c (s) #define APR_STATUS_IS_ERELATIVE group___a_p_r___s_t_a_t_u_s___i_s.html g7a8fca5102890e9a0bc4133ba848d52c (s) #define APR_STATUS_IS_EINCOMPLETE group___a_p_r___s_t_a_t_u_s___i_s.html ge7354f40a912dc43fe76ba2a59de0403 (s) #define APR_STATUS_IS_EABOVEROOT group___a_p_r___s_t_a_t_u_s___i_s.html ge89b8de1e40b855cf95987ce5947b442 (s) #define APR_STATUS_IS_EBADPATH group___a_p_r___s_t_a_t_u_s___i_s.html g0758d7227209e4311c843c752c0dd075 (s) #define APR_STATUS_IS_EPATHWILD group___a_p_r___s_t_a_t_u_s___i_s.html ge23aedf7ad4e6a111ffd6acf4167b00e (s) #define APR_STATUS_IS_ESYMNOTFOUND group___a_p_r___s_t_a_t_u_s___i_s.html gfab6c5fe2f9b906d533d253097a16e09 (s) #define APR_STATUS_IS_EPROC_UNKNOWN group___a_p_r___s_t_a_t_u_s___i_s.html gb1267636d1f3fe0dcb79a22b735a5010 (s) #define APR_STATUS_IS_ENOTENOUGHENTROPY group___a_p_r___s_t_a_t_u_s___i_s.html gb8b0af2df80bfb9edfc8dbcbb6bdf925 (s) #define APR_INCHILD group___a_p_r___error.html g5a2bb63099778699feeae9627474c179 #define APR_INPARENT group___a_p_r___error.html g79abc0fb43e51e0db87f90fa49745d89 #define APR_DETACH group___a_p_r___error.html gb3f8849983a52f6558016303fb4f5cff #define APR_NOTDETACH group___a_p_r___error.html g83b8407fb5de5840f51dfd2c1439987b #define APR_CHILD_DONE group___a_p_r___error.html g2a78375cab66b8c1a4e06329e0cfcaf4 #define APR_CHILD_NOTDONE group___a_p_r___error.html g00bba31c29774cce3e72a31f88610340 #define APR_TIMEUP group___a_p_r___error.html g9ac087c25ffb0d3bb4d75bee36709853 #define APR_INCOMPLETE group___a_p_r___error.html g64dff43b83bcefd3f3c751be6b864ca1 #define APR_BADCH group___a_p_r___error.html g6f3ca71069880d9fe5678687a257d616 #define APR_BADARG group___a_p_r___error.html g771bf48ab38d93355be8530f6efe4ae9 #define APR_EOF group___a_p_r___error.html g35d9dca2514c522a2840aca0f3e2ebd3 #define APR_NOTFOUND group___a_p_r___error.html g9bd83273ff02f31f71fb4dc6f29df4a9 #define APR_ANONYMOUS group___a_p_r___error.html g738a229b0c27bd96ae0173fecab251b7 #define APR_FILEBASED group___a_p_r___error.html g28a6d59b62d2698208451a9343399fbb #define APR_KEYBASED group___a_p_r___error.html gac52bebace264494fa94cdf0b4344d26 #define APR_EINIT group___a_p_r___error.html gacd087793c97a3493eafc14075775b82 #define APR_ENOTIMPL group___a_p_r___error.html g939ddb834a30bc9a5a0a329b13000161 #define APR_EMISMATCH group___a_p_r___error.html g31e65a44daba96aa6d943529e94498e7 #define APR_EBUSY group___a_p_r___error.html gb6e5bc99dbace4a91d8d0adcbd8fd66b #define APR_STATUS_IS_INCHILD group___a_p_r___s_t_a_t_u_s___i_s.html gd60d170a73ed74ec209a1b2165cacb61 (s) #define APR_STATUS_IS_INPARENT group___a_p_r___s_t_a_t_u_s___i_s.html g4471f8de6eda3a673aa1f306114c012e (s) #define APR_STATUS_IS_DETACH group___a_p_r___s_t_a_t_u_s___i_s.html g64d5d0a6bfe141a387dfdd430a38465b (s) #define APR_STATUS_IS_NOTDETACH group___a_p_r___s_t_a_t_u_s___i_s.html g3084551fdf84919e3c3db4384234521d (s) #define APR_STATUS_IS_CHILD_DONE group___a_p_r___s_t_a_t_u_s___i_s.html g1e6539dfa172cef4026105ca33b2b208 (s) #define APR_STATUS_IS_CHILD_NOTDONE group___a_p_r___s_t_a_t_u_s___i_s.html g86190a4a2c04bbbbedc2491bb93ab432 (s) #define APR_STATUS_IS_TIMEUP group___a_p_r___s_t_a_t_u_s___i_s.html g864b207719c86ac4deeba696943262d0 (s) #define APR_STATUS_IS_INCOMPLETE group___a_p_r___s_t_a_t_u_s___i_s.html g8385878e572abf0b2f78a0ab7d1bc8a5 (s) #define APR_STATUS_IS_BADCH group___a_p_r___s_t_a_t_u_s___i_s.html g20308232897ebff445dc10d0b69a0be2 (s) #define APR_STATUS_IS_BADARG group___a_p_r___s_t_a_t_u_s___i_s.html g88b31c127ad48d12353d175926913cb3 (s) #define APR_STATUS_IS_EOF group___a_p_r___s_t_a_t_u_s___i_s.html gf4232cd96b47b76aec9607b1a78e694f (s) #define APR_STATUS_IS_NOTFOUND group___a_p_r___s_t_a_t_u_s___i_s.html g51bc0a0e249f5d09dba3ed9dc02c49e5 (s) #define APR_STATUS_IS_ANONYMOUS group___a_p_r___s_t_a_t_u_s___i_s.html gbf2969f69ac131cb06178c0809abf943 (s) #define APR_STATUS_IS_FILEBASED group___a_p_r___s_t_a_t_u_s___i_s.html g7e46240d526e81f5ffbc266ca29b9f6a (s) #define APR_STATUS_IS_KEYBASED group___a_p_r___s_t_a_t_u_s___i_s.html gf43f4a40f5ab2fe196acb4e12f20b79e (s) #define APR_STATUS_IS_EINIT group___a_p_r___s_t_a_t_u_s___i_s.html geaa5fbb21b72fcbbe98b0f100d204048 (s) #define APR_STATUS_IS_ENOTIMPL group___a_p_r___s_t_a_t_u_s___i_s.html gcab882e24f5d6491777e8ef7763d02fb (s) #define APR_STATUS_IS_EMISMATCH group___a_p_r___s_t_a_t_u_s___i_s.html g7234b0d01a8e3ea8e5345f3f242df030 (s) #define APR_STATUS_IS_EBUSY group___a_p_r___s_t_a_t_u_s___i_s.html gbb92ad7b6ef304132de70e9e5cbaa896 (s) #define APR_EACCES group___a_p_r___error.html g407fc0ea7ead60f7a97fb9d70061bd41 #define APR_EEXIST group___a_p_r___error.html gfa7f353804388017a0ea71bc14f0dda5 #define APR_ENAMETOOLONG group___a_p_r___error.html g3db63b16c2b332efe441e2661f593377 #define APR_ENOENT group___a_p_r___error.html gcc26a4afe01b6cc141f839be71fddf1c #define APR_ENOTDIR group___a_p_r___error.html gcfaa73cea75d14d49cc5c81e6c494330 #define APR_ENOSPC group___a_p_r___error.html g1dfc0bbf080f17b0b9010ef967542193 #define APR_ENOMEM group___a_p_r___error.html g6a453e60000000609a95817efabebf4f #define APR_EMFILE group___a_p_r___error.html gec391eaf0bfa6aed03457ed3f796942d #define APR_ENFILE group___a_p_r___error.html gf46f59147b00c2c87d76b9eb75674456 #define APR_EBADF group___a_p_r___error.html g204df8a37a5c7fd6b2c74ea098fbac02 #define APR_EINVAL group___a_p_r___error.html ge3ffc41994444e71ce522c036ca1d9a4 #define APR_ESPIPE group___a_p_r___error.html g3be81035cd2da76fbc27c75496489359 #define APR_EAGAIN group___a_p_r___error.html g0b2a5ebb819de5ce93d326939b586578 #define APR_EINTR group___a_p_r___error.html gee1ce306c0ebf1701b34172310aa1bd5 #define APR_ENOTSOCK group___a_p_r___error.html gd456312527050c661dc19a8f17a0f0ef #define APR_ECONNREFUSED group___a_p_r___error.html g1b4d1d847bebdfc48af343bc2486ecb8 #define APR_EINPROGRESS group___a_p_r___error.html g5c311361f4f68f289c90f3cdfd77eb79 #define APR_ECONNABORTED group___a_p_r___error.html g9458da18e0ee46a5d37c9cdfdc43efd2 #define APR_ECONNRESET group___a_p_r___error.html g264bfe2056e917728e9ed060b58869c2 #define APR_ETIMEDOUT group___a_p_r___error.html g6aeccbe9accb34f0adc1cb1ab9a82a8d #define APR_EHOSTUNREACH group___a_p_r___error.html g489b0c02fa7cf33ed6d698d385661f86 #define APR_ENETUNREACH group___a_p_r___error.html gb9b7124a88817d1b69cdef059f7dc689 #define APR_EFTYPE group___a_p_r___error.html gc358701354d03c37e3f0de12ed6d9afc #define APR_EPIPE group___a_p_r___error.html ge985330e30e374714ff1742485597f5d #define APR_EXDEV group___a_p_r___error.html g0562023bd8ebe580b9bbb9f7b04d3f5d #define APR_ENOTEMPTY group___a_p_r___error.html g01d9259eccdf0576f58b89c4ad8ca4eb #define APR_EAFNOSUPPORT group___a_p_r___error.html g76b558840838bcb94a4811a8e52df7a6 #define APR_FROM_OS_ERROR group__apr__errno.html g2096daff578ef301e060b80c7a4525bf (e) #define APR_TO_OS_ERROR group__apr__errno.html g2385cae04b04afbdcb65f1a45c4d8506 (e) #define apr_get_os_error group__apr__errno.html ga76e122da00af0ce2e8c8d7ff538bdfa () #define apr_set_os_error group__apr__errno.html g9a2d9a03ad314b03a142574be6d7d8a7 (e) #define apr_get_netos_error group__apr__errno.html g66e54f155b4a80ac7df9118af9bd896a () #define apr_set_netos_error group__apr__errno.html gafc38481621653ece6f592f9c5a9a09b (e) #define APR_STATUS_IS_EACCES group___a_p_r___s_t_a_t_u_s___i_s.html g61e7a9958689dec6da6279f0cb6073ca (s) #define APR_STATUS_IS_EEXIST group___a_p_r___s_t_a_t_u_s___i_s.html g37707a0f41b084f1ce1a13575f4f21db (s) #define APR_STATUS_IS_ENAMETOOLONG group___a_p_r___s_t_a_t_u_s___i_s.html gd39fb68ea626722634f81a764b3626df (s) #define APR_STATUS_IS_ENOENT group___a_p_r___s_t_a_t_u_s___i_s.html gd15c3b9bda78a88c02466a0d405c6047 (s) #define APR_STATUS_IS_ENOTDIR group___a_p_r___s_t_a_t_u_s___i_s.html gce6923483aa351b05b8f41e0bdb1df60 (s) #define APR_STATUS_IS_ENOSPC group___a_p_r___s_t_a_t_u_s___i_s.html g5c77e7bb1de1b6ec319f2a42eb80be1e (s) #define APR_STATUS_IS_ENOMEM group___a_p_r___s_t_a_t_u_s___i_s.html g38ab0ab9f00c849f24aae626f5118fce (s) #define APR_STATUS_IS_EMFILE group___a_p_r___s_t_a_t_u_s___i_s.html ge50825e6293023c570a92d185b38e393 (s) #define APR_STATUS_IS_ENFILE group___a_p_r___s_t_a_t_u_s___i_s.html g4274ec4c91423ae54ab8a1d53991fb76 (s) #define APR_STATUS_IS_EBADF group___a_p_r___s_t_a_t_u_s___i_s.html ga843153a73806cca500287940e9f175f (s) #define APR_STATUS_IS_EINVAL group___a_p_r___s_t_a_t_u_s___i_s.html g3f620bb28c1c7f6fd3412dac2137d0fd (s) #define APR_STATUS_IS_ESPIPE group___a_p_r___s_t_a_t_u_s___i_s.html gc9b1e593377ac3b93b259f30f04a1185 (s) #define APR_STATUS_IS_EAGAIN group___a_p_r___s_t_a_t_u_s___i_s.html g9dd578bfcd76a2d997395608ae5b3a4e (s) #define APR_STATUS_IS_EINTR group___a_p_r___s_t_a_t_u_s___i_s.html g30615baf6479221e44870c620e372b5b (s) #define APR_STATUS_IS_ENOTSOCK group___a_p_r___s_t_a_t_u_s___i_s.html g7b7807755d3d6f24e9978337b9faa5a1 (s) #define APR_STATUS_IS_ECONNREFUSED group___a_p_r___s_t_a_t_u_s___i_s.html g4decf55c5cea9660a44fed0c74265ee6 (s) #define APR_STATUS_IS_EINPROGRESS group___a_p_r___s_t_a_t_u_s___i_s.html g777e9ba36fe05ac8002113a9597073ea (s) #define APR_STATUS_IS_ECONNABORTED group___a_p_r___s_t_a_t_u_s___i_s.html g528a8032b13c75fbdeb9bf7e4c0be493 (s) #define APR_STATUS_IS_ECONNRESET group___a_p_r___s_t_a_t_u_s___i_s.html g85e2cb1b4c904a9edfbc0d94203f76b6 (s) #define APR_STATUS_IS_ETIMEDOUT group___a_p_r___s_t_a_t_u_s___i_s.html g6adc2f539eabedb504294458be4f6251 (s) #define APR_STATUS_IS_EHOSTUNREACH group___a_p_r___s_t_a_t_u_s___i_s.html gd9307ff02e50296c528b79a670dc80bb (s) #define APR_STATUS_IS_ENETUNREACH group___a_p_r___s_t_a_t_u_s___i_s.html g19911958b3dd62559fb6c245ec579c27 (s) #define APR_STATUS_IS_EFTYPE group___a_p_r___s_t_a_t_u_s___i_s.html gf37f4f8f6c929728bf55b927576bdb69 (s) #define APR_STATUS_IS_EPIPE group___a_p_r___s_t_a_t_u_s___i_s.html gd1c0cf4e5619025a87c8edfc668d49f6 (s) #define APR_STATUS_IS_EXDEV group___a_p_r___s_t_a_t_u_s___i_s.html g1a11d6ff007e40f93f9db1b3c6e76617 (s) #define APR_STATUS_IS_ENOTEMPTY group___a_p_r___s_t_a_t_u_s___i_s.html g6cced4e794d3e7ed6dae3e53c337cc02 (s) #define APR_STATUS_IS_EAFNOSUPPORT group___a_p_r___s_t_a_t_u_s___i_s.html g9309aade5bd335ac5233170e8c120cb9 (s) int apr_status_t group__apr__errno.html gf76ee4543247e9fb3f3546203e590a6c char * apr_strerror group__apr__errno.html gf2edf92be162ab8fb1bbc6f22856a131 (apr_status_t statcode, char *buf, apr_size_t bufsize) apr_file_info.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__file__info_8h apr.h apr_user.h apr_pools.h apr_tables.h apr_time.h apr_errno.h apr_finfo_t #define APR_FPROT_USETID group__apr__file__permissions.html g67caebf5bbe4f3f4b6252a75e5ce066f #define APR_FPROT_UREAD group__apr__file__permissions.html gab6c4c2e7b95f4345c248c27b3f1a655 #define APR_FPROT_UWRITE group__apr__file__permissions.html g50b985779b15fbfdae0758e98ffb92af #define APR_FPROT_UEXECUTE group__apr__file__permissions.html g156e1374a4ef30e745340d8c20b36d03 #define APR_FPROT_GSETID group__apr__file__permissions.html g5fcf6746afdd4e9b8be6ceab6892a3f5 #define APR_FPROT_GREAD group__apr__file__permissions.html g5ad9b67b8008db3ffc56c3c2a65aa192 #define APR_FPROT_GWRITE group__apr__file__permissions.html gcecdc9f88b04c768150418688b786500 #define APR_FPROT_GEXECUTE group__apr__file__permissions.html gb627bef3f9ceb84bbf00906eaeb12184 #define APR_FPROT_WSTICKY group__apr__file__permissions.html g989dbea02f779a5f20a643d7e4ee9952 #define APR_FPROT_WREAD group__apr__file__permissions.html g194718630250b0f0dd4be38c86dac717 #define APR_FPROT_WWRITE group__apr__file__permissions.html g51692a9828f5b6288d89495378944260 #define APR_FPROT_WEXECUTE group__apr__file__permissions.html g760d69c09b38ddf1e0aff09362d8ce11 #define APR_FPROT_OS_DEFAULT group__apr__file__permissions.html gd3c65a67ee6eb12ecc6a33857397900b #define APR_FPROT_FILE_SOURCE_PERMS group__apr__file__permissions.html gc08d4e868c7c9532f7c97c70556663dc #define APR_USETID group__apr__file__permissions.html gfae6b531c08999345536cae5654d0d03 #define APR_UREAD group__apr__file__permissions.html g51dc87ecd94c98e97694e68d5d9620a0 #define APR_UWRITE group__apr__file__permissions.html g4faa7fdfa3bcda569dd1e23ae002c5e5 #define APR_UEXECUTE group__apr__file__permissions.html g4c08d7e798ab4022e31ed70f06f202b5 #define APR_GSETID group__apr__file__permissions.html g4e4e9bb05f2bb156b174461551c9c329 #define APR_GREAD group__apr__file__permissions.html g1bd0305f31cb3bb20a8f9db898b96eb1 #define APR_GWRITE group__apr__file__permissions.html g794c425b459aa46939f6febabbe9daef #define APR_GEXECUTE group__apr__file__permissions.html g79ce615a96a407d6c53325a2f8cdee3d #define APR_WSTICKY group__apr__file__permissions.html g824d6685d59e3efddb6ee7fdbee69c13 #define APR_WREAD group__apr__file__permissions.html g5c987d2b1ace95b4ffa7c5a322721aad #define APR_WWRITE group__apr__file__permissions.html g7aac61689e9aaa93176bdb4911f56863 #define APR_WEXECUTE group__apr__file__permissions.html g7bf4afea195c62f41aad1d3e94dcdac6 #define APR_OS_DEFAULT group__apr__file__permissions.html g8552adb50d545d5fc7faeabb4f4a388f #define APR_FILE_SOURCE_PERMS group__apr__file__permissions.html ga72c8bc4ab1bd5615bee4333d23dc16b #define APR_FINFO_LINK group__apr__file__stat.html g9b0c1d02401b845f928f836fdd3c6712 #define APR_FINFO_MTIME group__apr__file__stat.html g992ce1f4f75d519fd2a9d241c5a12515 #define APR_FINFO_CTIME group__apr__file__stat.html g98bef78baf71fa63b06352704f128bca #define APR_FINFO_ATIME group__apr__file__stat.html g17d7656d02a35ffc05afe22032a8da15 #define APR_FINFO_SIZE group__apr__file__stat.html gdf72493da450c0b1e3d279e98a973120 #define APR_FINFO_CSIZE group__apr__file__stat.html gf87a09b89935d730cb1ade80d5b6ada0 #define APR_FINFO_DEV group__apr__file__stat.html g0890d31145211f62d38dd8e444b5660a #define APR_FINFO_INODE group__apr__file__stat.html g4fee7341395912db501b40de81dbba26 #define APR_FINFO_NLINK group__apr__file__stat.html gbb2ba05b8ed45e59b1f06e1b7b4c91c2 #define APR_FINFO_TYPE group__apr__file__stat.html gd5d25f25527ee77c08bb20aae141306c #define APR_FINFO_USER group__apr__file__stat.html g599d92111a5cca379a06980025044e12 #define APR_FINFO_GROUP group__apr__file__stat.html g8420798139d34a88678498aa848803ff #define APR_FINFO_UPROT group__apr__file__stat.html gc85e4335fcf91881b11b3e8a4b224aca #define APR_FINFO_GPROT group__apr__file__stat.html gdfa294303e34528b1fcae1bc009140c1 #define APR_FINFO_WPROT group__apr__file__stat.html gb970792384fe9a805cf66983350eefdc #define APR_FINFO_ICASE group__apr__file__stat.html gc46eeba0ae0e771c6ed3cb27fd5492d8 #define APR_FINFO_NAME group__apr__file__stat.html g7fa4caf84808c11a1ec33c5c8d613e4b #define APR_FINFO_MIN group__apr__file__stat.html g341104571b05550aa923cb14898a82ef #define APR_FINFO_IDENT group__apr__file__stat.html g3ac8c8d0492291417be3d32556464108 #define APR_FINFO_OWNER group__apr__file__stat.html g27dee9407b38a459c57618098c3920b0 #define APR_FINFO_PROT group__apr__file__stat.html gd902be0636860cb3f8ad76a59abbcd7c #define APR_FINFO_NORM group__apr__file__stat.html gd3f64010d25d2fe926191804d7c99379 #define APR_FINFO_DIRENT group__apr__file__stat.html gac6679307cc735f2f0373960db96b931 #define APR_FILEPATH_NOTABOVEROOT group__apr__filepath.html gbb57ce7b23caf512d7f64b92a662ab3d #define APR_FILEPATH_SECUREROOTTEST group__apr__filepath.html g48b6cabfa91e6070c45977ba7035f328 #define APR_FILEPATH_SECUREROOT group__apr__filepath.html g6a518889311b81e1d2fc434e7d3acecd #define APR_FILEPATH_NOTRELATIVE group__apr__filepath.html g487344eb474ea4033b19c386db9aa03a #define APR_FILEPATH_NOTABSOLUTE group__apr__filepath.html gac75b8e9fd5c248b52ac36a1fd6b7f98 #define APR_FILEPATH_NATIVE group__apr__filepath.html g2d72ade2cada76d2fa8af3fe4d8fb1de #define APR_FILEPATH_TRUENAME group__apr__filepath.html gfb7dd411e9ef212a03051806cb60c9d8 #define APR_FILEPATH_ENCODING_UNKNOWN group__apr__filepath.html g26cd6345ccc38ae3ad001fd2fa885634 #define APR_FILEPATH_ENCODING_LOCALE group__apr__filepath.html gecb3193c8e36fbf58564f94b8c38b6d9 #define APR_FILEPATH_ENCODING_UTF8 group__apr__filepath.html g1c99d1644a8b49dc0be166bdc352819a struct apr_dir_t apr_dir_t group__apr__file__info.html g92ed8cf52cba2abb42cf74087aa74da8 apr_int32_t apr_fileperms_t group__apr__file__info.html g3af19c4c47007169064a70f9351bc7d8 dev_t apr_dev_t group__apr__file__info.html ge2c25c4b679613081599f776efa96c4a struct apr_finfo_t apr_finfo_t group__apr__file__stat.html g3d390fdda1d16ae462c11b2d3b18efd1 apr_filetype_e group__apr__file__info.html ge3f0ce3014337a52b39852f8bf81ca7c APR_NOFILE group__apr__file__info.html gge3f0ce3014337a52b39852f8bf81ca7ce5877c29ba5fd483edbde0c51c0ac5e9 APR_REG group__apr__file__info.html gge3f0ce3014337a52b39852f8bf81ca7c9a2849ad21618c937683c1ffe13a6257 APR_DIR group__apr__file__info.html gge3f0ce3014337a52b39852f8bf81ca7ce2ee810fa994ae64b8fcc6b68d3ae540 APR_CHR group__apr__file__info.html gge3f0ce3014337a52b39852f8bf81ca7cdb769ffbe8659cbecf7ebf376d098d37 APR_BLK group__apr__file__info.html gge3f0ce3014337a52b39852f8bf81ca7c20ea6a09a69785a7cd19fd05243c1c8d APR_PIPE group__apr__file__info.html gge3f0ce3014337a52b39852f8bf81ca7c247719668cd02286a6a0ed767c30ce77 APR_LNK group__apr__file__info.html gge3f0ce3014337a52b39852f8bf81ca7c2b55a6db64d814bf08d5a56b026a8176 APR_SOCK group__apr__file__info.html gge3f0ce3014337a52b39852f8bf81ca7cdd5d86c1e616fe159a7ec04e0ddc70db APR_UNKFILE group__apr__file__info.html gge3f0ce3014337a52b39852f8bf81ca7c3347d2110d62ce464ddf1ae38759e6b0 apr_status_t apr_stat group__apr__file__stat.html gfb0f4a4fa4545c155e20ddd8f2001c1a (apr_finfo_t *finfo, const char *fname, apr_int32_t wanted, apr_pool_t *pool) apr_status_t apr_dir_open group__apr__dir.html g796002db3e3c7b7c9d5632efbcd4329c (apr_dir_t **new_dir, const char *dirname, apr_pool_t *pool) apr_status_t apr_dir_close group__apr__dir.html g57fef00ccea03e9244f6fa21da4d3359 (apr_dir_t *thedir) apr_status_t apr_dir_read group__apr__dir.html g3e4ee253e0c712160bee10bfb9c8e4a8 (apr_finfo_t *finfo, apr_int32_t wanted, apr_dir_t *thedir) apr_status_t apr_dir_rewind group__apr__dir.html gb9b9f23e76128144d3fb953cabea6290 (apr_dir_t *thedir) apr_status_t apr_filepath_root group__apr__filepath.html g1eacdd5ed069faa137bde014fa50494d (const char **rootpath, const char **filepath, apr_int32_t flags, apr_pool_t *p) apr_status_t apr_filepath_merge group__apr__filepath.html ge89fd67108f10dc5044b6d062dde0138 (char **newpath, const char *rootpath, const char *addpath, apr_int32_t flags, apr_pool_t *p) apr_status_t apr_filepath_list_split group__apr__filepath.html gf259849de62ac172dde7dcbe73421500 (apr_array_header_t **pathelts, const char *liststr, apr_pool_t *p) apr_status_t apr_filepath_list_merge group__apr__filepath.html g8316896ab8e3901f9711d9d4cc89b373 (char **liststr, apr_array_header_t *pathelts, apr_pool_t *p) apr_status_t apr_filepath_get group__apr__filepath.html gac7c26321fd60d7304326fe531639507 (char **path, apr_int32_t flags, apr_pool_t *p) apr_status_t apr_filepath_set group__apr__filepath.html g9773589b65b7f0b7d5b59d427fd0eb93 (const char *path, apr_pool_t *p) apr_status_t apr_filepath_encoding group__apr__filepath.html gd4d3a5888a54a52b3552911e448a3eb3 (int *style, apr_pool_t *p) apr_file_io.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__file__io_8h apr.h apr_pools.h apr_time.h apr_errno.h apr_file_info.h apr_inherit.h apr_want.h #define APR_WANT_STDIO apr__file__io_8h.html 4f3ace9204c571a34c0b2b9bd23b1133 #define APR_WANT_IOVEC apr__file__io_8h.html 79e8fc75167d0e530c6afb5172e2a32b #define APR_FOPEN_READ group__apr__file__open__flags.html gf9e7303f028b130ff7d4b209d6662d7d #define APR_FOPEN_WRITE group__apr__file__open__flags.html gc598bb95fc9476b0bf2ed0b1c308842c #define APR_FOPEN_CREATE group__apr__file__open__flags.html gfe94f21ccbf411172e70e7f473af251a #define APR_FOPEN_APPEND group__apr__file__open__flags.html g45f353db9b71d4760a3f35cf3781cfc8 #define APR_FOPEN_TRUNCATE group__apr__file__open__flags.html g09b05a5bd5db534b93794f7657bcb146 #define APR_FOPEN_BINARY group__apr__file__open__flags.html gcb20b3028864f34cb26314fe2cacc3fa #define APR_FOPEN_EXCL group__apr__file__open__flags.html gbb7fb062cdf1d58faee8c7ea518496f1 #define APR_FOPEN_BUFFERED group__apr__file__open__flags.html gc48fd4c853c9f561632a2e8aaf5d8d97 #define APR_FOPEN_DELONCLOSE group__apr__file__open__flags.html g5d3756f6d242c667ed1d3f54af4916eb #define APR_FOPEN_XTHREAD group__apr__file__open__flags.html g435cd9b2604b11796779c23ffa00a3dd #define APR_FOPEN_SHARELOCK group__apr__file__open__flags.html g426f6e2a8457ab410d99248269059a18 #define APR_FOPEN_NOCLEANUP group__apr__file__open__flags.html g3fc9b5a7791d9f462997cd29de67eb80 #define APR_FOPEN_SENDFILE_ENABLED group__apr__file__open__flags.html g60c21e28e4a612d58a874fe2cc71a6e4 #define APR_FOPEN_LARGEFILE group__apr__file__open__flags.html gf6cfaa4789e6264afd186235f0adbc22 #define APR_FOPEN_SPARSE group__apr__file__open__flags.html g0d155e9bb7fbf1a5cd4e84b5ede059f4 #define APR_READ group__apr__file__open__flags.html g0021db78d799d1c8825b701c7efee483 #define APR_WRITE group__apr__file__open__flags.html g3e427e53aceb1ccdb078d9a03cd63d01 #define APR_CREATE group__apr__file__open__flags.html gc210e96bc821dbaa83c326e775dad028 #define APR_APPEND group__apr__file__open__flags.html g26d3de2bae5c90e5124869f56c141c2e #define APR_TRUNCATE group__apr__file__open__flags.html ga8898fdebd69d3a64286731b713a6dc9 #define APR_BINARY group__apr__file__open__flags.html g0e7556bac0cc0d1dafdf38952a4e4015 #define APR_EXCL group__apr__file__open__flags.html g209c26b2b903cc23417f6781d4edf891 #define APR_BUFFERED group__apr__file__open__flags.html g6edc818199e8b90e3dabf97c42a27158 #define APR_DELONCLOSE group__apr__file__open__flags.html gebc7f034a72dffe64858b1b9451994ff #define APR_XTHREAD group__apr__file__open__flags.html ga9120c0e395d8a0e640b5eafa8f11cce #define APR_SHARELOCK group__apr__file__open__flags.html g41277154f4f754a22287ed90e9466811 #define APR_FILE_NOCLEANUP group__apr__file__open__flags.html g3ef1061dbb3adf595701bd12edb062f9 #define APR_SENDFILE_ENABLED group__apr__file__open__flags.html g17e216aadb23254580258889e10c53f3 #define APR_LARGEFILE group__apr__file__open__flags.html gafa04fd4ec71910a5d7af1c7f5596bad #define APR_SET group__apr__file__seek__flags.html g2fdf78845c897f69451d49e1e2b90ac9 #define APR_CUR group__apr__file__seek__flags.html ge17abc53fea00bfd51e184017113e250 #define APR_END group__apr__file__seek__flags.html g438f3568be799d1e4bbd19492ca47d22 #define APR_FILE_ATTR_READONLY group__apr__file__attrs__set__flags.html g333f2c798495cfb95ee624e11c862e38 #define APR_FILE_ATTR_EXECUTABLE group__apr__file__attrs__set__flags.html g51346f433e354f0bc8722388b6b275fd #define APR_FILE_ATTR_HIDDEN group__apr__file__attrs__set__flags.html g68c188c0e56b9abdef3c97ffd913c5aa #define APR_MAX_IOVEC_SIZE group__apr__file__writev.html ge04a4721139b2b252ea20e68883da4b4 #define APR_FLOCK_SHARED group__apr__file__lock__types.html gba177fe81cd70b389753ad2096b2ce7c #define APR_FLOCK_EXCLUSIVE group__apr__file__lock__types.html gfbf0caa093b99bdf11e25360b9099852 #define APR_FLOCK_TYPEMASK group__apr__file__lock__types.html g40777e364fb20bb9a9ee57e74b19c13d #define APR_FLOCK_NONBLOCK group__apr__file__lock__types.html gb327fa0250e19006f20d5ec65fe7f22a apr_uint32_t apr_fileattrs_t group__apr__file__io.html g11fbee5a7a3f3d45fff5c31df0db9737 int apr_seek_where_t group__apr__file__io.html g8eecd44975906042e0e369771802a145 struct apr_file_t apr_file_t group__apr__file__io.html ga46e4763ac375ea3c7a43ba6f6099e22 apr_status_t apr_file_open group__apr__file__io.html gbda14cbf242fb4fe99055434213e5446 (apr_file_t **newf, const char *fname, apr_int32_t flag, apr_fileperms_t perm, apr_pool_t *pool) apr_status_t apr_file_close group__apr__file__io.html g5607bce1c4c798ceb6c8475a998a81a1 (apr_file_t *file) apr_status_t apr_file_remove group__apr__file__io.html g211c40be82f8bf8b8d7dce5afca5500b (const char *path, apr_pool_t *pool) apr_status_t apr_file_rename group__apr__file__io.html g29b5633bb80226baa5de79a83c6999aa (const char *from_path, const char *to_path, apr_pool_t *pool) apr_status_t apr_file_copy group__apr__file__io.html g2b82c441246cc4596795420b0a94a9a2 (const char *from_path, const char *to_path, apr_fileperms_t perms, apr_pool_t *pool) apr_status_t apr_file_append group__apr__file__io.html g0b9bc41ffa4ac43cbea46b44eace939e (const char *from_path, const char *to_path, apr_fileperms_t perms, apr_pool_t *pool) apr_status_t apr_file_eof group__apr__file__io.html g8efaff2f556b250fee1021541b782ea8 (apr_file_t *fptr) apr_status_t apr_file_open_stderr group__apr__file__io.html gf426d98943319acced2c9b52757f377f (apr_file_t **thefile, apr_pool_t *pool) apr_status_t apr_file_open_stdout group__apr__file__io.html g0d36922c0944ff9675cc820e68d56199 (apr_file_t **thefile, apr_pool_t *pool) apr_status_t apr_file_open_stdin group__apr__file__io.html g539454470148f9b22a31f85936a5f8b4 (apr_file_t **thefile, apr_pool_t *pool) apr_status_t apr_file_open_flags_stderr group__apr__file__io.html g6e87d695994e236dae3d428ed68886bf (apr_file_t **thefile, apr_int32_t flags, apr_pool_t *pool) apr_status_t apr_file_open_flags_stdout group__apr__file__io.html geda353505bc1dc46db93b0a80d0b1c4c (apr_file_t **thefile, apr_int32_t flags, apr_pool_t *pool) apr_status_t apr_file_open_flags_stdin group__apr__file__io.html g3bde3e61454b5604077f297b1d1671c0 (apr_file_t **thefile, apr_int32_t flags, apr_pool_t *pool) apr_status_t apr_file_read group__apr__file__io.html gdd067ee0050dff0c03a9420c9d424466 (apr_file_t *thefile, void *buf, apr_size_t *nbytes) apr_status_t apr_file_write group__apr__file__io.html g2e4baa94102c363fdca3c850375d3584 (apr_file_t *thefile, const void *buf, apr_size_t *nbytes) apr_status_t apr_file_writev group__apr__file__io.html gcc7924dd7af1c2948b5b2ea6e5f77984 (apr_file_t *thefile, const struct iovec *vec, apr_size_t nvec, apr_size_t *nbytes) apr_status_t apr_file_read_full group__apr__file__io.html gf39a17404e868808aff8e2e7ecaa87e0 (apr_file_t *thefile, void *buf, apr_size_t nbytes, apr_size_t *bytes_read) apr_status_t apr_file_write_full group__apr__file__io.html g560d5c062d65e64c07d906d1207337d4 (apr_file_t *thefile, const void *buf, apr_size_t nbytes, apr_size_t *bytes_written) apr_status_t apr_file_writev_full group__apr__file__io.html g24457e11f0db908b21b7e1742db4ed7b (apr_file_t *thefile, const struct iovec *vec, apr_size_t nvec, apr_size_t *nbytes) apr_status_t apr_file_putc group__apr__file__io.html g33e51b53194e7c0dac513ca27ca18e63 (char ch, apr_file_t *thefile) apr_status_t apr_file_getc group__apr__file__io.html g852b9c77d4223af15d8d3674a0e2714d (char *ch, apr_file_t *thefile) apr_status_t apr_file_ungetc group__apr__file__io.html g9d06778e719d596ab96bca812b01cb3a (char ch, apr_file_t *thefile) apr_status_t apr_file_gets group__apr__file__io.html gf9513b769c10b09e5f37d6d0b86bdce9 (char *str, int len, apr_file_t *thefile) apr_status_t apr_file_puts group__apr__file__io.html gcde81145cc38660a1512d469886ddb16 (const char *str, apr_file_t *thefile) apr_status_t apr_file_flush group__apr__file__io.html g68aba780b7fc53e47404bfd8def949bc (apr_file_t *thefile) apr_status_t apr_file_dup group__apr__file__io.html g6e849af1b0fd31669c58a803fcb13837 (apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p) apr_status_t apr_file_dup2 group__apr__file__io.html g602926aad867088297e8f59490ff939c (apr_file_t *new_file, apr_file_t *old_file, apr_pool_t *p) apr_status_t apr_file_setaside group__apr__file__io.html gdaf046ce39aa118dab921a407446355b (apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p) apr_status_t apr_file_buffer_set group__apr__file__io.html gfe4be8c3b62c42535b84d4237bf6e421 (apr_file_t *thefile, char *buffer, apr_size_t bufsize) apr_size_t apr_file_buffer_size_get group__apr__file__io.html g42bbb9227095686ea15eb79f99d248a2 (apr_file_t *thefile) apr_status_t apr_file_seek group__apr__file__io.html g9db84bec24db97a53890df1a6aff63a1 (apr_file_t *thefile, apr_seek_where_t where, apr_off_t *offset) apr_status_t apr_file_pipe_create group__apr__file__io.html gae3b81342d239c58c351cf11190740ed (apr_file_t **in, apr_file_t **out, apr_pool_t *pool) apr_status_t apr_file_pipe_create_ex group__apr__file__io.html gc365ab74c583eb1df5cd05660a81b5c8 (apr_file_t **in, apr_file_t **out, apr_int32_t blocking, apr_pool_t *p) apr_status_t apr_file_namedpipe_create group__apr__file__io.html g60cec3e6717bab0f11577bd7c38b4c59 (const char *filename, apr_fileperms_t perm, apr_pool_t *pool) apr_status_t apr_file_pipe_timeout_get group__apr__file__io.html g90e481207a38df04818a0c55883ee953 (apr_file_t *thepipe, apr_interval_time_t *timeout) apr_status_t apr_file_pipe_timeout_set group__apr__file__io.html gf88d2fca768e3fa9f28ea010e1bf602a (apr_file_t *thepipe, apr_interval_time_t timeout) apr_status_t apr_file_lock group__apr__file__io.html g2d337e66c1fa0cd433164079bf542484 (apr_file_t *thefile, int type) apr_status_t apr_file_unlock group__apr__file__io.html g3a255996fb439b6d66ed7cd65319525b (apr_file_t *thefile) apr_status_t apr_file_name_get group__apr__file__io.html g5c750a88fe1e032e1d85d3db40d9519f (const char **new_path, apr_file_t *thefile) apr_status_t apr_file_data_get group__apr__file__io.html gfa13b7024748a7e45344d6998ddbd281 (void **data, const char *key, apr_file_t *file) apr_status_t apr_file_data_set group__apr__file__io.html g58c857162593d8b3aa999df5b7af0805 (apr_file_t *file, void *data, const char *key, apr_status_t(*cleanup)(void *)) int apr_file_printf group__apr__file__io.html g29fca4b0201c236856fea5578f410c0e (apr_file_t *fptr, const char *format,...) apr_status_t apr_file_perms_set group__apr__file__io.html gc5fed6d75597476718c40fc603823b1e (const char *fname, apr_fileperms_t perms) apr_status_t apr_file_attrs_set group__apr__file__io.html g96ceec3492ad0c75d2b58c167087ee6a (const char *fname, apr_fileattrs_t attributes, apr_fileattrs_t attr_mask, apr_pool_t *pool) apr_status_t apr_file_mtime_set group__apr__file__io.html g79f58458a00a4072622005c09ed8f96f (const char *fname, apr_time_t mtime, apr_pool_t *pool) apr_status_t apr_dir_make group__apr__file__io.html g51e0b4703c7561f72587982808985d29 (const char *path, apr_fileperms_t perm, apr_pool_t *pool) apr_status_t apr_dir_make_recursive group__apr__file__io.html g6a3b2602f57ff148cd64096da02adbd2 (const char *path, apr_fileperms_t perm, apr_pool_t *pool) apr_status_t apr_dir_remove group__apr__file__io.html g5487d02a62fba9444747ccb5838150ba (const char *path, apr_pool_t *pool) apr_status_t apr_file_info_get group__apr__file__io.html g39be7fe05d0dda4a28f4358b61a44ac8 (apr_finfo_t *finfo, apr_int32_t wanted, apr_file_t *thefile) apr_status_t apr_file_trunc group__apr__file__io.html gc067fe5f208c927cf6d213197b9335a8 (apr_file_t *fp, apr_off_t offset) apr_int32_t apr_file_flags_get group__apr__file__io.html g023d6e4d2512382a9d4b1f881e105b8f (apr_file_t *f) apr_pool_t * apr_file_pool_get group__apr__file__io.html gb5950b3b0156097b0181394a37e03ede (const apr_file_t *thefile) apr_status_t apr_file_inherit_set group__apr__file__io.html g137bee13d2c65fb8afd4b34e400187c7 (apr_file_t *thefile) apr_status_t apr_file_inherit_unset group__apr__file__io.html g69fa72a6f77b96572248c2a6a347c02a (apr_file_t *thefile) apr_status_t apr_file_mktemp group__apr__file__io.html gc34981f9ff41f85e4377a6dde185fe52 (apr_file_t **fp, char *templ, apr_int32_t flags, apr_pool_t *p) apr_status_t apr_temp_dir_get group__apr__file__io.html g5cc19828a668c362be0ad7a12b805cc0 (const char **temp_dir, apr_pool_t *p) apr_fnmatch.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__fnmatch_8h apr_errno.h apr_tables.h #define APR_FNM_NOMATCH group__apr__fnmatch.html gea769621807400e4c741e7deddf6c3df #define APR_FNM_NOESCAPE group__apr__fnmatch.html ge12c1286631f316647be6dc007170630 #define APR_FNM_PATHNAME group__apr__fnmatch.html g0d421a2cef68cb590f958b5de6c7fe1b #define APR_FNM_PERIOD group__apr__fnmatch.html g4806f936b6eacc59dfed831d67b750ef #define APR_FNM_CASE_BLIND group__apr__fnmatch.html g5cee1c0a917a283a193721d11160b502 apr_status_t apr_fnmatch group__apr__fnmatch.html gbe9c7d7efe6afc203a01befbc45bad96 (const char *pattern, const char *strings, int flags) int apr_fnmatch_test group__apr__fnmatch.html g4e7828bb7be756d999f13b8af8202204 (const char *pattern) apr_status_t apr_match_glob group__apr__fnmatch.html gba55810d3e241b61b9f47f23231e3a02 (const char *pattern, apr_array_header_t **result, apr_pool_t *p) apr_general.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__general_8h apr.h apr_pools.h apr_errno.h #define FALSE group__apr__general.html ga93f0eb578d23995850d61f7d61c55c1 #define TRUE group__apr__general.html ga8cecfc5c5c054d2875c03e77b7be15d #define APR_ASCII_BLANK group__apr__general.html g60fc208d93123acc7cf915a66e49e654 #define APR_ASCII_CR group__apr__general.html g91c14ef7f03e82c07f4d3d56f63f8b6a #define APR_ASCII_LF group__apr__general.html g9e76601cef56a7a5b25f73fe6d57d7d9 #define APR_ASCII_TAB group__apr__general.html gc7162c0b5d026a0717aaa98bf581349d #define APR_OFFSET group__apr__general.html g41e537d6ad732766d12cd4eb61531678 (p_type, field) #define APR_OFFSETOF group__apr__general.html gc16b1187b6ea63706c5dd48c88323dec (s_type, field) #define APR_ALIGN group__apr__general.html g3c4f50d14ebe7a6add282d879521d552 (size, boundary) #define APR_ALIGN_DEFAULT group__apr__general.html gb484e98426221f3212fcb67af0467381 (size) #define APR_STRINGIFY group__apr__general.html ge90215615972dfa4108018304361ef0b (n) #define APR_STRINGIFY_HELPER group__apr__general.html g71918dd8c53e093283b43b0ff0965439 (n) int apr_signum_t group__apr__general.html gfe9e657d61b61d62ecba34299a82a7ea apr_status_t apr_initialize group__apr__library.html g4a91a6b9ff457ead13e670950127761a (void) apr_status_t apr_app_initialize group__apr__library.html ga1c4fc2e1c814cc5d4cd3d8719288fc9 (int *argc, char const *const **argv, char const *const **env) void apr_terminate group__apr__library.html g8e96d45ee09fc7e7eb3646efef1424a3 (void) void apr_terminate2 group__apr__library.html g18667a60ff34d6209e519b4a4ce8cad1 (void) apr_status_t apr_generate_random_bytes group__apr__random.html g564e4c380e820a9b0d9e877d4852a65e (unsigned char *buf, apr_size_t length) apr_getopt.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__getopt_8h apr_pools.h apr_getopt_t apr_getopt_option_t void( apr_getopt_err_fn_t group__apr__getopt.html ge82318936f08cc3531ce9b0856422f27 )(void *arg, const char *err,...) struct apr_getopt_t apr_getopt_t group__apr__getopt.html ged49565eab64803e93f76d0c40d6873d struct apr_getopt_option_t apr_getopt_option_t group__apr__getopt.html g114d2af52f3573eaeee2ffa73b2c4ff5 apr_status_t apr_getopt_init group__apr__getopt.html gaab2b4bfb62361af7a2d427f5f29a3d4 (apr_getopt_t **os, apr_pool_t *cont, int argc, const char *const *argv) apr_status_t apr_getopt group__apr__getopt.html g289cdcf7eacc997eb91fea7c02d08934 (apr_getopt_t *os, const char *opts, char *option_ch, const char **option_arg) apr_status_t apr_getopt_long group__apr__getopt.html g80d6ff2213da4e25406b3f179fa13989 (apr_getopt_t *os, const apr_getopt_option_t *opts, int *option_ch, const char **option_arg) apr_global_mutex.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__global__mutex_8h apr.h apr_proc_mutex.h apr_pools.h apr_errno.h struct apr_global_mutex_t apr_global_mutex_t group___a_p_r___global_mutex.html g3fc7dc5b076533ee566aa4888ac35ee7 apr_status_t apr_global_mutex_create group___a_p_r___global_mutex.html g7a5ade1ba8ea6c7a7a61e3e719683cb0 (apr_global_mutex_t **mutex, const char *fname, apr_lockmech_e mech, apr_pool_t *pool) apr_status_t apr_global_mutex_child_init group___a_p_r___global_mutex.html g51eb034bca0352075c92c08a21d4d7a0 (apr_global_mutex_t **mutex, const char *fname, apr_pool_t *pool) apr_status_t apr_global_mutex_lock group___a_p_r___global_mutex.html g1338485664e6c2737340114cace57121 (apr_global_mutex_t *mutex) apr_status_t apr_global_mutex_trylock group___a_p_r___global_mutex.html g2a6543fba6473b47e33a7b7fc2ba6935 (apr_global_mutex_t *mutex) apr_status_t apr_global_mutex_unlock group___a_p_r___global_mutex.html g16e732ae76dfe104b157e0fc543d3aa3 (apr_global_mutex_t *mutex) apr_status_t apr_global_mutex_destroy group___a_p_r___global_mutex.html g1f2cb4a1ec57089db49701e747892607 (apr_global_mutex_t *mutex) apr_pool_t * apr_global_mutex_pool_get group___a_p_r___global_mutex.html g01d5c1bbb32b976083b9c8234b04cd46 (const apr_global_mutex_t *theglobal_mutex) apr_hash.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__hash_8h apr_pools.h #define APR_HASH_KEY_STRING group__apr__hash.html g3ba32541f2717b394000f87f38c7e12d struct apr_hash_t apr_hash_t group__apr__hash.html g72ec09b8bde6d874c36bd49df915fff6 struct apr_hash_index_t apr_hash_index_t group__apr__hash.html g3b3d353989f6cea4535630634be147f7 unsigned int(* apr_hashfunc_t group__apr__hash.html g083e92cab31343c1ebb9073275e8166e )(const char *key, apr_ssize_t *klen) unsigned int apr_hashfunc_default group__apr__hash.html g8baa6e9d9d6c2c496d2a0ff1a5c53abe (const char *key, apr_ssize_t *klen) apr_hash_t * apr_hash_make group__apr__hash.html g5f4b424d6761de4d32aa16ff6803bac9 (apr_pool_t *pool) apr_hash_t * apr_hash_make_custom group__apr__hash.html g27f40acb206f1821a783ddcb71bc8971 (apr_pool_t *pool, apr_hashfunc_t hash_func) apr_hash_t * apr_hash_copy group__apr__hash.html gfa0b1b9fb91b2249ee3bcb645d93e148 (apr_pool_t *pool, const apr_hash_t *h) void apr_hash_set group__apr__hash.html g456beb139bc548728b49c09c2f89b93c (apr_hash_t *ht, const void *key, apr_ssize_t klen, const void *val) void * apr_hash_get group__apr__hash.html g05e526dad8afaebe14caea90d906d6ec (apr_hash_t *ht, const void *key, apr_ssize_t klen) apr_hash_index_t * apr_hash_first group__apr__hash.html g640005a4ba64a5db039b0b43a8ad4898 (apr_pool_t *p, apr_hash_t *ht) apr_hash_index_t * apr_hash_next group__apr__hash.html g9d7b9198555659e9abac4e3028ccce00 (apr_hash_index_t *hi) void apr_hash_this group__apr__hash.html gd90e5b895397c2c535e32b3e44a75b3f (apr_hash_index_t *hi, const void **key, apr_ssize_t *klen, void **val) unsigned int apr_hash_count group__apr__hash.html g4e44efa9ef043c1bb8a4abc5edcfda2c (apr_hash_t *ht) void apr_hash_clear group__apr__hash.html g06fb1b9ecff1a15ee41ff02db74264e4 (apr_hash_t *ht) apr_hash_t * apr_hash_overlay group__apr__hash.html g2f68646a64bad44efcbf3457af581fdb (apr_pool_t *p, const apr_hash_t *overlay, const apr_hash_t *base) apr_hash_t * apr_hash_merge group__apr__hash.html ga954266cd16a55f7f384ab0a9c4ff9f1 (apr_pool_t *p, const apr_hash_t *h1, const apr_hash_t *h2, void *(*merger)(apr_pool_t *p, const void *key, apr_ssize_t klen, const void *h1_val, const void *h2_val, const void *data), const void *data) apr_pool_t * apr_hash_pool_get group__apr__hash.html g6c170fee4d679928d381cd61c559c105 (const apr_hash_t *thehash) apr_inherit.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__inherit_8h #define APR_DECLARE_INHERIT_SET apr__inherit_8h.html a67d345784df8cce8114086e1f67cf3d (type) #define APR_DECLARE_INHERIT_UNSET apr__inherit_8h.html d4886be514d6cead6bd119a48984d4b5 (type) apr_lib.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__lib_8h apr.h apr_errno.h apr_vformatter_buff_t #define HUGE_STRING_LEN group__apr__lib.html g0c9dd98f46b90b5bcd4cbf75e252d0da #define apr_killpg group__apr__lib.html ga3b0264aadbd9f8d805252fb1ca1cd0e (x, y) #define apr_isalnum group__apr__ctype.html g4fa78e6e7272dae64731768a17a2e003 (c) #define apr_isalpha group__apr__ctype.html g9ecd5b94a7816591afd68040b0624327 (c) #define apr_iscntrl group__apr__ctype.html gcc8b4597be99c895ea042e8088ee94ab (c) #define apr_isdigit group__apr__ctype.html g8c453b1d66015b357c3d3a3ddb7d97d7 (c) #define apr_isgraph group__apr__ctype.html gd4fbfcf508e7771ca85e85e4ac9567c2 (c) #define apr_islower group__apr__ctype.html gff5eeb2f6350095ce86cc2cd4b1d38ee (c) #define apr_isascii group__apr__ctype.html ge7cab1b39d2e0fc14f343ec14e12565a (c) #define apr_isprint group__apr__ctype.html g20da56fc8bbedc9f8a40d20c1cc58bac (c) #define apr_ispunct group__apr__ctype.html g1db14e8d5f9891010c8bad08aa100674 (c) #define apr_isspace group__apr__ctype.html g23f4c7721923a0f0f444fd7fb196047a (c) #define apr_isupper group__apr__ctype.html g362f53cc44aab662aaf04fa87e36035b (c) #define apr_isxdigit group__apr__ctype.html g9d30f3c5d538c21c6d50565cda8654d0 (c) #define apr_tolower group__apr__ctype.html ga591f2a7eb578b1fb3ae9aeaab9eafaa (c) #define apr_toupper group__apr__ctype.html g83d2a3217282784d24897658ad0717b7 (c) struct apr_vformatter_buff_t apr_vformatter_buff_t group__apr__lib.html g5e9986deebda40f2d1cf8364fa03c3c5 const char * apr_filepath_name_get group__apr__lib.html g241e929df23aede34eb3f2651cf56bc9 (const char *pathname) int apr_vformatter group__apr__lib.html gd2cd3594aeaafd45931d1034965f48c1 (int(*flush_func)(apr_vformatter_buff_t *b), apr_vformatter_buff_t *c, const char *fmt, va_list ap) apr_status_t apr_password_get group__apr__lib.html g377e0677598745769ec6f80fecf8f859 (const char *prompt, char *pwbuf, apr_size_t *bufsize) apr_mmap.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__mmap_8h apr.h apr_pools.h apr_errno.h apr_ring.h apr_file_io.h apr_mmap_t #define APR_MMAP_READ group__apr__mmap.html gc231fdf15d2d29802e0abbc5d0cf25b8 #define APR_MMAP_WRITE group__apr__mmap.html gc2eb7f697d8bf190e630b85f967c8273 #define APR_MMAP_THRESHOLD group__apr__mmap.html g19d1916e7b64bfb1a969648fe7b0846a #define APR_MMAP_LIMIT group__apr__mmap.html g548e49b3c9e8265ad8ccf70994f4fe25 #define APR_MMAP_CANDIDATE group__apr__mmap.html g4f469432098e986567576fd4c4ce5adc (filelength) struct apr_mmap_t apr_mmap_t group__apr__mmap.html g766b01a3e1e0438d06dc88d76f826f80 apr_status_t apr_mmap_create group__apr__mmap.html gc6b103139be2e859741ec94cc6ad34cc (apr_mmap_t **newmmap, apr_file_t *file, apr_off_t offset, apr_size_t size, apr_int32_t flag, apr_pool_t *cntxt) apr_status_t apr_mmap_dup group__apr__mmap.html g9fcdbf8090e924a4e8f2b301519bb4c8 (apr_mmap_t **new_mmap, apr_mmap_t *old_mmap, apr_pool_t *p) apr_status_t apr_mmap_delete group__apr__mmap.html g4b67a2d22a07707897cc1183a1682040 (apr_mmap_t *mm) apr_status_t apr_mmap_offset group__apr__mmap.html g4c1d31bd9e911744bd5edb97e17210ec (void **addr, apr_mmap_t *mm, apr_off_t offset) apr_network_io.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__network__io_8h apr.h apr_pools.h apr_file_io.h apr_errno.h apr_inherit.h apr_sockaddr_t apr_hdtr_t #define APR_MAX_SECS_TO_LINGER group__apr__network__io.html g8311c84f6946742188a6b9a45e92ea8e #define APRMAXHOSTLEN group__apr__network__io.html g7f5b3882209106bb407b1d518d6ad59d #define APR_ANYADDR group__apr__network__io.html gdce1131c46b897ec63e9e4316a4631dd #define APR_SO_LINGER group__apr__sockopt.html g6a807e7b78937ab74a4fcd6e99d76669 #define APR_SO_KEEPALIVE group__apr__sockopt.html g0c54c5b98593d9ad2f8cc8836da7eae5 #define APR_SO_DEBUG group__apr__sockopt.html g2b30d26f69059692e97a59ec1d6db73b #define APR_SO_NONBLOCK group__apr__sockopt.html gc3bf19cc28b43da9b9dc396c84914a0f #define APR_SO_REUSEADDR group__apr__sockopt.html g90434074950efa1383d7c5649026a159 #define APR_SO_SNDBUF group__apr__sockopt.html g0e7ef8d3785eec5210ede9fd309db35f #define APR_SO_RCVBUF group__apr__sockopt.html g4ab9494893075c8db6ac26a997f41f0e #define APR_SO_DISCONNECTED group__apr__sockopt.html g5fd72839e254ddec03ffb624c21fa564 #define APR_TCP_NODELAY group__apr__sockopt.html g24db924d850dea792e92be7f8bc45cbd #define APR_TCP_NOPUSH group__apr__sockopt.html g7679a9e3114815eb6c31d26db707975d #define APR_RESET_NODELAY group__apr__sockopt.html gc9ee12e841eefaf86fabaae4a298adea #define APR_INCOMPLETE_READ group__apr__sockopt.html g73b6c80791c5148c2a416e03a8a1ff8a #define APR_INCOMPLETE_WRITE group__apr__sockopt.html g0c1544983845bf747b4a2a3facfb45e9 #define APR_IPV6_V6ONLY group__apr__sockopt.html ge1126f69a19a23c484e3292b016375df #define APR_TCP_DEFER_ACCEPT group__apr__sockopt.html ga81adac9b40a87f1d4c0c2f037e9af78 #define APR_IPV4_ADDR_OK group__apr__network__io.html g58aa30a94127b4a80f27fbf2e03fdfd8 #define APR_IPV6_ADDR_OK group__apr__network__io.html gef1f70f9b969d25832a230f429837207 #define APR_INADDR_NONE group__apr__network__io.html g16eb7ee55ff87a5093f2114ea5351217 #define APR_INET group__apr__network__io.html ga96e8e8dbf92bc77643a4032017b3d67 #define APR_UNSPEC group__apr__network__io.html ga7a33b17a7d0820b09ef489bd3328f85 #define APR_INET6 group__apr__network__io.html gd09d9ea8995f50f35073ae0c77efb44f #define APR_PROTO_TCP group___i_p___proto.html gd231c935f9f9746ca43b46cdcf80338e #define APR_PROTO_UDP group___i_p___proto.html g05acc4775ee3f3a637f97c904b8ebd7d #define APR_PROTO_SCTP group___i_p___proto.html g89b4fd2811d13e945e937f890b750727 #define apr_inet_addr group__apr__network__io.html g46a8b06887871cfd60a3e37385775e22 #define APR_SENDFILE_DISCONNECT_SOCKET group__apr__network__io.html gca378d0e24b1588e3fdb143e4ea9090d struct apr_socket_t apr_socket_t group__apr__network__io.html g49262b223e7434746e1f1737659aa2c3 struct apr_hdtr_t apr_hdtr_t group__apr__network__io.html g97887d5358a9c79c241ccafab61d8ff5 struct in_addr apr_in_addr_t group__apr__network__io.html gd30d6c55a354a9a2e0a8747abb0c8176 struct apr_ipsubnet_t apr_ipsubnet_t group__apr__network__io.html gc86ee04eb80f938902095d1d0a67c324 apr_uint16_t apr_port_t group__apr__network__io.html ga670a71960f6eb4fe0d0de2a1e7aba03 struct apr_sockaddr_t apr_sockaddr_t group__apr__network__io.html g373fb6f32d0875c5deb648b779c8a709 apr_shutdown_how_e group__apr__network__io.html ge2130f1fa2d0db58c5c3c9c73d9b4009 APR_SHUTDOWN_READ group__apr__network__io.html gge2130f1fa2d0db58c5c3c9c73d9b400988d0661d35eea5319715d6ca69265b01 APR_SHUTDOWN_WRITE group__apr__network__io.html gge2130f1fa2d0db58c5c3c9c73d9b40095e335b392088e14df65d1bd5e0db7c46 APR_SHUTDOWN_READWRITE group__apr__network__io.html gge2130f1fa2d0db58c5c3c9c73d9b4009dd172f55ff5ee7b930683a3903c99768 apr_interface_e group__apr__network__io.html g1982f44f48fdf00a8bd754bc7b773edc APR_LOCAL group__apr__network__io.html gg1982f44f48fdf00a8bd754bc7b773edc6c23a4bf48b8f93dff08adf827382616 APR_REMOTE group__apr__network__io.html gg1982f44f48fdf00a8bd754bc7b773edceb8be70b031f06a513ac0ebcaa5bac8a apr_status_t apr_socket_create group__apr__network__io.html g46b81e267ef80e64510d4e83880a91bd (apr_socket_t **new_sock, int family, int type, int protocol, apr_pool_t *cont) apr_status_t apr_socket_shutdown group__apr__network__io.html gc5aea857a50c493f840c48b930abc48e (apr_socket_t *thesocket, apr_shutdown_how_e how) apr_status_t apr_socket_close group__apr__network__io.html g88779f243ce19a2563544aee81894e6d (apr_socket_t *thesocket) apr_status_t apr_socket_bind group__apr__network__io.html g512882c9979c2b9cad7cbc2508516d65 (apr_socket_t *sock, apr_sockaddr_t *sa) apr_status_t apr_socket_listen group__apr__network__io.html g154bcee918f6f01fe0373359dd74b0c4 (apr_socket_t *sock, apr_int32_t backlog) apr_status_t apr_socket_accept group__apr__network__io.html g1d62711ca77ccc0f6413a298a47876da (apr_socket_t **new_sock, apr_socket_t *sock, apr_pool_t *connection_pool) apr_status_t apr_socket_connect group__apr__network__io.html g8e58bd8112ed2ce5004487918cd9275e (apr_socket_t *sock, apr_sockaddr_t *sa) apr_status_t apr_sockaddr_info_get group__apr__network__io.html ga2f399ca2b60b35c0abf7630298c6c9f (apr_sockaddr_t **sa, const char *hostname, apr_int32_t family, apr_port_t port, apr_int32_t flags, apr_pool_t *p) apr_status_t apr_getnameinfo group__apr__network__io.html g7a56fd9573b942753738ec30b887c9de (char **hostname, apr_sockaddr_t *sa, apr_int32_t flags) apr_status_t apr_parse_addr_port group__apr__network__io.html g90c31b2f012c6b1e2d842a96c4431de3 (char **addr, char **scope_id, apr_port_t *port, const char *str, apr_pool_t *p) apr_status_t apr_gethostname group__apr__network__io.html g6bd3d656ba935ca428075f477b8a6f8b (char *buf, int len, apr_pool_t *cont) apr_status_t apr_socket_data_get group__apr__network__io.html ge76b48d0224a608b4ddb8bd00582eaa7 (void **data, const char *key, apr_socket_t *sock) apr_status_t apr_socket_data_set group__apr__network__io.html gfec197f3aa9a495801cdf7892ff8dcb5 (apr_socket_t *sock, void *data, const char *key, apr_status_t(*cleanup)(void *)) apr_status_t apr_socket_send group__apr__network__io.html g943268245cf59f6ff8cf1458c9a9ba8d (apr_socket_t *sock, const char *buf, apr_size_t *len) apr_status_t apr_socket_sendv group__apr__network__io.html g99ece70c34a7a332daa3941de3950c64 (apr_socket_t *sock, const struct iovec *vec, apr_int32_t nvec, apr_size_t *len) apr_status_t apr_socket_sendto group__apr__network__io.html g03ae34bc5712dac2b3fdee39e5f87be3 (apr_socket_t *sock, apr_sockaddr_t *where, apr_int32_t flags, const char *buf, apr_size_t *len) apr_status_t apr_socket_recvfrom group__apr__network__io.html g80880312b41e86c9c266ede1a504e2ca (apr_sockaddr_t *from, apr_socket_t *sock, apr_int32_t flags, char *buf, apr_size_t *len) apr_status_t apr_socket_sendfile group__apr__network__io.html g3d93e6212c4c27f2390b0057f8f4a8be (apr_socket_t *sock, apr_file_t *file, apr_hdtr_t *hdtr, apr_off_t *offset, apr_size_t *len, apr_int32_t flags) apr_status_t apr_socket_recv group__apr__network__io.html ga6ee00191f197f64b5a5409f4aff53d1 (apr_socket_t *sock, char *buf, apr_size_t *len) apr_status_t apr_socket_opt_set group__apr__network__io.html g08f5e505fa611005f56c12783269ffa9 (apr_socket_t *sock, apr_int32_t opt, apr_int32_t on) apr_status_t apr_socket_timeout_set group__apr__network__io.html g945bdbe807ec5635d65a6fd9ddb78c29 (apr_socket_t *sock, apr_interval_time_t t) apr_status_t apr_socket_opt_get group__apr__network__io.html g1934c2d5943efc8ce925f376f3c2e17e (apr_socket_t *sock, apr_int32_t opt, apr_int32_t *on) apr_status_t apr_socket_timeout_get group__apr__network__io.html ga32313b54afed590367c8571075d2bc1 (apr_socket_t *sock, apr_interval_time_t *t) apr_status_t apr_socket_atmark group__apr__network__io.html g2389de257444870974b5ded91cf7a10c (apr_socket_t *sock, int *atmark) apr_status_t apr_socket_addr_get group__apr__network__io.html gcad56b59eafc6ad2459bf6493c992515 (apr_sockaddr_t **sa, apr_interface_e which, apr_socket_t *sock) apr_status_t apr_sockaddr_ip_get group__apr__network__io.html gb78fc9b9799c119f4a5517411458a660 (char **addr, apr_sockaddr_t *sockaddr) apr_status_t apr_sockaddr_ip_getbuf group__apr__network__io.html g8c88ae154304e30d47c2696f4370dc6d (char *buf, apr_size_t buflen, apr_sockaddr_t *sockaddr) int apr_sockaddr_equal group__apr__network__io.html g1bf65369305ae352f3280af2acc684f5 (const apr_sockaddr_t *addr1, const apr_sockaddr_t *addr2) apr_status_t apr_socket_type_get group__apr__network__io.html g8d23ee2db9a84af2e6408ef460613514 (apr_socket_t *sock, int *type) apr_status_t apr_getservbyname group__apr__network__io.html gd5b504c0fe4d578e72531e3ca0263654 (apr_sockaddr_t *sockaddr, const char *servname) apr_status_t apr_ipsubnet_create group__apr__network__io.html g34a3c7f1666427f4e381e857b9e9c298 (apr_ipsubnet_t **ipsub, const char *ipstr, const char *mask_or_numbits, apr_pool_t *p) int apr_ipsubnet_test group__apr__network__io.html gb74d21b8898b7c40bf7fd07ad3eb993d (apr_ipsubnet_t *ipsub, apr_sockaddr_t *sa) apr_status_t apr_socket_accept_filter group__apr__network__io.html g270b7c0835283fa2b85a05d295dd7ee5 (apr_socket_t *sock, char *name, char *args) apr_status_t apr_socket_protocol_get group__apr__network__io.html gc402d9426de37b6cede18fa157020bd9 (apr_socket_t *sock, int *protocol) apr_pool_t * apr_socket_pool_get group__apr__network__io.html g4f109ecf176aee8fca8ecfa7f8b07d93 (const apr_socket_t *thesocket) apr_status_t apr_socket_inherit_set group__apr__network__io.html g8ae81c6a7acf90112ebcfb9221ccc649 (apr_socket_t *thesocket) apr_status_t apr_socket_inherit_unset group__apr__network__io.html g5afabb2cee38c141d076b9c52a3f2ce1 (apr_socket_t *thesocket) apr_status_t apr_mcast_join group__apr__mcast.html g731894962f9b20b2ee3ccd057053ef71 (apr_socket_t *sock, apr_sockaddr_t *join, apr_sockaddr_t *iface, apr_sockaddr_t *source) apr_status_t apr_mcast_leave group__apr__mcast.html gdd3d59b5f628786093277b962c863d13 (apr_socket_t *sock, apr_sockaddr_t *addr, apr_sockaddr_t *iface, apr_sockaddr_t *source) apr_status_t apr_mcast_hops group__apr__mcast.html g373041d43cb0fd05b2974b9fef0ae30f (apr_socket_t *sock, apr_byte_t ttl) apr_status_t apr_mcast_loopback group__apr__mcast.html g84bc14970499f79de8b71d77898f68ee (apr_socket_t *sock, apr_byte_t opt) apr_status_t apr_mcast_interface group__apr__mcast.html g9949eb40d8bfb670f9bce997cebcdcae (apr_socket_t *sock, apr_sockaddr_t *iface) apr_poll.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__poll_8h apr.h apr_pools.h apr_errno.h apr_inherit.h apr_file_io.h apr_network_io.h apr_descriptor apr_pollfd_t #define APR_POLLIN group__apr__poll.html g746222e6b858bc2fc77328d59f78e788 #define APR_POLLPRI group__apr__poll.html g196c38e1914077c4c9a0cf3ce87f1b9c #define APR_POLLOUT group__apr__poll.html g6fb703db1d11e2c5f66d8c6146e56053 #define APR_POLLERR group__apr__poll.html g6f5a72fd9cf3f5dcf174acce0b4b77ee #define APR_POLLHUP group__apr__poll.html gce76603c4fa4b56f8b5977ff1ceb6f3b #define APR_POLLNVAL group__apr__poll.html g132da215e207d4685fb467cc64a73f1b #define APR_POLLSET_THREADSAFE group__apr__poll.html gbdfaccfd394c847f692351dee2e5ef7f #define APR_POLLSET_NOCOPY group__apr__poll.html g0febaf4378d2705bf1256b22fe8dfd24 struct apr_pollfd_t apr_pollfd_t group__apr__poll.html g0c89b184cbe2337e44207f1ad245129b struct apr_pollset_t apr_pollset_t group__apr__poll.html g680da1f10ac5ef75efc503a9d15b8906 struct apr_pollcb_t apr_pollcb_t group__apr__poll.html ge382e39bdf0c5a02fca7da3944bece08 apr_status_t(* apr_pollcb_cb_t group__apr__poll.html gd440412b52e12fcfddfdd5b1618359e5 )(void *baton, apr_pollfd_t *descriptor) apr_datatype_e group__apr__poll.html g0a8549d84c1721788b102a4cc8b4b0f0 APR_NO_DESC group__apr__poll.html gg0a8549d84c1721788b102a4cc8b4b0f0eb85f43492052bf0788d31f6dd85a222 APR_POLL_SOCKET group__apr__poll.html gg0a8549d84c1721788b102a4cc8b4b0f03629c5b3166fde91792f2f913fbd72f0 APR_POLL_FILE group__apr__poll.html gg0a8549d84c1721788b102a4cc8b4b0f08351d461bf66b706232962fd02e84202 APR_POLL_LASTDESC group__apr__poll.html gg0a8549d84c1721788b102a4cc8b4b0f0413b387c7fe1ca7b096d46dfd9942fe5 apr_status_t apr_pollset_create group__apr__poll.html g4ca4056a19daee8fe94ddba100fe2326 (apr_pollset_t **pollset, apr_uint32_t size, apr_pool_t *p, apr_uint32_t flags) apr_status_t apr_pollset_destroy group__apr__poll.html ga06c538d3fea9d860374043aff9450b2 (apr_pollset_t *pollset) apr_status_t apr_pollset_add group__apr__poll.html g4ec50bf9a11c6b60927c51b81412f5b9 (apr_pollset_t *pollset, const apr_pollfd_t *descriptor) apr_status_t apr_pollset_remove group__apr__poll.html g3c99c06e142d6b6b789eeb6086122e3a (apr_pollset_t *pollset, const apr_pollfd_t *descriptor) apr_status_t apr_pollset_poll group__apr__poll.html g6b31d7b3a7b2d356370403dd2b79ecf3 (apr_pollset_t *pollset, apr_interval_time_t timeout, apr_int32_t *num, const apr_pollfd_t **descriptors) apr_status_t apr_poll group__apr__poll.html gd1d8a1ccd14952be6da5f272ca8dda76 (apr_pollfd_t *aprset, apr_int32_t numsock, apr_int32_t *nsds, apr_interval_time_t timeout) apr_status_t apr_pollcb_create group__apr__poll.html ga829380f21f7709a505fdf45650e6fa0 (apr_pollcb_t **pollcb, apr_uint32_t size, apr_pool_t *pool, apr_uint32_t flags) apr_status_t apr_pollcb_add group__apr__poll.html g8fab02dfa803d911dae98656fac7a2c8 (apr_pollcb_t *pollcb, apr_pollfd_t *descriptor) apr_status_t apr_pollcb_remove group__apr__poll.html gd004b778a14d6bcc4e48a10e5af729d8 (apr_pollcb_t *pollcb, apr_pollfd_t *descriptor) apr_status_t apr_pollcb_poll group__apr__poll.html g11765d1b27e2f621a8dcd2c40f0e259c (apr_pollcb_t *pollcb, apr_interval_time_t timeout, apr_pollcb_cb_t func, void *baton) apr_pools.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__pools_8h apr.h apr_errno.h apr_general.h apr_want.h apr_allocator.h #define APR_WANT_MEMFUNC apr__pools_8h.html 26faf43e3f61783d8b7aa928c0a41a11 #define APR_POOL_DECLARE_ACCESSOR group__apr__pools.html g89ce1d55c7f0c39ea87c88eabd655394 (type) #define APR_POOL_IMPLEMENT_ACCESSOR group__apr__pools.html g43a8a52f68f8b7d3b7694c254da4a074 (type) #define APR_POOL_DEBUG group__apr__pools.html gd898431056ee6f544e0632f2cf5706c4 #define APR_POOL__FILE_LINE__ group__apr__pools.html gc81cff34d0ff4be52fa924663478eade struct apr_pool_t apr_pool_t group__apr__pools.html gf137f28edcf9a086cd6bc36c20d7cdfb int(* apr_abortfunc_t group__apr__pools.html g0a1fe549a7c45b864c003ddf12115365 )(int retcode) apr_status_t apr_pool_initialize group__apr__pools.html gd64a6a29515621bc13f8a8da50366d67 (void) void apr_pool_terminate group__apr__pools.html g3728aacec227318cef973b8a33f3b430 (void) apr_status_t apr_pool_create_ex group__apr__pools.html gb274bd29e4e4d4944b4618403148074f (apr_pool_t **newpool, apr_pool_t *parent, apr_abortfunc_t abort_fn, apr_allocator_t *allocator) apr_status_t apr_pool_create_core_ex group__apr__pools.html g20e514c83555398acddc30c4dfa0c540 (apr_pool_t **newpool, apr_abortfunc_t abort_fn, apr_allocator_t *allocator) apr_status_t apr_pool_create_unmanaged_ex group__apr__pools.html gae7212db77bb57f86419cd594f73a92f (apr_pool_t **newpool, apr_abortfunc_t abort_fn, apr_allocator_t *allocator) apr_status_t apr_pool_create_ex_debug group__apr__pools.html gcbea97ae5c0c861f6b7c147d46ac1d0c (apr_pool_t **newpool, apr_pool_t *parent, apr_abortfunc_t abort_fn, apr_allocator_t *allocator, const char *file_line) apr_status_t apr_pool_create_core_ex_debug group__apr__pools.html ga1c5bfc44188884bb439670f81448c20 (apr_pool_t **newpool, apr_abortfunc_t abort_fn, apr_allocator_t *allocator, const char *file_line) apr_status_t apr_pool_create_unmanaged_ex_debug group__apr__pools.html ge220e572b14355f1aa7b21c8fb022524 (apr_pool_t **newpool, apr_abortfunc_t abort_fn, apr_allocator_t *allocator, const char *file_line) apr_status_t apr_pool_create group__apr__pools.html g918adf3026c894efeae254a0446aed3b (apr_pool_t **newpool, apr_pool_t *parent) apr_status_t apr_pool_create_core group__apr__pools.html gd3675378924bc9d98e46258c049f1761 (apr_pool_t **newpool) apr_status_t apr_pool_create_unmanaged group__apr__pools.html g72f86d699b4b2ec2aeb82c334ca3446b (apr_pool_t **newpool) apr_allocator_t * apr_pool_allocator_get group__apr__pools.html gf446fcf5da1fcd62d3f802a4c0c10f97 (apr_pool_t *pool) void apr_pool_clear group__apr__pools.html gfa8a998cd660e82b62aecec09e239d0d (apr_pool_t *p) void apr_pool_clear_debug group__apr__pools.html g9521870e42ec4395a0bf8388706a57b9 (apr_pool_t *p, const char *file_line) void apr_pool_destroy group__apr__pools.html g54759954d2cba7cb649ab5680a33f9e3 (apr_pool_t *p) void apr_pool_destroy_debug group__apr__pools.html g7efe64dfcce883d7fad9df813d9259fc (apr_pool_t *p, const char *file_line) void * apr_palloc group__apr__pools.html g85f1e193c31d109affda72f9a92c6915 (apr_pool_t *p, apr_size_t size) void * apr_palloc_debug group__apr__pools.html g0ac211ac89be868b107776b4183a8174 (apr_pool_t *p, apr_size_t size, const char *file_line) void * apr_pcalloc group__apr__pools.html gf61c098ad258069d64cdf8c0a9369f9e (apr_pool_t *p, apr_size_t size) void * apr_pcalloc_debug group__apr__pools.html g7b43035318ffdc57a6eddab07dc57cb2 (apr_pool_t *p, apr_size_t size, const char *file_line) void apr_pool_abort_set group__apr__pools.html ga658b1f10dd13967eaa7c4156d4c2174 (apr_abortfunc_t abortfunc, apr_pool_t *pool) apr_abortfunc_t apr_pool_abort_get group__apr__pools.html gf7610c30ef5f84a8742c0b3e63fdd7b0 (apr_pool_t *pool) apr_pool_t * apr_pool_parent_get group__apr__pools.html g94db31f40609b15b592ff47f989ca9ec (apr_pool_t *pool) int apr_pool_is_ancestor group__apr__pools.html g05d299f778659d1e0806140d8a7fea79 (apr_pool_t *a, apr_pool_t *b) void apr_pool_tag group__apr__pools.html geaa872f7999740a60803e95429890518 (apr_pool_t *pool, const char *tag) apr_status_t apr_pool_userdata_set group__apr__pools.html g78d1aa2d9fa842d83eaffccb0f0c0c5c (const void *data, const char *key, apr_status_t(*cleanup)(void *), apr_pool_t *pool) apr_status_t apr_pool_userdata_setn group__apr__pools.html g435644c493dc5b10d80c4b99b8cd4589 (const void *data, const char *key, apr_status_t(*cleanup)(void *), apr_pool_t *pool) apr_status_t apr_pool_userdata_get group__apr__pools.html gf930f1fad2cf92a2432c0814c8a0b86f (void **data, const char *key, apr_pool_t *pool) void apr_pool_cleanup_register group___pool_cleanup.html g6bdb28224dfe08160cbe3ba6b22dcbd7 (apr_pool_t *p, const void *data, apr_status_t(*plain_cleanup)(void *), apr_status_t(*child_cleanup)(void *)) void apr_pool_pre_cleanup_register group___pool_cleanup.html g64114542989d8872c7fd3c62f2a68678 (apr_pool_t *p, const void *data, apr_status_t(*plain_cleanup)(void *)) void apr_pool_cleanup_kill group___pool_cleanup.html gdc59bf32a0302e34fa0a2663f6e48a44 (apr_pool_t *p, const void *data, apr_status_t(*cleanup)(void *)) void apr_pool_child_cleanup_set group___pool_cleanup.html g7197fa6b43d9c5e99de17e0e900989ea (apr_pool_t *p, const void *data, apr_status_t(*plain_cleanup)(void *), apr_status_t(*child_cleanup)(void *)) apr_status_t apr_pool_cleanup_run group___pool_cleanup.html gbf3913823af6015895a726ab738eaac5 (apr_pool_t *p, void *data, apr_status_t(*cleanup)(void *)) apr_status_t apr_pool_cleanup_null group___pool_cleanup.html ga211acee585df08f396a50b0ea489b02 (void *data) void apr_pool_cleanup_for_exec group___pool_cleanup.html g1726cc585bda8997fcb0828f884be55b (void) void apr_pool_join group___pool_debug.html gecd956092f81c70117507ad8cbca8ea7 (apr_pool_t *p, apr_pool_t *sub) apr_pool_t * apr_pool_find group___pool_debug.html g0bc40d9069709020e3643492dae2ccb0 (const void *mem) apr_size_t apr_pool_num_bytes group___pool_debug.html g22462da23d70dfde389a370b131cd351 (apr_pool_t *p, int recurse) void apr_pool_lock group___pool_debug.html g24f8f0287478fa71f77d0ce4ec035e4a (apr_pool_t *pool, int flag) apr_portable.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__portable_8h apr.h apr_pools.h apr_thread_proc.h apr_file_io.h apr_network_io.h apr_errno.h apr_global_mutex.h apr_proc_mutex.h apr_time.h apr_dso.h apr_shm.h apr_os_proc_mutex_t apr_os_sock_info_t #define apr_os_global_mutex_t group__apr__portabile.html gdd3a9818afc16248c3c30f22e19838dd #define apr_os_global_mutex_get group__apr__portabile.html ge9be7821e8c021915c930fc83d6d4a73 int apr_os_file_t group__apr__portabile.html g885491b889a4a719549650d3a370fd34 DIR apr_os_dir_t group__apr__portabile.html gcb790646cfc3da1b43a5f7c4bfaa3937 int apr_os_sock_t group__apr__portabile.html g2965cd2e48cb6513bc0ba05aa6083ed7 struct apr_os_proc_mutex_t apr_os_proc_mutex_t group__apr__portabile.html g107413a26e947456cabfcab99b8a7ade pthread_t apr_os_thread_t group__apr__portabile.html g4ccd9519af148ccf9cff850dd58f00b6 pthread_key_t apr_os_threadkey_t group__apr__portabile.html g0a228496d8a1a9b3be744ddb101a3e76 pid_t apr_os_proc_t group__apr__portabile.html g2ce5962de629ee6528081813c6b60e2e struct timeval apr_os_imp_time_t group__apr__portabile.html g6d27e476300cd1d3fda24e1ff0e358e1 struct tm apr_os_exp_time_t group__apr__portabile.html g0fa9349212690591b09a0cbea7b61bdd void * apr_os_dso_handle_t group__apr__portabile.html g542684803ee8ab0abd69077697599ec0 void * apr_os_shm_t group__apr__portabile.html g7af1085d6390fbd08d66482b8c17de51 struct apr_os_sock_info_t apr_os_sock_info_t group__apr__portabile.html gece2b8b41cbb949590896b47daaa9fd2 apr_status_t apr_os_file_get group__apr__portabile.html g1ff9a9a7313954fb6590f280d2c2e992 (apr_os_file_t *thefile, apr_file_t *file) apr_status_t apr_os_dir_get group__apr__portabile.html g99225bfab137069b9d5c5a72f863c577 (apr_os_dir_t **thedir, apr_dir_t *dir) apr_status_t apr_os_sock_get group__apr__portabile.html g07ec79bbb5243596933cd2caf2d428df (apr_os_sock_t *thesock, apr_socket_t *sock) apr_status_t apr_os_proc_mutex_get group__apr__portabile.html g2003a3142f05675696268053b2fddbe1 (apr_os_proc_mutex_t *ospmutex, apr_proc_mutex_t *pmutex) apr_status_t apr_os_exp_time_get group__apr__portabile.html g903df49f8cd2bb7298cb1612ff6394df (apr_os_exp_time_t **ostime, apr_time_exp_t *aprtime) apr_status_t apr_os_imp_time_get group__apr__portabile.html g406db611360a70360bec953cd92d2df7 (apr_os_imp_time_t **ostime, apr_time_t *aprtime) apr_status_t apr_os_shm_get group__apr__portabile.html g80ebb75a574f97363455dbab05e289d6 (apr_os_shm_t *osshm, apr_shm_t *shm) apr_status_t apr_os_thread_get group__apr__os__thread.html gdda5e99fc387491a2a9436bf6144bd49 (apr_os_thread_t **thethd, apr_thread_t *thd) apr_status_t apr_os_threadkey_get group__apr__os__thread.html g2fd6ec9d398c4f2564765866c3d31219 (apr_os_threadkey_t *thekey, apr_threadkey_t *key) apr_status_t apr_os_thread_put group__apr__os__thread.html g7eda58df34fbc11cd251899e575a1b0f (apr_thread_t **thd, apr_os_thread_t *thethd, apr_pool_t *cont) apr_status_t apr_os_threadkey_put group__apr__os__thread.html g386f6e3e205d422f623132bb50147133 (apr_threadkey_t **key, apr_os_threadkey_t *thekey, apr_pool_t *cont) apr_os_thread_t apr_os_thread_current group__apr__os__thread.html g669a17c3a41db20bbc41c06d0e8881b3 (void) int apr_os_thread_equal group__apr__os__thread.html gc55d4bbc219435046872b1236feb9bfa (apr_os_thread_t tid1, apr_os_thread_t tid2) apr_status_t apr_os_file_put group__apr__portabile.html g17a85a792b05506f293e7cf36f8754b7 (apr_file_t **file, apr_os_file_t *thefile, apr_int32_t flags, apr_pool_t *cont) apr_status_t apr_os_pipe_put group__apr__portabile.html g8886290c57248bc4d6c1e4802cc377f0 (apr_file_t **file, apr_os_file_t *thefile, apr_pool_t *cont) apr_status_t apr_os_pipe_put_ex group__apr__portabile.html ga3b025a01b6e9b71e402abba74fe3b93 (apr_file_t **file, apr_os_file_t *thefile, int register_cleanup, apr_pool_t *cont) apr_status_t apr_os_dir_put group__apr__portabile.html g5087057e23ff6b79ae31ef6e7cc7301e (apr_dir_t **dir, apr_os_dir_t *thedir, apr_pool_t *cont) apr_status_t apr_os_sock_put group__apr__portabile.html g729bd6825dfadd814de2aa602462d838 (apr_socket_t **sock, apr_os_sock_t *thesock, apr_pool_t *cont) apr_status_t apr_os_sock_make group__apr__portabile.html g5df9f6b1b9c07bfeca3685118760eefc (apr_socket_t **apr_sock, apr_os_sock_info_t *os_sock_info, apr_pool_t *cont) apr_status_t apr_os_proc_mutex_put group__apr__portabile.html g885f99da0c19912293b5b7bf9df21b02 (apr_proc_mutex_t **pmutex, apr_os_proc_mutex_t *ospmutex, apr_pool_t *cont) apr_status_t apr_os_imp_time_put group__apr__portabile.html g8ba8b7036b84e260c1cf519c3247a7d4 (apr_time_t *aprtime, apr_os_imp_time_t **ostime, apr_pool_t *cont) apr_status_t apr_os_exp_time_put group__apr__portabile.html g59486f31d5b591863ed83e67cc8106b1 (apr_time_exp_t *aprtime, apr_os_exp_time_t **ostime, apr_pool_t *cont) apr_status_t apr_os_shm_put group__apr__portabile.html gac2b48e4ea4ac8f959cd0e78ede6c5f2 (apr_shm_t **shm, apr_os_shm_t *osshm, apr_pool_t *cont) apr_status_t apr_os_dso_handle_put group__apr__os__dso.html gc8852ec406fad593be38c0dfbb401633 (apr_dso_handle_t **dso, apr_os_dso_handle_t thedso, apr_pool_t *pool) apr_status_t apr_os_dso_handle_get group__apr__os__dso.html g35f9c50b7e546d0c33985442a9c4aa6e (apr_os_dso_handle_t *dso, apr_dso_handle_t *aprdso) const char * apr_os_default_encoding group__apr__portabile.html g6e21845a4a5f3b7dd107b2beea50c91e (apr_pool_t *pool) const char * apr_os_locale_encoding group__apr__portabile.html gf4c49baaf6cb115c6c92e74e4a40fd46 (apr_pool_t *pool) apr_proc_mutex.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__proc__mutex_8h apr.h apr_pools.h apr_errno.h struct apr_proc_mutex_t apr_proc_mutex_t group__apr__proc__mutex.html g0fae3a1ab686cd1f252c6062e4c97bd2 apr_lockmech_e group__apr__proc__mutex.html g75dd95a48a1e855a87b509b522746ed4 APR_LOCK_FCNTL group__apr__proc__mutex.html gg75dd95a48a1e855a87b509b522746ed4d9dad69d83d1e112054ad21a7e4e16b3 APR_LOCK_FLOCK group__apr__proc__mutex.html gg75dd95a48a1e855a87b509b522746ed41d06f73a37dae31233299401c9594b41 APR_LOCK_SYSVSEM group__apr__proc__mutex.html gg75dd95a48a1e855a87b509b522746ed4642536695bd4c233761a15d48b1d6487 APR_LOCK_PROC_PTHREAD group__apr__proc__mutex.html gg75dd95a48a1e855a87b509b522746ed4bd5e7cca2c9f6023b541131f3841057a APR_LOCK_POSIXSEM group__apr__proc__mutex.html gg75dd95a48a1e855a87b509b522746ed46d65d9d745e13d8759bd8f1057f27041 APR_LOCK_DEFAULT group__apr__proc__mutex.html gg75dd95a48a1e855a87b509b522746ed4e91fb435c45216bcf84f506db99d0f19 apr_status_t apr_proc_mutex_create group__apr__proc__mutex.html g57a0ad8cc6209dcbc8cf7c4bdf4a2c22 (apr_proc_mutex_t **mutex, const char *fname, apr_lockmech_e mech, apr_pool_t *pool) apr_status_t apr_proc_mutex_child_init group__apr__proc__mutex.html g52c440b92eda07dc9c851a4e98f2ac83 (apr_proc_mutex_t **mutex, const char *fname, apr_pool_t *pool) apr_status_t apr_proc_mutex_lock group__apr__proc__mutex.html g9af7c9eabf4f99a5a33b41dc322af06f (apr_proc_mutex_t *mutex) apr_status_t apr_proc_mutex_trylock group__apr__proc__mutex.html g7c41927ce5014374eb4fc66d410f9513 (apr_proc_mutex_t *mutex) apr_status_t apr_proc_mutex_unlock group__apr__proc__mutex.html g4ecd9a73fbb0e6e6853e5d0769bbb183 (apr_proc_mutex_t *mutex) apr_status_t apr_proc_mutex_destroy group__apr__proc__mutex.html ga692ccd799305e0166fb81f258870830 (apr_proc_mutex_t *mutex) apr_status_t apr_proc_mutex_cleanup group__apr__proc__mutex.html g71ec4d283f58e893322f44116e6f8ea2 (void *mutex) const char * apr_proc_mutex_lockfile group__apr__proc__mutex.html gd4dcc5ec2a5a6ede7be178e13f56377a (apr_proc_mutex_t *mutex) const char * apr_proc_mutex_name group__apr__proc__mutex.html g3e5cf6b6fd0736502efd91312d50881c (apr_proc_mutex_t *mutex) const char * apr_proc_mutex_defname group__apr__proc__mutex.html gf4425adc130f83784c552b6bc1563036 (void) apr_pool_t * apr_proc_mutex_pool_get group__apr__proc__mutex.html g9d7eda31ec4ad2183ddfcbff2f07daf9 (const apr_proc_mutex_t *theproc_mutex) apr_random.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__random_8h apr_pools.h apr_thread_proc.h apr_crypto_hash_t struct apr_crypto_hash_t apr_crypto_hash_t group__apr__random.html g30fbaf80424a9f1a0e9cc51072f65127 void apr_crypto_hash_init_t group__apr__random.html gd2775bc1cdb376d9dec0e97283b4bdd9 (apr_crypto_hash_t *hash) void apr_crypto_hash_add_t group__apr__random.html g2f8a4fb18078a76357327ea55936c1ea (apr_crypto_hash_t *hash, const void *data, apr_size_t bytes) void apr_crypto_hash_finish_t group__apr__random.html gb70ea9133870efdb5532d20d4bcf7442 (apr_crypto_hash_t *hash, unsigned char *result) struct apr_random_t apr_random_t group__apr__random.html g33073741e56b1bafe52ba58cefcbbf96 apr_crypto_hash_t * apr_crypto_sha256_new group__apr__random.html ge992c6f642e9661d2417cd8f2df8d345 (apr_pool_t *p) void apr_random_init group__apr__random.html g0184a90774212132f883c463811aacdc (apr_random_t *g, apr_pool_t *p, apr_crypto_hash_t *pool_hash, apr_crypto_hash_t *key_hash, apr_crypto_hash_t *prng_hash) apr_random_t * apr_random_standard_new group__apr__random.html g7a73c9bcf026b63847aeae483c53191f (apr_pool_t *p) void apr_random_add_entropy group__apr__random.html g8cf2875644c1dffc0c336289bd370efb (apr_random_t *g, const void *entropy_, apr_size_t bytes) apr_status_t apr_random_insecure_bytes group__apr__random.html gb9a63359bb9543d746e6fd46933b7256 (apr_random_t *g, void *random, apr_size_t bytes) apr_status_t apr_random_secure_bytes group__apr__random.html g9f0607e06656a1c76cc5ee878fd94f09 (apr_random_t *g, void *random, apr_size_t bytes) void apr_random_barrier group__apr__random.html g37d8d7529cf972c605ebce97c57f8825 (apr_random_t *g) apr_status_t apr_random_secure_ready group__apr__random.html g99d0c0722eeef2951e8ccede2e1451fa (apr_random_t *r) apr_status_t apr_random_insecure_ready group__apr__random.html g6465698bdc752d07abc8c515aac6e2c0 (apr_random_t *r) void apr_random_after_fork group__apr__random.html ga1ab9b8adeeb6e37bb29def249ff9e6a (apr_proc_t *proc) apr_ring.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__ring_8h apr_general.h #define APR_RING_ENTRY group__apr__ring.html g095edad4bcb6975014ed9584930f7819 (elem) #define APR_RING_HEAD group__apr__ring.html g2953b8d4034077c4020616282e6c0b67 (head, elem) #define APR_RING_SENTINEL group__apr__ring.html g54210090292ebafcd0a0d75d9ff1563d (hp, elem, link) #define APR_RING_FIRST group__apr__ring.html gcacd9cfca24feb7ff754d4008422efcb (hp) #define APR_RING_LAST group__apr__ring.html g8b927069ba9dc13defaf45a87267b5d3 (hp) #define APR_RING_NEXT group__apr__ring.html ge42e4f7148719aa534bdbbc82be26a06 (ep, link) #define APR_RING_PREV group__apr__ring.html g82d45623d505d59ea5619cf8f63d0ebb (ep, link) #define APR_RING_INIT group__apr__ring.html g245e1a73b162a4a68ebd54c84683729d (hp, elem, link) #define APR_RING_EMPTY group__apr__ring.html g9b64ad6eebea19f896d2aa90172b6b9a (hp, elem, link) #define APR_RING_ELEM_INIT group__apr__ring.html ge5048ecda4b26b012ee93c2c830058cb (ep, link) #define APR_RING_SPLICE_BEFORE group__apr__ring.html g438e7369e650ee07ac98ed0731589750 (lep, ep1, epN, link) #define APR_RING_SPLICE_AFTER group__apr__ring.html g53e6564eba59d7e734a0ce03cb418a42 (lep, ep1, epN, link) #define APR_RING_INSERT_BEFORE group__apr__ring.html g76f9a04f932b3377073fa4e30d745564 (lep, nep, link) #define APR_RING_INSERT_AFTER group__apr__ring.html g40453637d00c853f3a212a30c1f2cb41 (lep, nep, link) #define APR_RING_SPLICE_HEAD group__apr__ring.html g592e71a7cf219fc70f4fc47c60ef4c64 (hp, ep1, epN, elem, link) #define APR_RING_SPLICE_TAIL group__apr__ring.html g51e02e214fb6e218f45ff23cbd1f7abc (hp, ep1, epN, elem, link) #define APR_RING_INSERT_HEAD group__apr__ring.html gd59352546dc9253c0057ad43cf728a63 (hp, nep, elem, link) #define APR_RING_INSERT_TAIL group__apr__ring.html g235311035184125d72ce0689c9949a3e (hp, nep, elem, link) #define APR_RING_CONCAT group__apr__ring.html g34ee7a0d6daa61117006bb74498ff5aa (h1, h2, elem, link) #define APR_RING_PREPEND group__apr__ring.html g4d5aaa9b6f02f96f98f234a0a428474d (h1, h2, elem, link) #define APR_RING_UNSPLICE group__apr__ring.html g1d725b0a9ea7ff88f771e37ec130c13b (ep1, epN, link) #define APR_RING_REMOVE group__apr__ring.html gab4a57544bdb660ec1e306137387d9d7 (ep, link) #define APR_RING_FOREACH group__apr__ring.html g7dc7b26e72f836d27e8e0c87da14fb4a (ep, head, elem, link) #define APR_RING_FOREACH_SAFE group__apr__ring.html g9a1e91eef86d676d1622dc5b9ddd6f89 (ep1, ep2, head, elem, link) #define APR_RING_CHECK_ONE group__apr__ring.html g33c7cfbea7c688c7bd0a3d36609f318b (msg, ptr) #define APR_RING_CHECK group__apr__ring.html g97bb4dcc313145496e6b05855f9c6e2b (hp, elem, link, msg) #define APR_RING_CHECK_CONSISTENCY group__apr__ring.html g6b0f2091527ee9c7a1511cb6f172a0a7 (hp, elem, link) #define APR_RING_CHECK_ELEM group__apr__ring.html g5500df0e96dea1a3258f1e92b28fea0a (ep, elem, link, msg) #define APR_RING_CHECK_ELEM_CONSISTENCY group__apr__ring.html gb7070ae5cf69bf16178a0e0e397c5b38 (ep, elem, link) apr_shm.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__shm_8h apr.h apr_pools.h apr_errno.h struct apr_shm_t apr_shm_t group__apr__shm.html g79e8c16bdeaf7ade4ef0f935249e7c2f apr_status_t apr_shm_create group__apr__shm.html gc370c4943c22505ce2b0d57c51805480 (apr_shm_t **m, apr_size_t reqsize, const char *filename, apr_pool_t *pool) apr_status_t apr_shm_remove group__apr__shm.html gee8b7d9b952ff6157ddbb00fabb477e0 (const char *filename, apr_pool_t *pool) apr_status_t apr_shm_destroy group__apr__shm.html g7de5b65a9c7d9840bfa289854f8d59d4 (apr_shm_t *m) apr_status_t apr_shm_attach group__apr__shm.html g0e542941c280cb72b78e30d452464759 (apr_shm_t **m, const char *filename, apr_pool_t *pool) apr_status_t apr_shm_detach group__apr__shm.html g900095a06d3fdb4cdd04ca4449a9d42a (apr_shm_t *m) void * apr_shm_baseaddr_get group__apr__shm.html gde739e1f5f4e88c93256a63ebfd47d4d (const apr_shm_t *m) apr_size_t apr_shm_size_get group__apr__shm.html g557ae85d3f225620a77ad80caeaacac7 (const apr_shm_t *m) apr_pool_t * apr_shm_pool_get group__apr__shm.html g072c40df7643e697885935ae65545098 (const apr_shm_t *theshm) apr_signal.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__signal_8h apr.h apr_pools.h void apr_sigfunc_t group__apr__signal.html g2afd99d29d57dc1358aeccedb714368a (int) apr_sigfunc_t * apr_signal group__apr__signal.html g77ecb509002eeb784c06014c635a9a5a (int signo, apr_sigfunc_t *func) const char * apr_signal_description_get group__apr__signal.html g685b8a8e5e7a5067e3fe3456c5c1a150 (int signum) void apr_signal_init group__apr__signal.html g76f1701a2f33697425b3fa6fa44a192b (apr_pool_t *pglobal) apr_status_t apr_signal_block group__apr__signal.html g111744ccf1db400150bf7c14c2cfc312 (int signum) apr_status_t apr_signal_unblock group__apr__signal.html g9d8a1d786de4ace76f711806e9e34071 (int signum) apr_strings.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__strings_8h apr.h apr_errno.h apr_pools.h apr_want.h int apr_strnatcmp group__apr__strings.html gbe7e226c26e1535d787a7836b9c8d0a1 (char const *a, char const *b) int apr_strnatcasecmp group__apr__strings.html g1708d51c4989934fec663b23366430f3 (char const *a, char const *b) char * apr_pstrdup group__apr__strings.html gbc79e99ff19abbd7cfd18308c5f85d47 (apr_pool_t *p, const char *s) char * apr_pstrmemdup group__apr__strings.html g0eae1185559578c0f9792413305eca25 (apr_pool_t *p, const char *s, apr_size_t n) char * apr_pstrndup group__apr__strings.html gd17053ffe6604d908ae7cac33543a6b4 (apr_pool_t *p, const char *s, apr_size_t n) void * apr_pmemdup group__apr__strings.html gc3886f14ecf5aed8fe4493087799685c (apr_pool_t *p, const void *m, apr_size_t n) char * apr_pstrcat group__apr__strings.html g7bd80c95ffb7b3f96bc78e7b5b5b0045 (apr_pool_t *p,...) char * apr_pstrcatv group__apr__strings.html g15d0853af252a894e288c682b8f84309 (apr_pool_t *p, const struct iovec *vec, apr_size_t nvec, apr_size_t *nbytes) char * apr_pvsprintf group__apr__strings.html g05248544edebc71070140d2ce5969c10 (apr_pool_t *p, const char *fmt, va_list ap) char * apr_psprintf group__apr__strings.html g3eca76b8d293c5c3f8021e45eda813d8 (apr_pool_t *p, const char *fmt,...) char * apr_cpystrn group__apr__strings.html g69700a825e82dd646f9f166599040431 (char *dst, const char *src, apr_size_t dst_size) char * apr_collapse_spaces group__apr__strings.html gfd92441a5f4fa3b5f5aa49e1f9884bc7 (char *dest, const char *src) apr_status_t apr_tokenize_to_argv group__apr__strings.html g5213cee7e8ba799df9dc2e57f71cd4dd (const char *arg_str, char ***argv_out, apr_pool_t *token_context) char * apr_strtok group__apr__strings.html g1cf7fcb5843707ece733e27aad85c516 (char *str, const char *sep, char **last) int apr_snprintf group___a_p_r___strings___snprintf.html gf0d0becc04278df5172f0ce5905f8ff9 (char *buf, apr_size_t len, const char *format,...) int apr_vsnprintf group___a_p_r___strings___snprintf.html gf6bf63e240e48b517644ff3e99e49c26 (char *buf, apr_size_t len, const char *format, va_list ap) char * apr_itoa group__apr__strings.html ge1c780f2d908a286a141e4b885254a9c (apr_pool_t *p, int n) char * apr_ltoa group__apr__strings.html g578ea3fa78957c6b2e9b8ab4cbfd60b1 (apr_pool_t *p, long n) char * apr_off_t_toa group__apr__strings.html gbce9fb74bbad08d795389bfe859053d3 (apr_pool_t *p, apr_off_t n) apr_status_t apr_strtoff group__apr__strings.html g1583688e0777398174f62e46a522ae8f (apr_off_t *offset, const char *buf, char **end, int base) apr_int64_t apr_strtoi64 group__apr__strings.html g1da34829609e8976f498b235afd6cbe4 (const char *buf, char **end, int base) apr_int64_t apr_atoi64 group__apr__strings.html gf0653577ee64efb5406d932db95cce3d (const char *buf) char * apr_strfsize group__apr__strings.html gf66522fda6d2dfa540fdc58831405980 (apr_off_t size, char *buf) apr_support.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__support_8h apr.h apr_network_io.h apr_file_io.h apr_status_t apr_wait_for_io_or_timeout group__apr__support.html g324ffc66a6d42df2325ce999001c1c36 (apr_file_t *f, apr_socket_t *s, int for_read) apr_tables.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__tables_8h apr.h apr_pools.h apr_array_header_t apr_table_entry_t #define APR_ARRAY_IDX group__apr__tables.html g84066caaa4c7632671af18c229809fc4 (ary, i, type) #define APR_ARRAY_PUSH group__apr__tables.html g1833b0f940ec03d0b95926812152e1ca (ary, type) #define APR_OVERLAP_TABLES_SET group__apr__tables.html g867455bb7008872e03b08c0742f9698c #define APR_OVERLAP_TABLES_MERGE group__apr__tables.html g553eea6eb6fea4bafaf4cbd7acafdf5f struct apr_table_t apr_table_t group__apr__tables.html gd7ea82d6608a4a633fc3775694ab71e4 struct apr_array_header_t apr_array_header_t group__apr__tables.html g63e76617a1cd3828bbaefcbf93928ec2 struct apr_table_entry_t apr_table_entry_t group__apr__tables.html gc7e0151b714e58b75c597dafed75df3f int( apr_table_do_callback_fn_t group__apr__tables.html g0a59d6b321ade650c7cfa31d7fa93dcc )(void *rec, const char *key, const char *value) const apr_array_header_t * apr_table_elts group__apr__tables.html gea3005541cce67481f48ab201b5c0cf3 (const apr_table_t *t) int apr_is_empty_table group__apr__tables.html g198e52683a86ecf8df9642990c220ff7 (const apr_table_t *t) int apr_is_empty_array group__apr__tables.html gcae19f5b2182d5813f4ef3050f82ff29 (const apr_array_header_t *a) apr_array_header_t * apr_array_make group__apr__tables.html g8f4308b5a1636ec06544113a9c283304 (apr_pool_t *p, int nelts, int elt_size) void * apr_array_push group__apr__tables.html gc08267b32905197dd02ffff3314d9603 (apr_array_header_t *arr) void * apr_array_pop group__apr__tables.html gd1ab3e0ca2de25a7ff2fbed393380972 (apr_array_header_t *arr) void apr_array_clear group__apr__tables.html g6a6436840256ed8a47b5d6be4ea2ae03 (apr_array_header_t *arr) void apr_array_cat group__apr__tables.html g532e0f0e4d1e2b7243ebdb7eb1f783c7 (apr_array_header_t *dst, const apr_array_header_t *src) apr_array_header_t * apr_array_copy group__apr__tables.html g327e2d5e29fa49d5a2a31295a6932950 (apr_pool_t *p, const apr_array_header_t *arr) apr_array_header_t * apr_array_copy_hdr group__apr__tables.html g6203e9f731bf43e7373857c38d04397d (apr_pool_t *p, const apr_array_header_t *arr) apr_array_header_t * apr_array_append group__apr__tables.html g893cade58c5fabecb593cb4ffac7e9be (apr_pool_t *p, const apr_array_header_t *first, const apr_array_header_t *second) char * apr_array_pstrcat group__apr__tables.html g6232817e4a32ee5619c99fe55e145c7a (apr_pool_t *p, const apr_array_header_t *arr, const char sep) apr_table_t * apr_table_make group__apr__tables.html g7b0a16a1388c68e66bff32190cf092f6 (apr_pool_t *p, int nelts) apr_table_t * apr_table_copy group__apr__tables.html ge69f2b0b593bcdbf4c678a0f3dfde5f3 (apr_pool_t *p, const apr_table_t *t) apr_table_t * apr_table_clone group__apr__tables.html g7e8bc16b272840302545ed4a6a082a6e (apr_pool_t *p, const apr_table_t *t) void apr_table_clear group__apr__tables.html g03f03de545f9a18e25420f261938ffea (apr_table_t *t) const char * apr_table_get group__apr__tables.html g4db13e3915c6b9a3142b175d4c15d915 (const apr_table_t *t, const char *key) void apr_table_set group__apr__tables.html gf101d92c2f6343cdf4ec062ff416f244 (apr_table_t *t, const char *key, const char *val) void apr_table_setn group__apr__tables.html g1fe7bb25d4027bb79d3c2bb41d8d8b75 (apr_table_t *t, const char *key, const char *val) void apr_table_unset group__apr__tables.html gb0df7a237feb4cd9beed201f4e236127 (apr_table_t *t, const char *key) void apr_table_merge group__apr__tables.html gd5d10eca30b76fb44d999b4dfda8d632 (apr_table_t *t, const char *key, const char *val) void apr_table_mergen group__apr__tables.html g1d50805448114c476cfcd00d5ee3e3a8 (apr_table_t *t, const char *key, const char *val) void apr_table_add group__apr__tables.html gb2ea874754a0fbf139b7316c1f837f12 (apr_table_t *t, const char *key, const char *val) void apr_table_addn group__apr__tables.html gff9fdbd8f499f0dfb07123230e19ea54 (apr_table_t *t, const char *key, const char *val) apr_table_t * apr_table_overlay group__apr__tables.html g783b5c439d46c109bb45e7bc1a6d7ef2 (apr_pool_t *p, const apr_table_t *overlay, const apr_table_t *base) int apr_table_do group__apr__tables.html g5917e542ae910961ee48b0ec2d09a879 (apr_table_do_callback_fn_t *comp, void *rec, const apr_table_t *t,...) int apr_table_vdo group__apr__tables.html g753c5247c9cd7f90c8958b64d9b6aeae (apr_table_do_callback_fn_t *comp, void *rec, const apr_table_t *t, va_list vp) void apr_table_overlap group__apr__tables.html g603ebc9b97703b855f8ad77640165372 (apr_table_t *a, const apr_table_t *b, unsigned flags) void apr_table_compress group__apr__tables.html g7f2a652a0cdaf8c20588823c97a3007f (apr_table_t *t, unsigned flags) apr_thread_cond.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__thread__cond_8h apr.h apr_pools.h apr_errno.h apr_time.h apr_thread_mutex.h struct apr_thread_cond_t apr_thread_cond_t group__apr__thread__cond.html ge8f918d38bf1c58bc09670eee456ae5e apr_status_t apr_thread_cond_create group__apr__thread__cond.html gb39e8b722d46d23466e9e346ada85a7f (apr_thread_cond_t **cond, apr_pool_t *pool) apr_status_t apr_thread_cond_wait group__apr__thread__cond.html g789719a5f02bdab8b8abbc8bddd0406b (apr_thread_cond_t *cond, apr_thread_mutex_t *mutex) apr_status_t apr_thread_cond_timedwait group__apr__thread__cond.html g67f2feecb7fa1929cc9b354dafd00306 (apr_thread_cond_t *cond, apr_thread_mutex_t *mutex, apr_interval_time_t timeout) apr_status_t apr_thread_cond_signal group__apr__thread__cond.html gdf7ad6c2731bc6128f969d3efc7ff5eb (apr_thread_cond_t *cond) apr_status_t apr_thread_cond_broadcast group__apr__thread__cond.html gfbbedd2a07629fe3186343035ae83152 (apr_thread_cond_t *cond) apr_status_t apr_thread_cond_destroy group__apr__thread__cond.html g049e646e23c670f3a79fe25401b9c1b0 (apr_thread_cond_t *cond) apr_pool_t * apr_thread_cond_pool_get group__apr__thread__cond.html gfc2d7f2907eb12e5543c971a4c0140ee (const apr_thread_cond_t *thethread_cond) apr_thread_mutex.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__thread__mutex_8h apr.h apr_errno.h apr_pools.h #define APR_THREAD_MUTEX_DEFAULT group__apr__thread__mutex.html g579050872f9aff06e773b084264f7d06 #define APR_THREAD_MUTEX_NESTED group__apr__thread__mutex.html gf421e0445dbc3c739130f5f6544c2e78 #define APR_THREAD_MUTEX_UNNESTED group__apr__thread__mutex.html gc31107f3db115edc0c26ea48943c6a16 struct apr_thread_mutex_t apr_thread_mutex_t group__apr__thread__mutex.html g95712060ba3a192036416e1ccef1db75 apr_status_t apr_thread_mutex_create group__apr__thread__mutex.html g927e99580a669f577fbcb6508814ff12 (apr_thread_mutex_t **mutex, unsigned int flags, apr_pool_t *pool) apr_status_t apr_thread_mutex_lock group__apr__thread__mutex.html g1430fd10d8d260c0e3832c959742a977 (apr_thread_mutex_t *mutex) apr_status_t apr_thread_mutex_trylock group__apr__thread__mutex.html g6ac9c8ebee83ff89416f00231a858798 (apr_thread_mutex_t *mutex) apr_status_t apr_thread_mutex_unlock group__apr__thread__mutex.html g74e58f753737283f9b826d8cdcbcb4bf (apr_thread_mutex_t *mutex) apr_status_t apr_thread_mutex_destroy group__apr__thread__mutex.html ge80e6f9c2a2fbaa94f5a6954e02118f4 (apr_thread_mutex_t *mutex) apr_pool_t * apr_thread_mutex_pool_get group__apr__thread__mutex.html gfec9362d92f8bd67660b97cb3c246544 (const apr_thread_mutex_t *thethread_mutex) apr_thread_proc.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__thread__proc_8h apr.h apr_file_io.h apr_pools.h apr_errno.h apr_proc_t #define APR_PROC_CHECK_EXIT group__apr__thread__proc.html g689b0f3953cde83a4092931bad8b7183 (x) #define APR_PROC_CHECK_SIGNALED group__apr__thread__proc.html ga0a8a0b8785cc9392059c7accd71f5f6 (x) #define APR_PROC_CHECK_CORE_DUMP group__apr__thread__proc.html g2249e96191b5d98d33fb7875bce49410 (x) #define APR_NO_PIPE group__apr__thread__proc.html gb7cfcb8ed24e6c0a76cd41b5b113ae95 #define APR_FULL_BLOCK group__apr__thread__proc.html g646af57314e71f4647243f36dd03e5ea #define APR_FULL_NONBLOCK group__apr__thread__proc.html ge0707f76da785490830fc3491093767c #define APR_PARENT_BLOCK group__apr__thread__proc.html g8653bab028b1c2b98754babc2547f988 #define APR_CHILD_BLOCK group__apr__thread__proc.html gcad9da4db7a22f46715e50fb8ec1c939 #define APR_NO_FILE group__apr__thread__proc.html g597fb6a501c20cc3a597fe6c613f4310 #define APR_READ_BLOCK group__apr__thread__proc.html gf8295548cb0821ee02249d6de8336bcb #define APR_WRITE_BLOCK group__apr__thread__proc.html g36ff2de9664ad6995bd488b4ac715c9c #define APR_NO_FILE group__apr__thread__proc.html g597fb6a501c20cc3a597fe6c613f4310 #define APR_LIMIT_CPU group__apr__thread__proc.html gad8a94c7ac2be58fe035b2fd6efec84f #define APR_LIMIT_MEM group__apr__thread__proc.html g6dbb01bb357b078acff8fd87e9c494e8 #define APR_LIMIT_NPROC group__apr__thread__proc.html g72e9be453a20f4e78bc6d7bd95d7c333 #define APR_LIMIT_NOFILE group__apr__thread__proc.html g18d73099d66988698a9ad2aebdce2c9f #define APR_OC_REASON_DEATH group___a_p_r___o_c.html g93a18b17cfedca0c7c99c696508c935b #define APR_OC_REASON_UNWRITABLE group___a_p_r___o_c.html ge4cb4983512df7df00c9c0401efba9c9 #define APR_OC_REASON_RESTART group___a_p_r___o_c.html g5ae054b0b4c7c8eea911c146ae9ccdce #define APR_OC_REASON_UNREGISTER group___a_p_r___o_c.html g7fe88662b788e07800290f68575b2f4b #define APR_OC_REASON_LOST group___a_p_r___o_c.html g5d441798b20b93bd1f609264d03690fb #define APR_OC_REASON_RUNNING group___a_p_r___o_c.html ga4a7ca44f23d67e7e19fd59bf41abd6a #define APR_PROC_DETACH_FOREGROUND group__apr__thread__proc.html gb57b448a464ac299c03d6127781df152 #define APR_PROC_DETACH_DAEMONIZE group__apr__thread__proc.html gb4de7134fcc66c4127ae65b68631f846 void( apr_child_errfn_t group__apr__thread__proc.html g8f8642f468f05b0ac2b1426b723af100 )(apr_pool_t *proc, apr_status_t err, const char *description) struct apr_thread_t apr_thread_t group__apr__thread__proc.html g646c71351e723d84f8cc8c8d1d5937be struct apr_threadattr_t apr_threadattr_t group__apr__thread__proc.html g35de571e9944871c10b38d8feef885ac struct apr_procattr_t apr_procattr_t group__apr__thread__proc.html g0d83919a6a0dd609598a864917f8b339 struct apr_thread_once_t apr_thread_once_t group__apr__thread__proc.html g91841bcf20d0579e8e6acc6d3c220ac1 struct apr_threadkey_t apr_threadkey_t group__apr__thread__proc.html g337c9c1bd2d47740022071a5c41f2edb struct apr_other_child_rec_t apr_other_child_rec_t group__apr__thread__proc.html gfc52ee8b19a7b222278d31ebb3f11a71 void *(APR_THREAD_FUNC * apr_thread_start_t group__apr__thread__proc.html g37193850d158ca870fc8f8759f0725a9 )(apr_thread_t *, void *) apr_cmdtype_e group__apr__thread__proc.html gdcb981d7748c580eb69ac11dbf709060 APR_SHELLCMD group__apr__thread__proc.html ggdcb981d7748c580eb69ac11dbf70906002f5d83f79e2c12bfca5a86d7f14caa6 APR_PROGRAM group__apr__thread__proc.html ggdcb981d7748c580eb69ac11dbf709060c128c1239a524cf21300b8ed6248ac99 APR_PROGRAM_ENV group__apr__thread__proc.html ggdcb981d7748c580eb69ac11dbf7090606a3f9694aced0e449f6bb4b3e437233a APR_PROGRAM_PATH group__apr__thread__proc.html ggdcb981d7748c580eb69ac11dbf709060a424b51bdc16e4d18bb757a32c6a346a APR_SHELLCMD_ENV group__apr__thread__proc.html ggdcb981d7748c580eb69ac11dbf709060fcefc45317b67fad6dc5459772ce9409 apr_wait_how_e group__apr__thread__proc.html g5e52d786644f3b66d6180571e68c7260 APR_WAIT group__apr__thread__proc.html gg5e52d786644f3b66d6180571e68c7260057885ccf4b8b707e0d115c691037de4 APR_NOWAIT group__apr__thread__proc.html gg5e52d786644f3b66d6180571e68c72600163031f6b72b0c4add9108052a672d5 apr_exit_why_e group__apr__thread__proc.html gc097b4fa41e67024711c5983446d0951 APR_PROC_EXIT group__apr__thread__proc.html ggc097b4fa41e67024711c5983446d0951977f140c82333af62aa4bed8c99a3ee2 APR_PROC_SIGNAL group__apr__thread__proc.html ggc097b4fa41e67024711c5983446d09517e3421d18abe458ca27822d19424225b APR_PROC_SIGNAL_CORE group__apr__thread__proc.html ggc097b4fa41e67024711c5983446d09516b667be4983cb59e9bed37ee05a0dcce apr_kill_conditions_e group__apr__thread__proc.html g3eaec78633742e7e0cb9480a21477aff APR_KILL_NEVER group__apr__thread__proc.html gg3eaec78633742e7e0cb9480a21477aff33580ab0809e9498855fbdde8a1714ef APR_KILL_ALWAYS group__apr__thread__proc.html gg3eaec78633742e7e0cb9480a21477afff45d0f72811399b394d1311384e2dfe4 APR_KILL_AFTER_TIMEOUT group__apr__thread__proc.html gg3eaec78633742e7e0cb9480a21477aff16a47aa786b1c1f31ef02353bcae9a1a APR_JUST_WAIT group__apr__thread__proc.html gg3eaec78633742e7e0cb9480a21477aff6ada2605856ac94826edbe824e64e503 APR_KILL_ONLY_ONCE group__apr__thread__proc.html gg3eaec78633742e7e0cb9480a21477aff24d6f47785093be4cea2a922eeaed098 apr_status_t apr_threadattr_create group__apr__thread__proc.html g66c2f55e5dff9ac37bd32e9febd38da5 (apr_threadattr_t **new_attr, apr_pool_t *cont) apr_status_t apr_threadattr_detach_set group__apr__thread__proc.html g85d44b3b021f28116122d5e40e024648 (apr_threadattr_t *attr, apr_int32_t on) apr_status_t apr_threadattr_detach_get group__apr__thread__proc.html ge5b7cdb3de542d1b7b52fe5d9d8cb00b (apr_threadattr_t *attr) apr_status_t apr_threadattr_stacksize_set group__apr__thread__proc.html g7849e0d637338a18cb44f66f11f28ed1 (apr_threadattr_t *attr, apr_size_t stacksize) apr_status_t apr_threadattr_guardsize_set group__apr__thread__proc.html g2e732f2913291180c0c484f57d727140 (apr_threadattr_t *attr, apr_size_t guardsize) apr_status_t apr_thread_create group__apr__thread__proc.html geba6593f43f1de94c2b4495dd72b0e9f (apr_thread_t **new_thread, apr_threadattr_t *attr, apr_thread_start_t func, void *data, apr_pool_t *cont) apr_status_t apr_thread_exit group__apr__thread__proc.html g0e35365e530578bca1b4bea522ac8c85 (apr_thread_t *thd, apr_status_t retval) apr_status_t apr_thread_join group__apr__thread__proc.html g1b950f36fa5bcd5a64887073f46f6d13 (apr_status_t *retval, apr_thread_t *thd) void apr_thread_yield group__apr__thread__proc.html gcd69fb862c069cb6f297f65d64b5c102 (void) apr_status_t apr_thread_once_init group__apr__thread__proc.html g63f3bf667151053e45d5a2029daeda0d (apr_thread_once_t **control, apr_pool_t *p) apr_status_t apr_thread_once group__apr__thread__proc.html g8f3645ee52ff07566c92181b4ce732d8 (apr_thread_once_t *control, void(*func)(void)) apr_status_t apr_thread_detach group__apr__thread__proc.html gdbd186912d5f6f2a19a175e1e02ba10e (apr_thread_t *thd) apr_status_t apr_thread_data_get group__apr__thread__proc.html gd799c8140ed068a12f1dbe134423eae7 (void **data, const char *key, apr_thread_t *thread) apr_status_t apr_thread_data_set group__apr__thread__proc.html ga90d79c9935692db4f27a6573f437221 (void *data, const char *key, apr_status_t(*cleanup)(void *), apr_thread_t *thread) apr_status_t apr_threadkey_private_create group__apr__thread__proc.html gcb9553b2b3165388bfc0a54b1148804a (apr_threadkey_t **key, void(*dest)(void *), apr_pool_t *cont) apr_status_t apr_threadkey_private_get group__apr__thread__proc.html g371c87c122cc3df0b7ad0031f6e11167 (void **new_mem, apr_threadkey_t *key) apr_status_t apr_threadkey_private_set group__apr__thread__proc.html g63501a064ca7f1818aa056b40146aa0b (void *priv, apr_threadkey_t *key) apr_status_t apr_threadkey_private_delete group__apr__thread__proc.html g20b9b79892a6532784fff023a4ebd8cf (apr_threadkey_t *key) apr_status_t apr_threadkey_data_get group__apr__thread__proc.html ge203664972dfc5c555620ae1788f5b48 (void **data, const char *key, apr_threadkey_t *threadkey) apr_status_t apr_threadkey_data_set group__apr__thread__proc.html g1059158f34dded87f21ba82af1211951 (void *data, const char *key, apr_status_t(*cleanup)(void *), apr_threadkey_t *threadkey) apr_status_t apr_procattr_create group__apr__thread__proc.html g90f8ef684e601c110daad9b63da53cf3 (apr_procattr_t **new_attr, apr_pool_t *cont) apr_status_t apr_procattr_io_set group__apr__thread__proc.html g2b1598bc6f5ab0bfcf2e55096d563c98 (apr_procattr_t *attr, apr_int32_t in, apr_int32_t out, apr_int32_t err) apr_status_t apr_procattr_child_in_set group__apr__thread__proc.html g24f40119b1aa07dd45a681a44915cb1b (struct apr_procattr_t *attr, apr_file_t *child_in, apr_file_t *parent_in) apr_status_t apr_procattr_child_out_set group__apr__thread__proc.html gbb97e9a49021ab4452ae3f1a281c977f (struct apr_procattr_t *attr, apr_file_t *child_out, apr_file_t *parent_out) apr_status_t apr_procattr_child_err_set group__apr__thread__proc.html g6fad364c6c820e37c0915435cfb3921f (struct apr_procattr_t *attr, apr_file_t *child_err, apr_file_t *parent_err) apr_status_t apr_procattr_dir_set group__apr__thread__proc.html g97766f50b0ae083a2f8a28e698a59baa (apr_procattr_t *attr, const char *dir) apr_status_t apr_procattr_cmdtype_set group__apr__thread__proc.html g1426acc5bdd96385769e7b42bfa6ebbd (apr_procattr_t *attr, apr_cmdtype_e cmd) apr_status_t apr_procattr_detach_set group__apr__thread__proc.html g3ccca55041f648f00f0605673d4e0fdc (apr_procattr_t *attr, apr_int32_t detach) apr_status_t apr_procattr_limit_set group__apr__thread__proc.html g4de85cfd54d27476dbb943955c1b0a2a (apr_procattr_t *attr, apr_int32_t what, struct rlimit *limit) apr_status_t apr_procattr_child_errfn_set group__apr__thread__proc.html ga39deba0837e0772754ad41589b733cf (apr_procattr_t *attr, apr_child_errfn_t *errfn) apr_status_t apr_procattr_error_check_set group__apr__thread__proc.html g24076f050e9385af09ad8c3931d8dc43 (apr_procattr_t *attr, apr_int32_t chk) apr_status_t apr_procattr_addrspace_set group__apr__thread__proc.html g0f1dd02408995767efcb9c0d9c775620 (apr_procattr_t *attr, apr_int32_t addrspace) apr_status_t apr_procattr_user_set group__apr__thread__proc.html g741ed3dc047b935b091a21528c49bb19 (apr_procattr_t *attr, const char *username, const char *password) apr_status_t apr_procattr_group_set group__apr__thread__proc.html g391f0d3831a5894ea2118762789a395d (apr_procattr_t *attr, const char *groupname) apr_status_t apr_proc_fork group__apr__thread__proc.html g3d0415bf69b0a629a929833e82758b85 (apr_proc_t *proc, apr_pool_t *cont) apr_status_t apr_proc_create group__apr__thread__proc.html gb51dd90b98d365a969f0ec5c7bef4e14 (apr_proc_t *new_proc, const char *progname, const char *const *args, const char *const *env, apr_procattr_t *attr, apr_pool_t *pool) apr_status_t apr_proc_wait group__apr__thread__proc.html g0936f7a7fe7e2d5e08979c9f343a5a1b (apr_proc_t *proc, int *exitcode, apr_exit_why_e *exitwhy, apr_wait_how_e waithow) apr_status_t apr_proc_wait_all_procs group__apr__thread__proc.html g506183074e8413c3ff597539e4768ea4 (apr_proc_t *proc, int *exitcode, apr_exit_why_e *exitwhy, apr_wait_how_e waithow, apr_pool_t *p) apr_status_t apr_proc_detach group__apr__thread__proc.html g56c2b005792752b63d804f2021596406 (int daemonize) void apr_proc_other_child_register group__apr__thread__proc.html gf8d2be452a819161aa4cd6205a17761e (apr_proc_t *proc, void(*maintenance)(int reason, void *, int status), void *data, apr_file_t *write_fd, apr_pool_t *p) void apr_proc_other_child_unregister group__apr__thread__proc.html g10b1a4b224566c03c97f100ac8a2c830 (void *data) apr_status_t apr_proc_other_child_alert group__apr__thread__proc.html g88701979c4e5ac4b94966c73e0159efd (apr_proc_t *proc, int reason, int status) void apr_proc_other_child_refresh group__apr__thread__proc.html g74a905d90a3476a611adeeb304931a6c (apr_other_child_rec_t *ocr, int reason) void apr_proc_other_child_refresh_all group__apr__thread__proc.html gcff5e867a92619d30c4e78f9ad2a58e3 (int reason) apr_status_t apr_proc_kill group__apr__thread__proc.html g4a5ff2fce2c68460281b0cb3ee0365d5 (apr_proc_t *proc, int sig) void apr_pool_note_subprocess group__apr__thread__proc.html gcbe3fd9491fa35149de28cebcae22f87 (apr_pool_t *a, apr_proc_t *proc, apr_kill_conditions_e how) apr_status_t apr_setup_signal_thread group__apr__thread__proc.html g7adc09cd24568666266edce81cfffbed (void) apr_status_t apr_signal_thread group__apr__thread__proc.html g2e53fa76ff725749c7affe6c81faa9e5 (int(*signal_handler)(int signum)) apr_pool_t * apr_thread_pool_get group__apr__thread__proc.html g089b70ae9d6c64d2675a1fd1e9cd0d0d (const apr_thread_t *thethread) apr_thread_rwlock.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__thread__rwlock_8h apr.h apr_pools.h apr_errno.h struct apr_thread_rwlock_t apr_thread_rwlock_t group__apr__thread__rwlock.html gede9b908e3d9e6a8aed7bd10d0ae0498 apr_status_t apr_thread_rwlock_create group__apr__thread__rwlock.html gdae9c87ad957112406b48947cb1f0e93 (apr_thread_rwlock_t **rwlock, apr_pool_t *pool) apr_status_t apr_thread_rwlock_rdlock group__apr__thread__rwlock.html gd44a106cd9a81eef362d31837ca7018f (apr_thread_rwlock_t *rwlock) apr_status_t apr_thread_rwlock_tryrdlock group__apr__thread__rwlock.html g2bbbc137f5c610e31bf87fd0a60c428e (apr_thread_rwlock_t *rwlock) apr_status_t apr_thread_rwlock_wrlock group__apr__thread__rwlock.html g91543c9f97a6a1265524a5a8f55fef31 (apr_thread_rwlock_t *rwlock) apr_status_t apr_thread_rwlock_trywrlock group__apr__thread__rwlock.html g54c04596f8a1f44630bdda5a25578d63 (apr_thread_rwlock_t *rwlock) apr_status_t apr_thread_rwlock_unlock group__apr__thread__rwlock.html gc7b31112d972abfcac30252e622eb040 (apr_thread_rwlock_t *rwlock) apr_status_t apr_thread_rwlock_destroy group__apr__thread__rwlock.html g136118166f50091fb30011d837a4cdcc (apr_thread_rwlock_t *rwlock) apr_pool_t * apr_thread_rwlock_pool_get group__apr__thread__rwlock.html g3e78c5d8f2e7f4cdad46e912e68edd33 (const apr_thread_rwlock_t *thethread_rwlock) apr_time.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__time_8h apr.h apr_pools.h apr_errno.h apr_time_exp_t #define APR_TIME_C group__apr__time.html gb0d08005432bbda78e03bcd2e235e7d3 (val) #define APR_TIME_T_FMT group__apr__time.html gad2d372b64a68d96b1e4c5f1173eb2c7 #define APR_USEC_PER_SEC group__apr__time.html gb4dd3f3015d25a50f3be3e0e91043abf #define apr_time_sec group__apr__time.html ge0237f70a9a3206b5263c0a474219476 (time) #define apr_time_usec group__apr__time.html ge842c7b471ccf0dc691eb2ff3cc8fc8e (time) #define apr_time_msec group__apr__time.html g05d6c6ea507b74605aa2149a4410076f (time) #define apr_time_as_msec group__apr__time.html g0ab989e84c18e63d36e653aab2821691 (time) #define apr_time_from_sec group__apr__time.html gec56c2c03299a750006bfcc08d64ec32 (sec) #define apr_time_make group__apr__time.html g47e8d04826e56b6ce39ed082d33abc38 (sec, usec) #define APR_RFC822_DATE_LEN group__apr__time.html g33933cf7a3e3c2cf6082c5f6d22ca3e5 #define APR_CTIME_LEN group__apr__time.html g0bd804145d3954f45a6962e9dd10f220 apr_int64_t apr_time_t group__apr__time.html gdb4bde16055748190eae190c55aa02bb apr_int64_t apr_interval_time_t group__apr__time.html gae2129185a395cc393f76fabf4f43e47 apr_int32_t apr_short_interval_time_t group__apr__time.html g3e4663cc0d8b730902ff697c8d3f64be struct apr_time_exp_t apr_time_exp_t group__apr__time.html ge28f2767111a534f263ced95a28489b1 apr_time_t apr_time_now group__apr__time.html gc5cb8713d0681d7b809169a222512287 (void) apr_status_t apr_time_ansi_put group__apr__time.html gc2fec71f18b4a286b2e21f0b74fadce8 (apr_time_t *result, time_t input) apr_status_t apr_time_exp_tz group__apr__time.html gaf3b8ba123feaa0af5a5975b9a8ab8b1 (apr_time_exp_t *result, apr_time_t input, apr_int32_t offs) apr_status_t apr_time_exp_gmt group__apr__time.html gfa8bdd3a4500f66866d8dd54bf69fb71 (apr_time_exp_t *result, apr_time_t input) apr_status_t apr_time_exp_lt group__apr__time.html g34d3b9858de1d3111a4b2ff936ada7f6 (apr_time_exp_t *result, apr_time_t input) apr_status_t apr_time_exp_get group__apr__time.html gc13166685922464d9848bda469e0b3b7 (apr_time_t *result, apr_time_exp_t *input) apr_status_t apr_time_exp_gmt_get group__apr__time.html g0f9fdeae48a45662cb3f198d06c743f0 (apr_time_t *result, apr_time_exp_t *input) void apr_sleep group__apr__time.html g8ffddc239a3d8051d9972cee080fd761 (apr_interval_time_t t) apr_status_t apr_rfc822_date group__apr__time.html gd77b323dd4402ac89c51240f19015df5 (char *date_str, apr_time_t t) apr_status_t apr_ctime group__apr__time.html gd1fcb8f26d508fbb34ea2beca7bc851e (char *date_str, apr_time_t t) apr_status_t apr_strftime group__apr__time.html g3f5e1aa45e735f3bcf8c13fb718c214f (char *s, apr_size_t *retsize, apr_size_t max, const char *format, apr_time_exp_t *tm) void apr_time_clock_hires group__apr__time.html gc47e0b54f17857f0ce2925b2930b5500 (apr_pool_t *p) const char apr_month_snames group__apr__time.html g77382d017a2bef80d44478e0b41557a4 [12][4] const char apr_day_snames group__apr__time.html g37d6f7740ae0f5d8ae9cfc286e8712be [7][4] apr_user.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__user_8h apr.h apr_errno.h apr_pools.h #define apr_uid_compare group__apr__user.html gfc0e18b67f8e3471848893cc4a052809 (left, right) #define apr_gid_compare group__apr__user.html ga87aee2f533bed9dac33613fcf398713 (left, right) uid_t apr_uid_t group__apr__user.html gd1aa508f584bc230acf4f68ba4fc4de7 gid_t apr_gid_t group__apr__user.html g22e9e224e984f837f3e276833e2f3a55 apr_status_t apr_uid_current group__apr__user.html g6583c5814fcf3924a2e391dac126f8a9 (apr_uid_t *userid, apr_gid_t *groupid, apr_pool_t *p) apr_status_t apr_uid_name_get group__apr__user.html gd56be7519e060a3c6698657f51ab6bc8 (char **username, apr_uid_t userid, apr_pool_t *p) apr_status_t apr_uid_get group__apr__user.html g4b82187f32db9350f2e02165bbce965b (apr_uid_t *userid, apr_gid_t *groupid, const char *username, apr_pool_t *p) apr_status_t apr_uid_homepath_get group__apr__user.html g0ad8087cf1c6257a286cf5215da8107e (char **dirname, const char *username, apr_pool_t *p) apr_status_t apr_gid_name_get group__apr__user.html gdda2c777f2e8d61c02be34305720e316 (char **groupname, apr_gid_t groupid, apr_pool_t *p) apr_status_t apr_gid_get group__apr__user.html gc65178a647d34387781dc8d7ade3cefc (apr_gid_t *groupid, const char *groupname, apr_pool_t *p) apr_version.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__version_8h apr.h apr_version_t #define APR_MAJOR_VERSION apr__version_8h.html 09ffaed0dcb07c22aa5a0efbc41043c2 #define APR_MINOR_VERSION apr__version_8h.html 9470ed7888fcc5637eaf0291a324fcde #define APR_PATCH_VERSION apr__version_8h.html 8c8c1cbf8000059090ba4ac4365eda7d #define APR_VERSION_AT_LEAST apr__version_8h.html c0646746397b0cb17a6d88ce55558fed (major, minor, patch) #define APR_IS_DEV_STRING apr__version_8h.html a07a7cfd506f536ca2e097d924ffcec8 #define APR_STRINGIFY apr__version_8h.html e90215615972dfa4108018304361ef0b (n) #define APR_STRINGIFY_HELPER apr__version_8h.html 71918dd8c53e093283b43b0ff0965439 (n) #define APR_VERSION_STRING apr__version_8h.html c420a8c4636151e4086a18673a3335e7 #define APR_VERSION_STRING_CSV apr__version_8h.html c49895cc329e2b507f72a7afc62a25c6 void apr_version apr__version_8h.html 15d53cfd826fcab2749e3df90bdd5fcc (apr_version_t *pvsn) const char * apr_version_string apr__version_8h.html f5ca08ef6ad70319d0e63f915e650768 (void) apr_want.h /home/issac/asf/build/httpd-2.2.10/srclib/apr/include/ apr__want_8h apr.h APR Apache Portability Runtime library group___a_p_r.html apr_platform apr_allocator apr_atomic apr_dso apr_env apr_errno apr_file_info apr_file_io apr_fnmatch apr_general apr_getopt APR_GlobalMutex apr_hash apr_lib apr_mmap apr_network_io apr_poll apr_pools apr_portabile apr_proc_mutex apr_random apr_ring apr_shm apr_signal apr_strings apr_support apr_tables apr_thread_cond apr_thread_mutex apr_thread_proc apr_thread_rwlock apr_time apr_user apr_platform Platform Definitions group__apr__platform.html #define APR_INLINE group__apr__platform.html gada0f3e7bf27ea51795c2c27c20aee84 #define APR_HAS_INLINE group__apr__platform.html g1bfff486847c3fe487884bca79cb21fd #define APR_HAVE_ARPA_INET_H group__apr__platform.html ga6740450eabc6384924801d569e89742 #define APR_HAVE_CONIO_H group__apr__platform.html g24eb6d10ed0942ee4a4228df697fd5bb #define APR_HAVE_CRYPT_H group__apr__platform.html g38a75f33c3096b153d5302c0370e9e38 #define APR_HAVE_CTYPE_H group__apr__platform.html gd0fe0c5bffd8073cb57178ceb9761933 #define APR_HAVE_DIRENT_H group__apr__platform.html g87b424528fd6448c5aabc6cc61024c9a #define APR_HAVE_ERRNO_H group__apr__platform.html gbb48338e636d4184f28d8fb08f449f6b #define APR_HAVE_FCNTL_H group__apr__platform.html g40e3ceafec2098262742573bb28797cf #define APR_HAVE_IO_H group__apr__platform.html g2cf42c89ca9d5682dba7b12377342cc0 #define APR_HAVE_LIMITS_H group__apr__platform.html g449046121ca29eda9759cb2d30442e80 #define APR_HAVE_NETDB_H group__apr__platform.html gc92f65f1d27253f3af6d9714e4604550 #define APR_HAVE_NETINET_IN_H group__apr__platform.html gb7a6381062416846012d9a0676e0f35c #define APR_HAVE_NETINET_SCTP_H group__apr__platform.html g933a3c59c351de4f17cfb8601649fd91 #define APR_HAVE_NETINET_SCTP_UIO_H group__apr__platform.html g1bb6606091cafba71be8c37796d36e8a #define APR_HAVE_NETINET_TCP_H group__apr__platform.html g2cf9c403892bb0830f24e58b614b8bce #define APR_HAVE_PTHREAD_H group__apr__platform.html g4275921ca7165eb1b2a3732a40f1b4ec #define APR_HAVE_SEMAPHORE_H group__apr__platform.html g9080d52aaa134fdefc9a03275c7ac4a6 #define APR_HAVE_SIGNAL_H group__apr__platform.html g124a7e90c6c2c74fc54f995e025f694e #define APR_HAVE_STDARG_H group__apr__platform.html gece8f1d70792f3b735fd63cb2233b6a3 #define APR_HAVE_STDINT_H group__apr__platform.html g967df26603971704f396b0ec776ed86f #define APR_HAVE_STDIO_H group__apr__platform.html g3b5b55be7a0839f63e0ff1d60a3354ff #define APR_HAVE_STDLIB_H group__apr__platform.html g1c8c763f1a54be0d960e0bfa838ee0fb #define APR_HAVE_STRING_H group__apr__platform.html g0bc16ef0942f44f579dc8027d50f780a #define APR_HAVE_STRINGS_H group__apr__platform.html g9c3381ac9d13a54181f0f0db44edb9da #define APR_HAVE_SYS_IOCTL_H group__apr__platform.html ga770dc014bd3652af53e0b5007bacbba #define APR_HAVE_SYS_SENDFILE_H group__apr__platform.html gdad28590d1ed5f6417d364da8d224c32 #define APR_HAVE_SYS_SIGNAL_H group__apr__platform.html g8fcdcf3453badd12e7690ef1d3633524 #define APR_HAVE_SYS_SOCKET_H group__apr__platform.html g355cce8fb6a675d1608a249e80943cd1 #define APR_HAVE_SYS_SOCKIO_H group__apr__platform.html g66930e9c37ff249fac4f04660e0b4658 #define APR_HAVE_SYS_SYSLIMITS_H group__apr__platform.html g5f63518e601ff8db2435aac44aa1f5f1 #define APR_HAVE_SYS_TIME_H group__apr__platform.html g9c3c283b26dc4a611e0e90586940d988 #define APR_HAVE_SYS_TYPES_H group__apr__platform.html gd364bcfd0d4403388881ae74f30ae870 #define APR_HAVE_SYS_UIO_H group__apr__platform.html gbaeaf82b82e76979dfbe64a43e02b23f #define APR_HAVE_SYS_UN_H group__apr__platform.html g342802d31427d75aa8d9508fc42862f1 #define APR_HAVE_SYS_WAIT_H group__apr__platform.html g4358584279b9bef5e9befef3e70be3a0 #define APR_HAVE_TIME_H group__apr__platform.html gd8de7d46efa8bf6404fcb105cb9fec66 #define APR_HAVE_UNISTD_H group__apr__platform.html g5027a53811b56363639e832027752456 #define APR_HAVE_WINDOWS_H group__apr__platform.html g129087a39c180d855be6585c9efe2ff2 #define APR_HAVE_WINSOCK2_H group__apr__platform.html g46a930f2ecfa34bfa627a8f18532bceb #define APR_HAVE_SHMEM_MMAP_TMP group__apr__platform.html gac072bb1db885925d1d426a1650aee18 #define APR_HAVE_SHMEM_MMAP_SHM group__apr__platform.html gae95d5ab380a1519c849b3f54f53dbdb #define APR_HAVE_SHMEM_MMAP_ZERO group__apr__platform.html ge77c5864ac1e978b5cdc4613efe874b9 #define APR_HAVE_SHMEM_SHMGET_ANON group__apr__platform.html g3c0e8fc59b8891eeacac290bca9df09b #define APR_HAVE_SHMEM_SHMGET group__apr__platform.html g35d1fadddb8c1e83a5548946d169da2a #define APR_HAVE_SHMEM_MMAP_ANON group__apr__platform.html g8237055d9f5700fdccfd173da26ff614 #define APR_HAVE_SHMEM_BEOS group__apr__platform.html g158aa4bb703689e01adced53d16ae503 #define APR_USE_SHMEM_MMAP_TMP group__apr__platform.html g165e27e6100d65b6893d1c9b7e808536 #define APR_USE_SHMEM_MMAP_SHM group__apr__platform.html g38ed6a0607f8fbbe977843d84c42b02a #define APR_USE_SHMEM_MMAP_ZERO group__apr__platform.html gd75204199cfa3631263fb1f1ea8abc94 #define APR_USE_SHMEM_SHMGET_ANON group__apr__platform.html geaedd6e1272ded14f16701b96a3ad14c #define APR_USE_SHMEM_SHMGET group__apr__platform.html g04fb6b9c97e668cef00645dd05c45079 #define APR_USE_SHMEM_MMAP_ANON group__apr__platform.html g7b556f92b8b710978339dc827d2a7a22 #define APR_USE_SHMEM_BEOS group__apr__platform.html g964a36a0d15537eb89733bd92e1159cd #define APR_USE_FLOCK_SERIALIZE group__apr__platform.html g627ab3fb1738314c7e50616e7e4e9370 #define APR_USE_SYSVSEM_SERIALIZE group__apr__platform.html g91ab4154618c08a76cc688ec3f384a27 #define APR_USE_POSIXSEM_SERIALIZE group__apr__platform.html gb41840f9559a2eda0aed18e24911d4fa #define APR_USE_FCNTL_SERIALIZE group__apr__platform.html g66b87d9b0c7e5b97b8fb21f55a0714d7 #define APR_USE_PROC_PTHREAD_SERIALIZE group__apr__platform.html g2738f508b5926ec10a966d2bdb348452 #define APR_USE_PTHREAD_SERIALIZE group__apr__platform.html g28fb90a0db4bd6c6f677b269fc743cda #define APR_HAS_FLOCK_SERIALIZE group__apr__platform.html g3cdde1dc287da276eb56d7c5ed351713 #define APR_HAS_SYSVSEM_SERIALIZE group__apr__platform.html g3b4f7591d97f21818b51b793752fa5fe #define APR_HAS_POSIXSEM_SERIALIZE group__apr__platform.html g100a44703cbec87774ad3ba78ce4372a #define APR_HAS_FCNTL_SERIALIZE group__apr__platform.html g372220e70e4da519ebcaaf8476525227 #define APR_HAS_PROC_PTHREAD_SERIALIZE group__apr__platform.html gbc09d4599769b9cef0e972b0050c9e11 #define APR_PROCESS_LOCK_IS_GLOBAL group__apr__platform.html g2faf50198d02b5f6e21c32429ca1c5b4 #define APR_HAVE_CORKABLE_TCP group__apr__platform.html gb841a4b1a92684a089fbab9e7bce737a #define APR_HAVE_GETRLIMIT group__apr__platform.html g58025dd20776cbc5a5e7a18f1ac6d5ad #define APR_HAVE_IN_ADDR group__apr__platform.html g2713eb83fc527f0b262b58c0c449cdcb #define APR_HAVE_INET_ADDR group__apr__platform.html g0c38cccb121e483045a2564bb1ae61ec #define APR_HAVE_INET_NETWORK group__apr__platform.html gadacfca3c1cbae0447c1b4d4ea499d57 #define APR_HAVE_IPV6 group__apr__platform.html gb42a2abcd9e58a79b4bf40e8f02e57a2 #define APR_HAVE_MEMMOVE group__apr__platform.html g0aff7b8d78dc6cea94892a3738bc0edf #define APR_HAVE_SETRLIMIT group__apr__platform.html g4a858c53da127087a9bef6105531ce54 #define APR_HAVE_SIGACTION group__apr__platform.html g2ed59eb76fdfc4d332a1ef5583206f05 #define APR_HAVE_SIGSUSPEND group__apr__platform.html g661ccf871e31f9e8e4adc75dbfd67951 #define APR_HAVE_SIGWAIT group__apr__platform.html g0117237934a6095a050a9d39ff152a26 #define APR_HAVE_SA_STORAGE group__apr__platform.html g57c4c6c8a22aeef21db29093f2f648f9 #define APR_HAVE_STRCASECMP group__apr__platform.html g4da5b6343c5b896efb3695c94f8dd374 #define APR_HAVE_STRDUP group__apr__platform.html g73cf943f6399274e71979e902b3030a0 #define APR_HAVE_STRICMP group__apr__platform.html g07a4215d05bb012f8ff9c4c681b2f9a3 #define APR_HAVE_STRNCASECMP group__apr__platform.html g8f45d52206b5d6ee37dc05e53d9bd93c #define APR_HAVE_STRNICMP group__apr__platform.html gdc5209ed6b80ac6734ce2a13a3a2273d #define APR_HAVE_STRSTR group__apr__platform.html g2850a7c280e08a629d2b0bc2eeb97b41 #define APR_HAVE_MEMCHR group__apr__platform.html g510e98c8dd8ef45a6c902b8daaedc3a4 #define APR_HAVE_STRUCT_RLIMIT group__apr__platform.html g2519340ecb3c313c81d36d70335430f9 #define APR_HAVE_UNION_SEMUN group__apr__platform.html g40fd92f709fa181dee59734f4564ead1 #define APR_HAVE_SCTP group__apr__platform.html g06b60866b89f9881de1022d193a7f126 #define APR_HAVE_IOVEC group__apr__platform.html gfb25c8af133971c391c18193e67a5f4f #define APR_HAS_SHARED_MEMORY group__apr__platform.html g88684cc5f8a23bc2cd6a4b63e5943e05 #define APR_HAS_THREADS group__apr__platform.html g8f98cbf61cd2ac1fada71fe486b04a34 #define APR_HAS_SENDFILE group__apr__platform.html g653f9e26ef4064c7daaad1bb126b5d1f #define APR_HAS_MMAP group__apr__platform.html g4f63ee64cebd015823f922c7ff98eadf #define APR_HAS_FORK group__apr__platform.html g3261ef06837fa5dc1a0164f7b0f16fab #define APR_HAS_RANDOM group__apr__platform.html g1a277e1905ab841d2979eff95816f8fb #define APR_HAS_OTHER_CHILD group__apr__platform.html g082384ec95907197e41f546570e06a69 #define APR_HAS_DSO group__apr__platform.html ge41e3d3c78f6937ea2de78b03629494a #define APR_HAS_SO_ACCEPTFILTER group__apr__platform.html ga6797fde63363c83c54c97a2a873e84d #define APR_HAS_UNICODE_FS group__apr__platform.html ge1e6a359fe305ed4ede275f404e61cfe #define APR_HAS_PROC_INVOKED group__apr__platform.html gcd61f2c191c71203833599e8caee3e79 #define APR_HAS_USER group__apr__platform.html g9d8d5646ade1d3d29e456d8df29a656a #define APR_HAS_LARGE_FILES group__apr__platform.html gb5019720a44a0a412b053bd4c8275ac0 #define APR_HAS_XTHREAD_FILES group__apr__platform.html g98aef4781225d1713d088283f4abd8f2 #define APR_HAS_OS_UUID group__apr__platform.html ge5e245b691c1f1765e547480de321731 #define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD group__apr__platform.html g0108ca8b595e62174e8b42cce0d063f5 #define APR_FILES_AS_SOCKETS group__apr__platform.html gce899f1ccb69c00ae7c65212ca5890b1 #define APR_CHARSET_EBCDIC group__apr__platform.html g8c71221bae49df0b88a0f725e96c681f #define APR_TCP_NOPUSH_FLAG group__apr__platform.html g6e74a453e90a6495a981f5f312ec6beb #define APR_TCP_NODELAY_INHERITED group__apr__platform.html g22df092ebdce7f9f8c6611d974a4ae82 #define APR_O_NONBLOCK_INHERITED group__apr__platform.html gc6a178e9f749311c8f3a98da3dfd321d #define APR_SIZEOF_VOIDP group__apr__platform.html ga7a2a1de7949f09e29edae60b0d4c27f #define APR_IS_BIGENDIAN group__apr__platform.html gbf5174c5d522e1a149cbb38a4310743f #define APR_INT64_C group__apr__platform.html gae749817bb595cd5dcb9c17c119ddb13 (val) #define APR_UINT64_C group__apr__platform.html gede133b7384b6a7a08c51cf1fa9c4001 (val) #define APR_INT16_MIN group__apr__platform.html g93b69f6b2d426b30c991a74f55be5308 #define APR_INT16_MAX group__apr__platform.html gc4180108ae7cfe8b7f636183368c89c5 #define APR_UINT16_MAX group__apr__platform.html g2b7a0eb7506ac0bfc4d711929f9a3a48 #define APR_INT32_MIN group__apr__platform.html ga99bd633c3478131fa672559601a76e7 #define APR_INT32_MAX group__apr__platform.html g0966ef0d235765d9fe1b9900fbe04faa #define APR_UINT32_MAX group__apr__platform.html g239c26656c361f627f7db619997abaac #define APR_INT64_MIN group__apr__platform.html gf371ae92dbf0fed20801cf279cd85f1a #define APR_INT64_MAX group__apr__platform.html g3b25669924dcfa853cd6ea3395c8717f #define APR_UINT64_MAX group__apr__platform.html g2d20379176b15b8b0598992df3def796 #define APR_SIZE_MAX group__apr__platform.html gb5865d64b134a3924014837dd44627a7 #define APR_BEGIN_DECLS group__apr__platform.html ga046c9c51a1af394db3a34dec1972630 #define APR_END_DECLS group__apr__platform.html g32d22bd9e118350c750a9c9c05bdeef8 #define APR_THREAD_FUNC group__apr__platform.html gde8f829f9bd98fd4386894acf72edd7c #define APR_DECLARE group__apr__platform.html gd7b91b811a172bfa802603c2fb688f98 (type) #define APR_DECLARE_NONSTD group__apr__platform.html g3ad5e45fabbda0ec5f106c334f1a0ae5 (type) #define APR_DECLARE_DATA group__apr__platform.html g16a1a3d65c57ce052fffb63190b1cadc #define APR_SSIZE_T_FMT group__apr__platform.html gbac6108769f9b7deded82e73f3cd4060 #define APR_SIZE_T_FMT group__apr__platform.html g86928aa34fa77f8e7855d69050e3a27a #define APR_OFF_T_FMT group__apr__platform.html gd71d0d5a325d1aedeb6328d6bdacac76 #define APR_PID_T_FMT group__apr__platform.html g6c8e5aeab20eeaed373e3dd65cd33689 #define APR_INT64_T_FMT group__apr__platform.html g41cc6dfe3d69cd66cffc8aae4b59bd08 #define APR_UINT64_T_FMT group__apr__platform.html g7fc21e56e167a47d7478600dee7ab502 #define APR_UINT64_T_HEX_FMT group__apr__platform.html g528bc9f3c6f3500b35e97c4b25566b48 #define APR_PROC_MUTEX_IS_GLOBAL group__apr__platform.html g90ebe3e3537fdff1e66c6baf4b560de8 #define APR_EOL_STR group__apr__platform.html g20953ff75ca59692aac949acfdaa25f6 #define apr_wait_t group__apr__platform.html g13fae72fec73474a6b35ed86b9104bf5 #define WEXITSTATUS group__apr__platform.html g77f17ed4771a558a0f16e5f3aecee222 (status) #define WTERMSIG group__apr__platform.html g94ec02a12424092a8391069adcd2ff73 (status) #define APR_DSOPATH group__apr__platform.html g2eb8121bd28ad578c3cbca3a68f6d823 unsigned char apr_byte_t group__apr__platform.html gdcfa334915b4605a0052cb4ca542eb3a short apr_int16_t group__apr__platform.html g43c359f64f6c84d8af869539e0737df4 unsigned short apr_uint16_t group__apr__platform.html g3fb87c977e28a526d872d1081411b129 int apr_int32_t group__apr__platform.html g21ef1e35fd3ff9be386f3cb20164ff02 unsigned int apr_uint32_t group__apr__platform.html g558548a135d8a816c4787250744ea147 long long apr_int64_t group__apr__platform.html g616cbaaadee33420d47071209fc30052 unsigned long long apr_uint64_t group__apr__platform.html g1a3eadd69cfefe46e764bd7e4ff0d9ee size_t apr_size_t group__apr__platform.html gaa72b2253f6f3032cefea5712a27540e ssize_t apr_ssize_t group__apr__platform.html g215ebb88932bee220b766263ebbfe6fa off64_t apr_off_t group__apr__platform.html g5e189bcae807cf93466aa5c905726edd socklen_t apr_socklen_t group__apr__platform.html gb613b0701b7a8b0ccd1a3c157a800f27 unsigned long apr_ino_t group__apr__platform.html gf2b362780bafb83b0892e8319ea32ff8 apr_uint32_t apr_uintptr_t group__apr__platform.html g28944d75286582858fc071aaad892129 apr_allocator Internal Memory Allocation group__apr__allocator.html apr_memnode_t #define APR_MEMNODE_T_SIZE group__apr__allocator.html gf382851817012929f4e2458b43f4482c #define APR_ALLOCATOR_MAX_FREE_UNLIMITED group__apr__allocator.html g54f32b19d8dad59bc6364a7a6b8ebec9 struct apr_allocator_t apr_allocator_t group__apr__allocator.html g1ceabfd30fcfc455e47d052d2a24244b struct apr_memnode_t apr_memnode_t group__apr__allocator.html g3b6437036dfcdffbf87ad4677c818211 apr_status_t apr_allocator_create group__apr__allocator.html gf834f409a34b7f8656c045cff02fd953 (apr_allocator_t **allocator) void apr_allocator_destroy group__apr__allocator.html g704529f6b26279ad1c48d5e8372d859c (apr_allocator_t *allocator) apr_memnode_t * apr_allocator_alloc group__apr__allocator.html g7452b0837c2148bd63109f89bbc0c3db (apr_allocator_t *allocator, apr_size_t size) void apr_allocator_free group__apr__allocator.html g124e48339838213fd5e160a4125cb7e8 (apr_allocator_t *allocator, apr_memnode_t *memnode) void apr_allocator_owner_set group__apr__allocator.html gdf38bbec37c29c24388e95b1c9acad28 (apr_allocator_t *allocator, apr_pool_t *pool) apr_pool_t * apr_allocator_owner_get group__apr__allocator.html g3cfe48c8717de6495480ce1479d262f1 (apr_allocator_t *allocator) void apr_allocator_max_free_set group__apr__allocator.html g1d45cb6dbe69ba25dee0ec5f4e031d60 (apr_allocator_t *allocator, apr_size_t size) void apr_allocator_mutex_set group__apr__allocator.html gb803d74f56683004f7ec384ced210dd5 (apr_allocator_t *allocator, apr_thread_mutex_t *mutex) apr_thread_mutex_t * apr_allocator_mutex_get group__apr__allocator.html g38599aa9f1330846a2d2b25ec5c8d9c9 (apr_allocator_t *allocator) apr_atomic Atomic Operations group__apr__atomic.html apr_status_t apr_atomic_init group__apr__atomic.html ga89b4022de39ca4d1c2ae6715e888e97 (apr_pool_t *p) apr_uint32_t apr_atomic_read32 group__apr__atomic.html gfba4de90e113d26536cff48418689771 (volatile apr_uint32_t *mem) void apr_atomic_set32 group__apr__atomic.html gc689de9df18c093f66959227359328bb (volatile apr_uint32_t *mem, apr_uint32_t val) apr_uint32_t apr_atomic_add32 group__apr__atomic.html g3ef16e13b679710fafd5196713e17433 (volatile apr_uint32_t *mem, apr_uint32_t val) void apr_atomic_sub32 group__apr__atomic.html g4603396650e844bd987f01358ccb4df1 (volatile apr_uint32_t *mem, apr_uint32_t val) apr_uint32_t apr_atomic_inc32 group__apr__atomic.html g4af33da5aa6493ec321af14bedfc47a9 (volatile apr_uint32_t *mem) int apr_atomic_dec32 group__apr__atomic.html g7a8d16335fdcd27f2baca90df35ad300 (volatile apr_uint32_t *mem) apr_uint32_t apr_atomic_cas32 group__apr__atomic.html ge45c529f14f8489102382bd3fd4cce22 (volatile apr_uint32_t *mem, apr_uint32_t with, apr_uint32_t cmp) apr_uint32_t apr_atomic_xchg32 group__apr__atomic.html g50850e462d65e0409d5a93a6b4ec26c6 (volatile apr_uint32_t *mem, apr_uint32_t val) void * apr_atomic_casptr group__apr__atomic.html gfdd02b41cc39ade873daa2734597b0fa (volatile void **mem, void *with, const void *cmp) void * apr_atomic_xchgptr group__apr__atomic.html gab4c1c5b8be70ded06dd31a1a4f65bf6 (volatile void **mem, void *with) apr_dso Dynamic Object Handling group__apr__dso.html struct apr_dso_handle_t apr_dso_handle_t group__apr__dso.html g85e7e28490d026aeed78bd78e9933472 void * apr_dso_handle_sym_t group__apr__dso.html gf1aa0a039e8003586cfdfbc4ac57e775 apr_status_t apr_dso_load group__apr__dso.html gedc8609c2bb76e5c43f2df2281a9d8b6 (apr_dso_handle_t **res_handle, const char *path, apr_pool_t *ctx) apr_status_t apr_dso_unload group__apr__dso.html g4c7b1b4e98a5d23c56182ece047fbb7b (apr_dso_handle_t *handle) apr_status_t apr_dso_sym group__apr__dso.html ge84cd7041976787d73a9558e3393b97c (apr_dso_handle_sym_t *ressym, apr_dso_handle_t *handle, const char *symname) const char * apr_dso_error group__apr__dso.html gfa34fc75e1e9b8856385d3b18cfac05c (apr_dso_handle_t *dso, char *buf, apr_size_t bufsize) apr_env Functions for manupulating the environment group__apr__env.html apr_status_t apr_env_get group__apr__env.html gda7cd6ccada789a3738f8fc6334da809 (char **value, const char *envvar, apr_pool_t *pool) apr_status_t apr_env_set group__apr__env.html ge11f733a639393a35e82c795f4ecd470 (const char *envvar, const char *value, apr_pool_t *pool) apr_status_t apr_env_delete group__apr__env.html g2bfac0686199b2fee97a7638df7cbfdc (const char *envvar, apr_pool_t *pool) apr_errno Error Codes group__apr__errno.html APR_ERROR_map APR_Error APR_STATUS_IS #define APR_FROM_OS_ERROR group__apr__errno.html g2096daff578ef301e060b80c7a4525bf (e) #define APR_FROM_OS_ERROR group__apr__errno.html g2096daff578ef301e060b80c7a4525bf (e) #define APR_TO_OS_ERROR group__apr__errno.html g2385cae04b04afbdcb65f1a45c4d8506 (e) #define APR_TO_OS_ERROR group__apr__errno.html g2385cae04b04afbdcb65f1a45c4d8506 (e) #define apr_get_os_error group__apr__errno.html ga76e122da00af0ce2e8c8d7ff538bdfa () #define apr_set_os_error group__apr__errno.html g9a2d9a03ad314b03a142574be6d7d8a7 (e) #define apr_get_netos_error group__apr__errno.html g66e54f155b4a80ac7df9118af9bd896a () #define apr_set_netos_error group__apr__errno.html gafc38481621653ece6f592f9c5a9a09b (e) #define APR_OS_START_ERROR group__apr__errno.html g191894048b7bd0cca3cf0bdff1eb695b #define APR_OS_ERRSPACE_SIZE group__apr__errno.html gdb8d97e6836ccdc57b43b6119a5acccf #define APR_UTIL_ERRSPACE_SIZE group__apr__errno.html gef5e79630739f24d1512d0d044c2bae7 #define APR_OS_START_STATUS group__apr__errno.html g450e1a5734732e092ddaa5b67414f69b #define APR_UTIL_START_STATUS group__apr__errno.html gdf26297a72afa0ea224e7097fe59a1cd #define APR_OS_START_USERERR group__apr__errno.html gcd35b2de1e38a1fa4717e38d5e153571 #define APR_OS_START_USEERR group__apr__errno.html g803b8badf8695bdfa4fbcf4d330371f0 #define APR_OS_START_CANONERR group__apr__errno.html g7bca957c11b80b31cb54b0d2cbe9e025 #define APR_OS_START_EAIERR group__apr__errno.html g2d04991cb57c67a896e22125a1f22b49 #define APR_OS_START_SYSERR group__apr__errno.html gd70a5cad6862a9abcc254d35e827ac8b #define APR_SUCCESS group__apr__errno.html g9ee311b7bf1c691dc521d721339ee2a6 int apr_status_t group__apr__errno.html gf76ee4543247e9fb3f3546203e590a6c char * apr_strerror group__apr__errno.html gf2edf92be162ab8fb1bbc6f22856a131 (apr_status_t statcode, char *buf, apr_size_t bufsize) APR_ERROR_map APR Error Space group___a_p_r___e_r_r_o_r__map.html APR_Error APR Error Values group___a_p_r___error.html #define APR_ENOSTAT group___a_p_r___error.html g7995805cf68be1fb16f684c544e45fbe #define APR_ENOPOOL group___a_p_r___error.html ga8461873202e5e0b4c0ea261e05b07a9 #define APR_EBADDATE group___a_p_r___error.html g7911720c540a929cc08a2c25e606b56e #define APR_EINVALSOCK group___a_p_r___error.html g548032b79ce0671d9986db0654858812 #define APR_ENOPROC group___a_p_r___error.html g18aa6d4ebaefda39478649c20bbeb9df #define APR_ENOTIME group___a_p_r___error.html g7acfb436774a21ae93ff5c1b89e7c4f5 #define APR_ENODIR group___a_p_r___error.html g9a8077e85b6241c1e91b69548395fc09 #define APR_ENOLOCK group___a_p_r___error.html g9c411624c42f7562a5c6c3461bdcb0ec #define APR_ENOPOLL group___a_p_r___error.html geff8d4ed7bf9b99cbe62a3e7068e85b7 #define APR_ENOSOCKET group___a_p_r___error.html g99e125e203a1d44f12bd88b41696716d #define APR_ENOTHREAD group___a_p_r___error.html g7b43e1e075ff031e142aa809295ee441 #define APR_ENOTHDKEY group___a_p_r___error.html g29faf801fac647a14360e7493f7fd74e #define APR_EGENERAL group___a_p_r___error.html g18f5678bea0c2c704a2b6a186c9e158b #define APR_ENOSHMAVAIL group___a_p_r___error.html g67516f4e87197490333480a8bbc78725 #define APR_EBADIP group___a_p_r___error.html g96180fb8075ae0150bfed50c2e7f7a59 #define APR_EBADMASK group___a_p_r___error.html g5249b5edc27466f6b60b3dfa1541ba31 #define APR_EDSOOPEN group___a_p_r___error.html gc96fbde76282364e8c482d6f23bc61bb #define APR_EABSOLUTE group___a_p_r___error.html gfd1ffc5bf2bf215ad048780408913d0e #define APR_ERELATIVE group___a_p_r___error.html ge4688dfa866265b9ec3623689c23923b #define APR_EINCOMPLETE group___a_p_r___error.html gb4357bcbdc2922183e0594865b59ce58 #define APR_EABOVEROOT group___a_p_r___error.html g4828cc04f97dc7bed691456adf7c073e #define APR_EBADPATH group___a_p_r___error.html g1731292eb3e3cdc801d3bf0b09cd8da7 #define APR_EPATHWILD group___a_p_r___error.html g01d0fb965051103b5c8f15a43ad2c767 #define APR_ESYMNOTFOUND group___a_p_r___error.html g8d96410fc32408160e1e85e2e96402fa #define APR_EPROC_UNKNOWN group___a_p_r___error.html g01b21dc62b410707f44641d3cea3e6ed #define APR_ENOTENOUGHENTROPY group___a_p_r___error.html gaee9e4e763844197e3750bb66ff75cd0 #define APR_INCHILD group___a_p_r___error.html g5a2bb63099778699feeae9627474c179 #define APR_INPARENT group___a_p_r___error.html g79abc0fb43e51e0db87f90fa49745d89 #define APR_DETACH group___a_p_r___error.html gb3f8849983a52f6558016303fb4f5cff #define APR_NOTDETACH group___a_p_r___error.html g83b8407fb5de5840f51dfd2c1439987b #define APR_CHILD_DONE group___a_p_r___error.html g2a78375cab66b8c1a4e06329e0cfcaf4 #define APR_CHILD_NOTDONE group___a_p_r___error.html g00bba31c29774cce3e72a31f88610340 #define APR_TIMEUP group___a_p_r___error.html g9ac087c25ffb0d3bb4d75bee36709853 #define APR_INCOMPLETE group___a_p_r___error.html g64dff43b83bcefd3f3c751be6b864ca1 #define APR_BADCH group___a_p_r___error.html g6f3ca71069880d9fe5678687a257d616 #define APR_BADARG group___a_p_r___error.html g771bf48ab38d93355be8530f6efe4ae9 #define APR_EOF group___a_p_r___error.html g35d9dca2514c522a2840aca0f3e2ebd3 #define APR_NOTFOUND group___a_p_r___error.html g9bd83273ff02f31f71fb4dc6f29df4a9 #define APR_ANONYMOUS group___a_p_r___error.html g738a229b0c27bd96ae0173fecab251b7 #define APR_FILEBASED group___a_p_r___error.html g28a6d59b62d2698208451a9343399fbb #define APR_KEYBASED group___a_p_r___error.html gac52bebace264494fa94cdf0b4344d26 #define APR_EINIT group___a_p_r___error.html gacd087793c97a3493eafc14075775b82 #define APR_ENOTIMPL group___a_p_r___error.html g939ddb834a30bc9a5a0a329b13000161 #define APR_EMISMATCH group___a_p_r___error.html g31e65a44daba96aa6d943529e94498e7 #define APR_EBUSY group___a_p_r___error.html gb6e5bc99dbace4a91d8d0adcbd8fd66b #define APR_EACCES group___a_p_r___error.html g407fc0ea7ead60f7a97fb9d70061bd41 #define APR_EEXIST group___a_p_r___error.html gfa7f353804388017a0ea71bc14f0dda5 #define APR_ENAMETOOLONG group___a_p_r___error.html g3db63b16c2b332efe441e2661f593377 #define APR_ENOENT group___a_p_r___error.html gcc26a4afe01b6cc141f839be71fddf1c #define APR_ENOTDIR group___a_p_r___error.html gcfaa73cea75d14d49cc5c81e6c494330 #define APR_ENOSPC group___a_p_r___error.html g1dfc0bbf080f17b0b9010ef967542193 #define APR_ENOMEM group___a_p_r___error.html g6a453e60000000609a95817efabebf4f #define APR_EMFILE group___a_p_r___error.html gec391eaf0bfa6aed03457ed3f796942d #define APR_ENFILE group___a_p_r___error.html gf46f59147b00c2c87d76b9eb75674456 #define APR_EBADF group___a_p_r___error.html g204df8a37a5c7fd6b2c74ea098fbac02 #define APR_EINVAL group___a_p_r___error.html ge3ffc41994444e71ce522c036ca1d9a4 #define APR_ESPIPE group___a_p_r___error.html g3be81035cd2da76fbc27c75496489359 #define APR_EAGAIN group___a_p_r___error.html g0b2a5ebb819de5ce93d326939b586578 #define APR_EINTR group___a_p_r___error.html gee1ce306c0ebf1701b34172310aa1bd5 #define APR_ENOTSOCK group___a_p_r___error.html gd456312527050c661dc19a8f17a0f0ef #define APR_ECONNREFUSED group___a_p_r___error.html g1b4d1d847bebdfc48af343bc2486ecb8 #define APR_EINPROGRESS group___a_p_r___error.html g5c311361f4f68f289c90f3cdfd77eb79 #define APR_ECONNABORTED group___a_p_r___error.html g9458da18e0ee46a5d37c9cdfdc43efd2 #define APR_ECONNRESET group___a_p_r___error.html g264bfe2056e917728e9ed060b58869c2 #define APR_ETIMEDOUT group___a_p_r___error.html g6aeccbe9accb34f0adc1cb1ab9a82a8d #define APR_EHOSTUNREACH group___a_p_r___error.html g489b0c02fa7cf33ed6d698d385661f86 #define APR_ENETUNREACH group___a_p_r___error.html gb9b7124a88817d1b69cdef059f7dc689 #define APR_EFTYPE group___a_p_r___error.html gc358701354d03c37e3f0de12ed6d9afc #define APR_EPIPE group___a_p_r___error.html ge985330e30e374714ff1742485597f5d #define APR_EXDEV group___a_p_r___error.html g0562023bd8ebe580b9bbb9f7b04d3f5d #define APR_ENOTEMPTY group___a_p_r___error.html g01d9259eccdf0576f58b89c4ad8ca4eb #define APR_EAFNOSUPPORT group___a_p_r___error.html g76b558840838bcb94a4811a8e52df7a6 APR_STATUS_IS Status Value Tests group___a_p_r___s_t_a_t_u_s___i_s.html #define APR_STATUS_IS_ENOSTAT group___a_p_r___s_t_a_t_u_s___i_s.html g1f0d21900aa879ca4866b1bf846cfd0d (s) #define APR_STATUS_IS_ENOPOOL group___a_p_r___s_t_a_t_u_s___i_s.html g71f149437af305f0a0cabde2cc3f3b19 (s) #define APR_STATUS_IS_EBADDATE group___a_p_r___s_t_a_t_u_s___i_s.html gf1313bed3538d6d57995bca164ebac20 (s) #define APR_STATUS_IS_EINVALSOCK group___a_p_r___s_t_a_t_u_s___i_s.html g7fcc752663660de85fa046b2de014b97 (s) #define APR_STATUS_IS_ENOPROC group___a_p_r___s_t_a_t_u_s___i_s.html g566f4c9b9db8a0c31199a938bdc4e38a (s) #define APR_STATUS_IS_ENOTIME group___a_p_r___s_t_a_t_u_s___i_s.html g65cb54d0b5902784037626841e26e709 (s) #define APR_STATUS_IS_ENODIR group___a_p_r___s_t_a_t_u_s___i_s.html g666c0bcfb97d26df7e7e360041d93fc6 (s) #define APR_STATUS_IS_ENOLOCK group___a_p_r___s_t_a_t_u_s___i_s.html gced66cdb08529210dbf2f6bcbba99258 (s) #define APR_STATUS_IS_ENOPOLL group___a_p_r___s_t_a_t_u_s___i_s.html g590bc2090fe120d142853dec27eaf9e8 (s) #define APR_STATUS_IS_ENOSOCKET group___a_p_r___s_t_a_t_u_s___i_s.html ge415d3119f7b13edc8af627a5e3f440b (s) #define APR_STATUS_IS_ENOTHREAD group___a_p_r___s_t_a_t_u_s___i_s.html gf33e51e4df639e2b93c99a2fa8b5c7e7 (s) #define APR_STATUS_IS_ENOTHDKEY group___a_p_r___s_t_a_t_u_s___i_s.html g782b37d892214ee60911062791871ae2 (s) #define APR_STATUS_IS_EGENERAL group___a_p_r___s_t_a_t_u_s___i_s.html gb015701a084807912b3c0464c6badf1a (s) #define APR_STATUS_IS_ENOSHMAVAIL group___a_p_r___s_t_a_t_u_s___i_s.html g99af86378a3ac8eb5a59f1acffec6440 (s) #define APR_STATUS_IS_EBADIP group___a_p_r___s_t_a_t_u_s___i_s.html g02d9309a113e07050308af66e955d600 (s) #define APR_STATUS_IS_EBADMASK group___a_p_r___s_t_a_t_u_s___i_s.html gbec95c93d0c5996f14a94e2cc37e1904 (s) #define APR_STATUS_IS_EDSOOPEN group___a_p_r___s_t_a_t_u_s___i_s.html ge87f4877aa35535eb3546b499ef9d9f3 (s) #define APR_STATUS_IS_EABSOLUTE group___a_p_r___s_t_a_t_u_s___i_s.html ge662804298416a68e63c4f84f245d30c (s) #define APR_STATUS_IS_ERELATIVE group___a_p_r___s_t_a_t_u_s___i_s.html g7a8fca5102890e9a0bc4133ba848d52c (s) #define APR_STATUS_IS_EINCOMPLETE group___a_p_r___s_t_a_t_u_s___i_s.html ge7354f40a912dc43fe76ba2a59de0403 (s) #define APR_STATUS_IS_EABOVEROOT group___a_p_r___s_t_a_t_u_s___i_s.html ge89b8de1e40b855cf95987ce5947b442 (s) #define APR_STATUS_IS_EBADPATH group___a_p_r___s_t_a_t_u_s___i_s.html g0758d7227209e4311c843c752c0dd075 (s) #define APR_STATUS_IS_EPATHWILD group___a_p_r___s_t_a_t_u_s___i_s.html ge23aedf7ad4e6a111ffd6acf4167b00e (s) #define APR_STATUS_IS_ESYMNOTFOUND group___a_p_r___s_t_a_t_u_s___i_s.html gfab6c5fe2f9b906d533d253097a16e09 (s) #define APR_STATUS_IS_EPROC_UNKNOWN group___a_p_r___s_t_a_t_u_s___i_s.html gb1267636d1f3fe0dcb79a22b735a5010 (s) #define APR_STATUS_IS_ENOTENOUGHENTROPY group___a_p_r___s_t_a_t_u_s___i_s.html gb8b0af2df80bfb9edfc8dbcbb6bdf925 (s) #define APR_STATUS_IS_INCHILD group___a_p_r___s_t_a_t_u_s___i_s.html gd60d170a73ed74ec209a1b2165cacb61 (s) #define APR_STATUS_IS_INPARENT group___a_p_r___s_t_a_t_u_s___i_s.html g4471f8de6eda3a673aa1f306114c012e (s) #define APR_STATUS_IS_DETACH group___a_p_r___s_t_a_t_u_s___i_s.html g64d5d0a6bfe141a387dfdd430a38465b (s) #define APR_STATUS_IS_NOTDETACH group___a_p_r___s_t_a_t_u_s___i_s.html g3084551fdf84919e3c3db4384234521d (s) #define APR_STATUS_IS_CHILD_DONE group___a_p_r___s_t_a_t_u_s___i_s.html g1e6539dfa172cef4026105ca33b2b208 (s) #define APR_STATUS_IS_CHILD_NOTDONE group___a_p_r___s_t_a_t_u_s___i_s.html g86190a4a2c04bbbbedc2491bb93ab432 (s) #define APR_STATUS_IS_TIMEUP group___a_p_r___s_t_a_t_u_s___i_s.html g864b207719c86ac4deeba696943262d0 (s) #define APR_STATUS_IS_INCOMPLETE group___a_p_r___s_t_a_t_u_s___i_s.html g8385878e572abf0b2f78a0ab7d1bc8a5 (s) #define APR_STATUS_IS_BADCH group___a_p_r___s_t_a_t_u_s___i_s.html g20308232897ebff445dc10d0b69a0be2 (s) #define APR_STATUS_IS_BADARG group___a_p_r___s_t_a_t_u_s___i_s.html g88b31c127ad48d12353d175926913cb3 (s) #define APR_STATUS_IS_EOF group___a_p_r___s_t_a_t_u_s___i_s.html gf4232cd96b47b76aec9607b1a78e694f (s) #define APR_STATUS_IS_NOTFOUND group___a_p_r___s_t_a_t_u_s___i_s.html g51bc0a0e249f5d09dba3ed9dc02c49e5 (s) #define APR_STATUS_IS_ANONYMOUS group___a_p_r___s_t_a_t_u_s___i_s.html gbf2969f69ac131cb06178c0809abf943 (s) #define APR_STATUS_IS_FILEBASED group___a_p_r___s_t_a_t_u_s___i_s.html g7e46240d526e81f5ffbc266ca29b9f6a (s) #define APR_STATUS_IS_KEYBASED group___a_p_r___s_t_a_t_u_s___i_s.html gf43f4a40f5ab2fe196acb4e12f20b79e (s) #define APR_STATUS_IS_EINIT group___a_p_r___s_t_a_t_u_s___i_s.html geaa5fbb21b72fcbbe98b0f100d204048 (s) #define APR_STATUS_IS_ENOTIMPL group___a_p_r___s_t_a_t_u_s___i_s.html gcab882e24f5d6491777e8ef7763d02fb (s) #define APR_STATUS_IS_EMISMATCH group___a_p_r___s_t_a_t_u_s___i_s.html g7234b0d01a8e3ea8e5345f3f242df030 (s) #define APR_STATUS_IS_EBUSY group___a_p_r___s_t_a_t_u_s___i_s.html gbb92ad7b6ef304132de70e9e5cbaa896 (s) #define APR_STATUS_IS_EACCES group___a_p_r___s_t_a_t_u_s___i_s.html g61e7a9958689dec6da6279f0cb6073ca (s) #define APR_STATUS_IS_EEXIST group___a_p_r___s_t_a_t_u_s___i_s.html g37707a0f41b084f1ce1a13575f4f21db (s) #define APR_STATUS_IS_ENAMETOOLONG group___a_p_r___s_t_a_t_u_s___i_s.html gd39fb68ea626722634f81a764b3626df (s) #define APR_STATUS_IS_ENOENT group___a_p_r___s_t_a_t_u_s___i_s.html gd15c3b9bda78a88c02466a0d405c6047 (s) #define APR_STATUS_IS_ENOTDIR group___a_p_r___s_t_a_t_u_s___i_s.html gce6923483aa351b05b8f41e0bdb1df60 (s) #define APR_STATUS_IS_ENOSPC group___a_p_r___s_t_a_t_u_s___i_s.html g5c77e7bb1de1b6ec319f2a42eb80be1e (s) #define APR_STATUS_IS_ENOMEM group___a_p_r___s_t_a_t_u_s___i_s.html g38ab0ab9f00c849f24aae626f5118fce (s) #define APR_STATUS_IS_EMFILE group___a_p_r___s_t_a_t_u_s___i_s.html ge50825e6293023c570a92d185b38e393 (s) #define APR_STATUS_IS_ENFILE group___a_p_r___s_t_a_t_u_s___i_s.html g4274ec4c91423ae54ab8a1d53991fb76 (s) #define APR_STATUS_IS_EBADF group___a_p_r___s_t_a_t_u_s___i_s.html ga843153a73806cca500287940e9f175f (s) #define APR_STATUS_IS_EINVAL group___a_p_r___s_t_a_t_u_s___i_s.html g3f620bb28c1c7f6fd3412dac2137d0fd (s) #define APR_STATUS_IS_ESPIPE group___a_p_r___s_t_a_t_u_s___i_s.html gc9b1e593377ac3b93b259f30f04a1185 (s) #define APR_STATUS_IS_EAGAIN group___a_p_r___s_t_a_t_u_s___i_s.html g9dd578bfcd76a2d997395608ae5b3a4e (s) #define APR_STATUS_IS_EINTR group___a_p_r___s_t_a_t_u_s___i_s.html g30615baf6479221e44870c620e372b5b (s) #define APR_STATUS_IS_ENOTSOCK group___a_p_r___s_t_a_t_u_s___i_s.html g7b7807755d3d6f24e9978337b9faa5a1 (s) #define APR_STATUS_IS_ECONNREFUSED group___a_p_r___s_t_a_t_u_s___i_s.html g4decf55c5cea9660a44fed0c74265ee6 (s) #define APR_STATUS_IS_EINPROGRESS group___a_p_r___s_t_a_t_u_s___i_s.html g777e9ba36fe05ac8002113a9597073ea (s) #define APR_STATUS_IS_ECONNABORTED group___a_p_r___s_t_a_t_u_s___i_s.html g528a8032b13c75fbdeb9bf7e4c0be493 (s) #define APR_STATUS_IS_ECONNRESET group___a_p_r___s_t_a_t_u_s___i_s.html g85e2cb1b4c904a9edfbc0d94203f76b6 (s) #define APR_STATUS_IS_ETIMEDOUT group___a_p_r___s_t_a_t_u_s___i_s.html g6adc2f539eabedb504294458be4f6251 (s) #define APR_STATUS_IS_EHOSTUNREACH group___a_p_r___s_t_a_t_u_s___i_s.html gd9307ff02e50296c528b79a670dc80bb (s) #define APR_STATUS_IS_ENETUNREACH group___a_p_r___s_t_a_t_u_s___i_s.html g19911958b3dd62559fb6c245ec579c27 (s) #define APR_STATUS_IS_EFTYPE group___a_p_r___s_t_a_t_u_s___i_s.html gf37f4f8f6c929728bf55b927576bdb69 (s) #define APR_STATUS_IS_EPIPE group___a_p_r___s_t_a_t_u_s___i_s.html gd1c0cf4e5619025a87c8edfc668d49f6 (s) #define APR_STATUS_IS_EXDEV group___a_p_r___s_t_a_t_u_s___i_s.html g1a11d6ff007e40f93f9db1b3c6e76617 (s) #define APR_STATUS_IS_ENOTEMPTY group___a_p_r___s_t_a_t_u_s___i_s.html g6cced4e794d3e7ed6dae3e53c337cc02 (s) #define APR_STATUS_IS_EAFNOSUPPORT group___a_p_r___s_t_a_t_u_s___i_s.html g9309aade5bd335ac5233170e8c120cb9 (s) apr_file_info File Information group__apr__file__info.html apr_file_permissions apr_file_stat apr_dir apr_filepath struct apr_dir_t apr_dir_t group__apr__file__info.html g92ed8cf52cba2abb42cf74087aa74da8 apr_int32_t apr_fileperms_t group__apr__file__info.html g3af19c4c47007169064a70f9351bc7d8 dev_t apr_dev_t group__apr__file__info.html ge2c25c4b679613081599f776efa96c4a apr_filetype_e group__apr__file__info.html ge3f0ce3014337a52b39852f8bf81ca7c APR_NOFILE group__apr__file__info.html gge3f0ce3014337a52b39852f8bf81ca7ce5877c29ba5fd483edbde0c51c0ac5e9 APR_REG group__apr__file__info.html gge3f0ce3014337a52b39852f8bf81ca7c9a2849ad21618c937683c1ffe13a6257 APR_DIR group__apr__file__info.html gge3f0ce3014337a52b39852f8bf81ca7ce2ee810fa994ae64b8fcc6b68d3ae540 APR_CHR group__apr__file__info.html gge3f0ce3014337a52b39852f8bf81ca7cdb769ffbe8659cbecf7ebf376d098d37 APR_BLK group__apr__file__info.html gge3f0ce3014337a52b39852f8bf81ca7c20ea6a09a69785a7cd19fd05243c1c8d APR_PIPE group__apr__file__info.html gge3f0ce3014337a52b39852f8bf81ca7c247719668cd02286a6a0ed767c30ce77 APR_LNK group__apr__file__info.html gge3f0ce3014337a52b39852f8bf81ca7c2b55a6db64d814bf08d5a56b026a8176 APR_SOCK group__apr__file__info.html gge3f0ce3014337a52b39852f8bf81ca7cdd5d86c1e616fe159a7ec04e0ddc70db APR_UNKFILE group__apr__file__info.html gge3f0ce3014337a52b39852f8bf81ca7c3347d2110d62ce464ddf1ae38759e6b0 apr_file_permissions File Permissions flags group__apr__file__permissions.html #define APR_FPROT_USETID group__apr__file__permissions.html g67caebf5bbe4f3f4b6252a75e5ce066f #define APR_FPROT_UREAD group__apr__file__permissions.html gab6c4c2e7b95f4345c248c27b3f1a655 #define APR_FPROT_UWRITE group__apr__file__permissions.html g50b985779b15fbfdae0758e98ffb92af #define APR_FPROT_UEXECUTE group__apr__file__permissions.html g156e1374a4ef30e745340d8c20b36d03 #define APR_FPROT_GSETID group__apr__file__permissions.html g5fcf6746afdd4e9b8be6ceab6892a3f5 #define APR_FPROT_GREAD group__apr__file__permissions.html g5ad9b67b8008db3ffc56c3c2a65aa192 #define APR_FPROT_GWRITE group__apr__file__permissions.html gcecdc9f88b04c768150418688b786500 #define APR_FPROT_GEXECUTE group__apr__file__permissions.html gb627bef3f9ceb84bbf00906eaeb12184 #define APR_FPROT_WSTICKY group__apr__file__permissions.html g989dbea02f779a5f20a643d7e4ee9952 #define APR_FPROT_WREAD group__apr__file__permissions.html g194718630250b0f0dd4be38c86dac717 #define APR_FPROT_WWRITE group__apr__file__permissions.html g51692a9828f5b6288d89495378944260 #define APR_FPROT_WEXECUTE group__apr__file__permissions.html g760d69c09b38ddf1e0aff09362d8ce11 #define APR_FPROT_OS_DEFAULT group__apr__file__permissions.html gd3c65a67ee6eb12ecc6a33857397900b #define APR_FPROT_FILE_SOURCE_PERMS group__apr__file__permissions.html gc08d4e868c7c9532f7c97c70556663dc #define APR_USETID group__apr__file__permissions.html gfae6b531c08999345536cae5654d0d03 #define APR_UREAD group__apr__file__permissions.html g51dc87ecd94c98e97694e68d5d9620a0 #define APR_UWRITE group__apr__file__permissions.html g4faa7fdfa3bcda569dd1e23ae002c5e5 #define APR_UEXECUTE group__apr__file__permissions.html g4c08d7e798ab4022e31ed70f06f202b5 #define APR_GSETID group__apr__file__permissions.html g4e4e9bb05f2bb156b174461551c9c329 #define APR_GREAD group__apr__file__permissions.html g1bd0305f31cb3bb20a8f9db898b96eb1 #define APR_GWRITE group__apr__file__permissions.html g794c425b459aa46939f6febabbe9daef #define APR_GEXECUTE group__apr__file__permissions.html g79ce615a96a407d6c53325a2f8cdee3d #define APR_WSTICKY group__apr__file__permissions.html g824d6685d59e3efddb6ee7fdbee69c13 #define APR_WREAD group__apr__file__permissions.html g5c987d2b1ace95b4ffa7c5a322721aad #define APR_WWRITE group__apr__file__permissions.html g7aac61689e9aaa93176bdb4911f56863 #define APR_WEXECUTE group__apr__file__permissions.html g7bf4afea195c62f41aad1d3e94dcdac6 #define APR_OS_DEFAULT group__apr__file__permissions.html g8552adb50d545d5fc7faeabb4f4a388f #define APR_FILE_SOURCE_PERMS group__apr__file__permissions.html ga72c8bc4ab1bd5615bee4333d23dc16b apr_file_stat Stat Functions group__apr__file__stat.html apr_finfo_t #define APR_FINFO_LINK group__apr__file__stat.html g9b0c1d02401b845f928f836fdd3c6712 #define APR_FINFO_MTIME group__apr__file__stat.html g992ce1f4f75d519fd2a9d241c5a12515 #define APR_FINFO_CTIME group__apr__file__stat.html g98bef78baf71fa63b06352704f128bca #define APR_FINFO_ATIME group__apr__file__stat.html g17d7656d02a35ffc05afe22032a8da15 #define APR_FINFO_SIZE group__apr__file__stat.html gdf72493da450c0b1e3d279e98a973120 #define APR_FINFO_CSIZE group__apr__file__stat.html gf87a09b89935d730cb1ade80d5b6ada0 #define APR_FINFO_DEV group__apr__file__stat.html g0890d31145211f62d38dd8e444b5660a #define APR_FINFO_INODE group__apr__file__stat.html g4fee7341395912db501b40de81dbba26 #define APR_FINFO_NLINK group__apr__file__stat.html gbb2ba05b8ed45e59b1f06e1b7b4c91c2 #define APR_FINFO_TYPE group__apr__file__stat.html gd5d25f25527ee77c08bb20aae141306c #define APR_FINFO_USER group__apr__file__stat.html g599d92111a5cca379a06980025044e12 #define APR_FINFO_GROUP group__apr__file__stat.html g8420798139d34a88678498aa848803ff #define APR_FINFO_UPROT group__apr__file__stat.html gc85e4335fcf91881b11b3e8a4b224aca #define APR_FINFO_GPROT group__apr__file__stat.html gdfa294303e34528b1fcae1bc009140c1 #define APR_FINFO_WPROT group__apr__file__stat.html gb970792384fe9a805cf66983350eefdc #define APR_FINFO_ICASE group__apr__file__stat.html gc46eeba0ae0e771c6ed3cb27fd5492d8 #define APR_FINFO_NAME group__apr__file__stat.html g7fa4caf84808c11a1ec33c5c8d613e4b #define APR_FINFO_MIN group__apr__file__stat.html g341104571b05550aa923cb14898a82ef #define APR_FINFO_IDENT group__apr__file__stat.html g3ac8c8d0492291417be3d32556464108 #define APR_FINFO_OWNER group__apr__file__stat.html g27dee9407b38a459c57618098c3920b0 #define APR_FINFO_PROT group__apr__file__stat.html gd902be0636860cb3f8ad76a59abbcd7c #define APR_FINFO_NORM group__apr__file__stat.html gd3f64010d25d2fe926191804d7c99379 #define APR_FINFO_DIRENT group__apr__file__stat.html gac6679307cc735f2f0373960db96b931 struct apr_finfo_t apr_finfo_t group__apr__file__stat.html g3d390fdda1d16ae462c11b2d3b18efd1 apr_status_t apr_stat group__apr__file__stat.html gfb0f4a4fa4545c155e20ddd8f2001c1a (apr_finfo_t *finfo, const char *fname, apr_int32_t wanted, apr_pool_t *pool) apr_dir Directory Manipulation Functions group__apr__dir.html apr_status_t apr_dir_open group__apr__dir.html g796002db3e3c7b7c9d5632efbcd4329c (apr_dir_t **new_dir, const char *dirname, apr_pool_t *pool) apr_status_t apr_dir_close group__apr__dir.html g57fef00ccea03e9244f6fa21da4d3359 (apr_dir_t *thedir) apr_status_t apr_dir_read group__apr__dir.html g3e4ee253e0c712160bee10bfb9c8e4a8 (apr_finfo_t *finfo, apr_int32_t wanted, apr_dir_t *thedir) apr_status_t apr_dir_rewind group__apr__dir.html gb9b9f23e76128144d3fb953cabea6290 (apr_dir_t *thedir) apr_filepath Filepath Manipulation Functions group__apr__filepath.html #define APR_FILEPATH_NOTABOVEROOT group__apr__filepath.html gbb57ce7b23caf512d7f64b92a662ab3d #define APR_FILEPATH_SECUREROOTTEST group__apr__filepath.html g48b6cabfa91e6070c45977ba7035f328 #define APR_FILEPATH_SECUREROOT group__apr__filepath.html g6a518889311b81e1d2fc434e7d3acecd #define APR_FILEPATH_NOTRELATIVE group__apr__filepath.html g487344eb474ea4033b19c386db9aa03a #define APR_FILEPATH_NOTABSOLUTE group__apr__filepath.html gac75b8e9fd5c248b52ac36a1fd6b7f98 #define APR_FILEPATH_NATIVE group__apr__filepath.html g2d72ade2cada76d2fa8af3fe4d8fb1de #define APR_FILEPATH_TRUENAME group__apr__filepath.html gfb7dd411e9ef212a03051806cb60c9d8 #define APR_FILEPATH_ENCODING_UNKNOWN group__apr__filepath.html g26cd6345ccc38ae3ad001fd2fa885634 #define APR_FILEPATH_ENCODING_LOCALE group__apr__filepath.html gecb3193c8e36fbf58564f94b8c38b6d9 #define APR_FILEPATH_ENCODING_UTF8 group__apr__filepath.html g1c99d1644a8b49dc0be166bdc352819a apr_status_t apr_filepath_root group__apr__filepath.html g1eacdd5ed069faa137bde014fa50494d (const char **rootpath, const char **filepath, apr_int32_t flags, apr_pool_t *p) apr_status_t apr_filepath_merge group__apr__filepath.html ge89fd67108f10dc5044b6d062dde0138 (char **newpath, const char *rootpath, const char *addpath, apr_int32_t flags, apr_pool_t *p) apr_status_t apr_filepath_list_split group__apr__filepath.html gf259849de62ac172dde7dcbe73421500 (apr_array_header_t **pathelts, const char *liststr, apr_pool_t *p) apr_status_t apr_filepath_list_merge group__apr__filepath.html g8316896ab8e3901f9711d9d4cc89b373 (char **liststr, apr_array_header_t *pathelts, apr_pool_t *p) apr_status_t apr_filepath_get group__apr__filepath.html gac7c26321fd60d7304326fe531639507 (char **path, apr_int32_t flags, apr_pool_t *p) apr_status_t apr_filepath_set group__apr__filepath.html g9773589b65b7f0b7d5b59d427fd0eb93 (const char *path, apr_pool_t *p) apr_status_t apr_filepath_encoding group__apr__filepath.html gd4d3a5888a54a52b3552911e448a3eb3 (int *style, apr_pool_t *p) apr_file_io File I/O Handling Functions group__apr__file__io.html apr_file_open_flags apr_file_seek_flags apr_file_attrs_set_flags apr_file_writev apr_file_lock_types apr_uint32_t apr_fileattrs_t group__apr__file__io.html g11fbee5a7a3f3d45fff5c31df0db9737 int apr_seek_where_t group__apr__file__io.html g8eecd44975906042e0e369771802a145 struct apr_file_t apr_file_t group__apr__file__io.html ga46e4763ac375ea3c7a43ba6f6099e22 apr_status_t apr_file_open group__apr__file__io.html gbda14cbf242fb4fe99055434213e5446 (apr_file_t **newf, const char *fname, apr_int32_t flag, apr_fileperms_t perm, apr_pool_t *pool) apr_status_t apr_file_close group__apr__file__io.html g5607bce1c4c798ceb6c8475a998a81a1 (apr_file_t *file) apr_status_t apr_file_remove group__apr__file__io.html g211c40be82f8bf8b8d7dce5afca5500b (const char *path, apr_pool_t *pool) apr_status_t apr_file_rename group__apr__file__io.html g29b5633bb80226baa5de79a83c6999aa (const char *from_path, const char *to_path, apr_pool_t *pool) apr_status_t apr_file_copy group__apr__file__io.html g2b82c441246cc4596795420b0a94a9a2 (const char *from_path, const char *to_path, apr_fileperms_t perms, apr_pool_t *pool) apr_status_t apr_file_append group__apr__file__io.html g0b9bc41ffa4ac43cbea46b44eace939e (const char *from_path, const char *to_path, apr_fileperms_t perms, apr_pool_t *pool) apr_status_t apr_file_eof group__apr__file__io.html g8efaff2f556b250fee1021541b782ea8 (apr_file_t *fptr) apr_status_t apr_file_open_stderr group__apr__file__io.html gf426d98943319acced2c9b52757f377f (apr_file_t **thefile, apr_pool_t *pool) apr_status_t apr_file_open_stdout group__apr__file__io.html g0d36922c0944ff9675cc820e68d56199 (apr_file_t **thefile, apr_pool_t *pool) apr_status_t apr_file_open_stdin group__apr__file__io.html g539454470148f9b22a31f85936a5f8b4 (apr_file_t **thefile, apr_pool_t *pool) apr_status_t apr_file_open_flags_stderr group__apr__file__io.html g6e87d695994e236dae3d428ed68886bf (apr_file_t **thefile, apr_int32_t flags, apr_pool_t *pool) apr_status_t apr_file_open_flags_stdout group__apr__file__io.html geda353505bc1dc46db93b0a80d0b1c4c (apr_file_t **thefile, apr_int32_t flags, apr_pool_t *pool) apr_status_t apr_file_open_flags_stdin group__apr__file__io.html g3bde3e61454b5604077f297b1d1671c0 (apr_file_t **thefile, apr_int32_t flags, apr_pool_t *pool) apr_status_t apr_file_read group__apr__file__io.html gdd067ee0050dff0c03a9420c9d424466 (apr_file_t *thefile, void *buf, apr_size_t *nbytes) apr_status_t apr_file_write group__apr__file__io.html g2e4baa94102c363fdca3c850375d3584 (apr_file_t *thefile, const void *buf, apr_size_t *nbytes) apr_status_t apr_file_writev group__apr__file__io.html gcc7924dd7af1c2948b5b2ea6e5f77984 (apr_file_t *thefile, const struct iovec *vec, apr_size_t nvec, apr_size_t *nbytes) apr_status_t apr_file_read_full group__apr__file__io.html gf39a17404e868808aff8e2e7ecaa87e0 (apr_file_t *thefile, void *buf, apr_size_t nbytes, apr_size_t *bytes_read) apr_status_t apr_file_write_full group__apr__file__io.html g560d5c062d65e64c07d906d1207337d4 (apr_file_t *thefile, const void *buf, apr_size_t nbytes, apr_size_t *bytes_written) apr_status_t apr_file_writev_full group__apr__file__io.html g24457e11f0db908b21b7e1742db4ed7b (apr_file_t *thefile, const struct iovec *vec, apr_size_t nvec, apr_size_t *nbytes) apr_status_t apr_file_putc group__apr__file__io.html g33e51b53194e7c0dac513ca27ca18e63 (char ch, apr_file_t *thefile) apr_status_t apr_file_getc group__apr__file__io.html g852b9c77d4223af15d8d3674a0e2714d (char *ch, apr_file_t *thefile) apr_status_t apr_file_ungetc group__apr__file__io.html g9d06778e719d596ab96bca812b01cb3a (char ch, apr_file_t *thefile) apr_status_t apr_file_gets group__apr__file__io.html gf9513b769c10b09e5f37d6d0b86bdce9 (char *str, int len, apr_file_t *thefile) apr_status_t apr_file_puts group__apr__file__io.html gcde81145cc38660a1512d469886ddb16 (const char *str, apr_file_t *thefile) apr_status_t apr_file_flush group__apr__file__io.html g68aba780b7fc53e47404bfd8def949bc (apr_file_t *thefile) apr_status_t apr_file_dup group__apr__file__io.html g6e849af1b0fd31669c58a803fcb13837 (apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p) apr_status_t apr_file_dup2 group__apr__file__io.html g602926aad867088297e8f59490ff939c (apr_file_t *new_file, apr_file_t *old_file, apr_pool_t *p) apr_status_t apr_file_setaside group__apr__file__io.html gdaf046ce39aa118dab921a407446355b (apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p) apr_status_t apr_file_buffer_set group__apr__file__io.html gfe4be8c3b62c42535b84d4237bf6e421 (apr_file_t *thefile, char *buffer, apr_size_t bufsize) apr_size_t apr_file_buffer_size_get group__apr__file__io.html g42bbb9227095686ea15eb79f99d248a2 (apr_file_t *thefile) apr_status_t apr_file_seek group__apr__file__io.html g9db84bec24db97a53890df1a6aff63a1 (apr_file_t *thefile, apr_seek_where_t where, apr_off_t *offset) apr_status_t apr_file_pipe_create group__apr__file__io.html gae3b81342d239c58c351cf11190740ed (apr_file_t **in, apr_file_t **out, apr_pool_t *pool) apr_status_t apr_file_pipe_create_ex group__apr__file__io.html gc365ab74c583eb1df5cd05660a81b5c8 (apr_file_t **in, apr_file_t **out, apr_int32_t blocking, apr_pool_t *p) apr_status_t apr_file_namedpipe_create group__apr__file__io.html g60cec3e6717bab0f11577bd7c38b4c59 (const char *filename, apr_fileperms_t perm, apr_pool_t *pool) apr_status_t apr_file_pipe_timeout_get group__apr__file__io.html g90e481207a38df04818a0c55883ee953 (apr_file_t *thepipe, apr_interval_time_t *timeout) apr_status_t apr_file_pipe_timeout_set group__apr__file__io.html gf88d2fca768e3fa9f28ea010e1bf602a (apr_file_t *thepipe, apr_interval_time_t timeout) apr_status_t apr_file_lock group__apr__file__io.html g2d337e66c1fa0cd433164079bf542484 (apr_file_t *thefile, int type) apr_status_t apr_file_unlock group__apr__file__io.html g3a255996fb439b6d66ed7cd65319525b (apr_file_t *thefile) apr_status_t apr_file_name_get group__apr__file__io.html g5c750a88fe1e032e1d85d3db40d9519f (const char **new_path, apr_file_t *thefile) apr_status_t apr_file_data_get group__apr__file__io.html gfa13b7024748a7e45344d6998ddbd281 (void **data, const char *key, apr_file_t *file) apr_status_t apr_file_data_set group__apr__file__io.html g58c857162593d8b3aa999df5b7af0805 (apr_file_t *file, void *data, const char *key, apr_status_t(*cleanup)(void *)) int apr_file_printf group__apr__file__io.html g29fca4b0201c236856fea5578f410c0e (apr_file_t *fptr, const char *format,...) apr_status_t apr_file_perms_set group__apr__file__io.html gc5fed6d75597476718c40fc603823b1e (const char *fname, apr_fileperms_t perms) apr_status_t apr_file_attrs_set group__apr__file__io.html g96ceec3492ad0c75d2b58c167087ee6a (const char *fname, apr_fileattrs_t attributes, apr_fileattrs_t attr_mask, apr_pool_t *pool) apr_status_t apr_file_mtime_set group__apr__file__io.html g79f58458a00a4072622005c09ed8f96f (const char *fname, apr_time_t mtime, apr_pool_t *pool) apr_status_t apr_dir_make group__apr__file__io.html g51e0b4703c7561f72587982808985d29 (const char *path, apr_fileperms_t perm, apr_pool_t *pool) apr_status_t apr_dir_make_recursive group__apr__file__io.html g6a3b2602f57ff148cd64096da02adbd2 (const char *path, apr_fileperms_t perm, apr_pool_t *pool) apr_status_t apr_dir_remove group__apr__file__io.html g5487d02a62fba9444747ccb5838150ba (const char *path, apr_pool_t *pool) apr_status_t apr_file_info_get group__apr__file__io.html g39be7fe05d0dda4a28f4358b61a44ac8 (apr_finfo_t *finfo, apr_int32_t wanted, apr_file_t *thefile) apr_status_t apr_file_trunc group__apr__file__io.html gc067fe5f208c927cf6d213197b9335a8 (apr_file_t *fp, apr_off_t offset) apr_int32_t apr_file_flags_get group__apr__file__io.html g023d6e4d2512382a9d4b1f881e105b8f (apr_file_t *f) apr_pool_t * apr_file_pool_get group__apr__file__io.html gb5950b3b0156097b0181394a37e03ede (const apr_file_t *thefile) apr_status_t apr_file_inherit_set group__apr__file__io.html g137bee13d2c65fb8afd4b34e400187c7 (apr_file_t *thefile) apr_status_t apr_file_inherit_unset group__apr__file__io.html g69fa72a6f77b96572248c2a6a347c02a (apr_file_t *thefile) apr_status_t apr_file_mktemp group__apr__file__io.html gc34981f9ff41f85e4377a6dde185fe52 (apr_file_t **fp, char *templ, apr_int32_t flags, apr_pool_t *p) apr_status_t apr_temp_dir_get group__apr__file__io.html g5cc19828a668c362be0ad7a12b805cc0 (const char **temp_dir, apr_pool_t *p) apr_file_open_flags File Open Flags/Routines group__apr__file__open__flags.html #define APR_FOPEN_READ group__apr__file__open__flags.html gf9e7303f028b130ff7d4b209d6662d7d #define APR_FOPEN_WRITE group__apr__file__open__flags.html gc598bb95fc9476b0bf2ed0b1c308842c #define APR_FOPEN_CREATE group__apr__file__open__flags.html gfe94f21ccbf411172e70e7f473af251a #define APR_FOPEN_APPEND group__apr__file__open__flags.html g45f353db9b71d4760a3f35cf3781cfc8 #define APR_FOPEN_TRUNCATE group__apr__file__open__flags.html g09b05a5bd5db534b93794f7657bcb146 #define APR_FOPEN_BINARY group__apr__file__open__flags.html gcb20b3028864f34cb26314fe2cacc3fa #define APR_FOPEN_EXCL group__apr__file__open__flags.html gbb7fb062cdf1d58faee8c7ea518496f1 #define APR_FOPEN_BUFFERED group__apr__file__open__flags.html gc48fd4c853c9f561632a2e8aaf5d8d97 #define APR_FOPEN_DELONCLOSE group__apr__file__open__flags.html g5d3756f6d242c667ed1d3f54af4916eb #define APR_FOPEN_XTHREAD group__apr__file__open__flags.html g435cd9b2604b11796779c23ffa00a3dd #define APR_FOPEN_SHARELOCK group__apr__file__open__flags.html g426f6e2a8457ab410d99248269059a18 #define APR_FOPEN_NOCLEANUP group__apr__file__open__flags.html g3fc9b5a7791d9f462997cd29de67eb80 #define APR_FOPEN_SENDFILE_ENABLED group__apr__file__open__flags.html g60c21e28e4a612d58a874fe2cc71a6e4 #define APR_FOPEN_LARGEFILE group__apr__file__open__flags.html gf6cfaa4789e6264afd186235f0adbc22 #define APR_FOPEN_SPARSE group__apr__file__open__flags.html g0d155e9bb7fbf1a5cd4e84b5ede059f4 #define APR_READ group__apr__file__open__flags.html g0021db78d799d1c8825b701c7efee483 #define APR_WRITE group__apr__file__open__flags.html g3e427e53aceb1ccdb078d9a03cd63d01 #define APR_CREATE group__apr__file__open__flags.html gc210e96bc821dbaa83c326e775dad028 #define APR_APPEND group__apr__file__open__flags.html g26d3de2bae5c90e5124869f56c141c2e #define APR_TRUNCATE group__apr__file__open__flags.html ga8898fdebd69d3a64286731b713a6dc9 #define APR_BINARY group__apr__file__open__flags.html g0e7556bac0cc0d1dafdf38952a4e4015 #define APR_EXCL group__apr__file__open__flags.html g209c26b2b903cc23417f6781d4edf891 #define APR_BUFFERED group__apr__file__open__flags.html g6edc818199e8b90e3dabf97c42a27158 #define APR_DELONCLOSE group__apr__file__open__flags.html gebc7f034a72dffe64858b1b9451994ff #define APR_XTHREAD group__apr__file__open__flags.html ga9120c0e395d8a0e640b5eafa8f11cce #define APR_SHARELOCK group__apr__file__open__flags.html g41277154f4f754a22287ed90e9466811 #define APR_FILE_NOCLEANUP group__apr__file__open__flags.html g3ef1061dbb3adf595701bd12edb062f9 #define APR_SENDFILE_ENABLED group__apr__file__open__flags.html g17e216aadb23254580258889e10c53f3 #define APR_LARGEFILE group__apr__file__open__flags.html gafa04fd4ec71910a5d7af1c7f5596bad apr_file_seek_flags File Seek Flags group__apr__file__seek__flags.html #define APR_SET group__apr__file__seek__flags.html g2fdf78845c897f69451d49e1e2b90ac9 #define APR_CUR group__apr__file__seek__flags.html ge17abc53fea00bfd51e184017113e250 #define APR_END group__apr__file__seek__flags.html g438f3568be799d1e4bbd19492ca47d22 apr_file_attrs_set_flags File Attribute Flags group__apr__file__attrs__set__flags.html #define APR_FILE_ATTR_READONLY group__apr__file__attrs__set__flags.html g333f2c798495cfb95ee624e11c862e38 #define APR_FILE_ATTR_EXECUTABLE group__apr__file__attrs__set__flags.html g51346f433e354f0bc8722388b6b275fd #define APR_FILE_ATTR_HIDDEN group__apr__file__attrs__set__flags.html g68c188c0e56b9abdef3c97ffd913c5aa apr_file_writev {_full} max iovec size group__apr__file__writev.html #define APR_MAX_IOVEC_SIZE group__apr__file__writev.html ge04a4721139b2b252ea20e68883da4b4 apr_file_lock_types File Lock Types group__apr__file__lock__types.html #define APR_FLOCK_SHARED group__apr__file__lock__types.html gba177fe81cd70b389753ad2096b2ce7c #define APR_FLOCK_EXCLUSIVE group__apr__file__lock__types.html gfbf0caa093b99bdf11e25360b9099852 #define APR_FLOCK_TYPEMASK group__apr__file__lock__types.html g40777e364fb20bb9a9ee57e74b19c13d #define APR_FLOCK_NONBLOCK group__apr__file__lock__types.html gb327fa0250e19006f20d5ec65fe7f22a apr_fnmatch Filename Matching Functions group__apr__fnmatch.html #define APR_FNM_NOMATCH group__apr__fnmatch.html gea769621807400e4c741e7deddf6c3df #define APR_FNM_NOESCAPE group__apr__fnmatch.html ge12c1286631f316647be6dc007170630 #define APR_FNM_PATHNAME group__apr__fnmatch.html g0d421a2cef68cb590f958b5de6c7fe1b #define APR_FNM_PERIOD group__apr__fnmatch.html g4806f936b6eacc59dfed831d67b750ef #define APR_FNM_CASE_BLIND group__apr__fnmatch.html g5cee1c0a917a283a193721d11160b502 apr_status_t apr_fnmatch group__apr__fnmatch.html gbe9c7d7efe6afc203a01befbc45bad96 (const char *pattern, const char *strings, int flags) int apr_fnmatch_test group__apr__fnmatch.html g4e7828bb7be756d999f13b8af8202204 (const char *pattern) apr_status_t apr_match_glob group__apr__fnmatch.html gba55810d3e241b61b9f47f23231e3a02 (const char *pattern, apr_array_header_t **result, apr_pool_t *p) apr_general Miscellaneous library routines group__apr__general.html #define FALSE group__apr__general.html ga93f0eb578d23995850d61f7d61c55c1 #define TRUE group__apr__general.html ga8cecfc5c5c054d2875c03e77b7be15d #define APR_ASCII_BLANK group__apr__general.html g60fc208d93123acc7cf915a66e49e654 #define APR_ASCII_CR group__apr__general.html g91c14ef7f03e82c07f4d3d56f63f8b6a #define APR_ASCII_LF group__apr__general.html g9e76601cef56a7a5b25f73fe6d57d7d9 #define APR_ASCII_TAB group__apr__general.html gc7162c0b5d026a0717aaa98bf581349d #define APR_OFFSET group__apr__general.html g41e537d6ad732766d12cd4eb61531678 (p_type, field) #define APR_OFFSETOF group__apr__general.html gc16b1187b6ea63706c5dd48c88323dec (s_type, field) #define APR_ALIGN group__apr__general.html g3c4f50d14ebe7a6add282d879521d552 (size, boundary) #define APR_ALIGN_DEFAULT group__apr__general.html gb484e98426221f3212fcb67af0467381 (size) #define APR_STRINGIFY group__apr__general.html ge90215615972dfa4108018304361ef0b (n) #define APR_STRINGIFY_HELPER group__apr__general.html g71918dd8c53e093283b43b0ff0965439 (n) int apr_signum_t group__apr__general.html gfe9e657d61b61d62ecba34299a82a7ea apr_library Library initialization and termination group__apr__library.html apr_status_t apr_initialize group__apr__library.html g4a91a6b9ff457ead13e670950127761a (void) apr_status_t apr_app_initialize group__apr__library.html ga1c4fc2e1c814cc5d4cd3d8719288fc9 (int *argc, char const *const **argv, char const *const **env) void apr_terminate group__apr__library.html g8e96d45ee09fc7e7eb3646efef1424a3 (void) void apr_terminate2 group__apr__library.html g18667a60ff34d6209e519b4a4ce8cad1 (void) apr_random Random Functions group__apr__random.html apr_crypto_hash_t struct apr_crypto_hash_t apr_crypto_hash_t group__apr__random.html g30fbaf80424a9f1a0e9cc51072f65127 void apr_crypto_hash_init_t group__apr__random.html gd2775bc1cdb376d9dec0e97283b4bdd9 (apr_crypto_hash_t *hash) void apr_crypto_hash_add_t group__apr__random.html g2f8a4fb18078a76357327ea55936c1ea (apr_crypto_hash_t *hash, const void *data, apr_size_t bytes) void apr_crypto_hash_finish_t group__apr__random.html gb70ea9133870efdb5532d20d4bcf7442 (apr_crypto_hash_t *hash, unsigned char *result) struct apr_random_t apr_random_t group__apr__random.html g33073741e56b1bafe52ba58cefcbbf96 apr_status_t apr_generate_random_bytes group__apr__random.html g564e4c380e820a9b0d9e877d4852a65e (unsigned char *buf, apr_size_t length) apr_crypto_hash_t * apr_crypto_sha256_new group__apr__random.html ge992c6f642e9661d2417cd8f2df8d345 (apr_pool_t *p) void apr_random_init group__apr__random.html g0184a90774212132f883c463811aacdc (apr_random_t *g, apr_pool_t *p, apr_crypto_hash_t *pool_hash, apr_crypto_hash_t *key_hash, apr_crypto_hash_t *prng_hash) apr_random_t * apr_random_standard_new group__apr__random.html g7a73c9bcf026b63847aeae483c53191f (apr_pool_t *p) void apr_random_add_entropy group__apr__random.html g8cf2875644c1dffc0c336289bd370efb (apr_random_t *g, const void *entropy_, apr_size_t bytes) apr_status_t apr_random_insecure_bytes group__apr__random.html gb9a63359bb9543d746e6fd46933b7256 (apr_random_t *g, void *random, apr_size_t bytes) apr_status_t apr_random_secure_bytes group__apr__random.html g9f0607e06656a1c76cc5ee878fd94f09 (apr_random_t *g, void *random, apr_size_t bytes) void apr_random_barrier group__apr__random.html g37d8d7529cf972c605ebce97c57f8825 (apr_random_t *g) apr_status_t apr_random_secure_ready group__apr__random.html g99d0c0722eeef2951e8ccede2e1451fa (apr_random_t *r) apr_status_t apr_random_insecure_ready group__apr__random.html g6465698bdc752d07abc8c515aac6e2c0 (apr_random_t *r) void apr_random_after_fork group__apr__random.html ga1ab9b8adeeb6e37bb29def249ff9e6a (apr_proc_t *proc) apr_getopt Command Argument Parsing group__apr__getopt.html apr_getopt_t apr_getopt_option_t void( apr_getopt_err_fn_t group__apr__getopt.html ge82318936f08cc3531ce9b0856422f27 )(void *arg, const char *err,...) struct apr_getopt_t apr_getopt_t group__apr__getopt.html ged49565eab64803e93f76d0c40d6873d struct apr_getopt_option_t apr_getopt_option_t group__apr__getopt.html g114d2af52f3573eaeee2ffa73b2c4ff5 apr_status_t apr_getopt_init group__apr__getopt.html gaab2b4bfb62361af7a2d427f5f29a3d4 (apr_getopt_t **os, apr_pool_t *cont, int argc, const char *const *argv) apr_status_t apr_getopt group__apr__getopt.html g289cdcf7eacc997eb91fea7c02d08934 (apr_getopt_t *os, const char *opts, char *option_ch, const char **option_arg) apr_status_t apr_getopt_long group__apr__getopt.html g80d6ff2213da4e25406b3f179fa13989 (apr_getopt_t *os, const apr_getopt_option_t *opts, int *option_ch, const char **option_arg) APR_GlobalMutex Global Locking Routines group___a_p_r___global_mutex.html struct apr_global_mutex_t apr_global_mutex_t group___a_p_r___global_mutex.html g3fc7dc5b076533ee566aa4888ac35ee7 apr_status_t apr_global_mutex_create group___a_p_r___global_mutex.html g7a5ade1ba8ea6c7a7a61e3e719683cb0 (apr_global_mutex_t **mutex, const char *fname, apr_lockmech_e mech, apr_pool_t *pool) apr_status_t apr_global_mutex_child_init group___a_p_r___global_mutex.html g51eb034bca0352075c92c08a21d4d7a0 (apr_global_mutex_t **mutex, const char *fname, apr_pool_t *pool) apr_status_t apr_global_mutex_lock group___a_p_r___global_mutex.html g1338485664e6c2737340114cace57121 (apr_global_mutex_t *mutex) apr_status_t apr_global_mutex_trylock group___a_p_r___global_mutex.html g2a6543fba6473b47e33a7b7fc2ba6935 (apr_global_mutex_t *mutex) apr_status_t apr_global_mutex_unlock group___a_p_r___global_mutex.html g16e732ae76dfe104b157e0fc543d3aa3 (apr_global_mutex_t *mutex) apr_status_t apr_global_mutex_destroy group___a_p_r___global_mutex.html g1f2cb4a1ec57089db49701e747892607 (apr_global_mutex_t *mutex) apr_pool_t * apr_global_mutex_pool_get group___a_p_r___global_mutex.html g01d5c1bbb32b976083b9c8234b04cd46 (const apr_global_mutex_t *theglobal_mutex) apr_hash Hash Tables group__apr__hash.html #define APR_HASH_KEY_STRING group__apr__hash.html g3ba32541f2717b394000f87f38c7e12d struct apr_hash_t apr_hash_t group__apr__hash.html g72ec09b8bde6d874c36bd49df915fff6 struct apr_hash_index_t apr_hash_index_t group__apr__hash.html g3b3d353989f6cea4535630634be147f7 unsigned int(* apr_hashfunc_t group__apr__hash.html g083e92cab31343c1ebb9073275e8166e )(const char *key, apr_ssize_t *klen) unsigned int apr_hashfunc_default group__apr__hash.html g8baa6e9d9d6c2c496d2a0ff1a5c53abe (const char *key, apr_ssize_t *klen) apr_hash_t * apr_hash_make group__apr__hash.html g5f4b424d6761de4d32aa16ff6803bac9 (apr_pool_t *pool) apr_hash_t * apr_hash_make_custom group__apr__hash.html g27f40acb206f1821a783ddcb71bc8971 (apr_pool_t *pool, apr_hashfunc_t hash_func) apr_hash_t * apr_hash_copy group__apr__hash.html gfa0b1b9fb91b2249ee3bcb645d93e148 (apr_pool_t *pool, const apr_hash_t *h) void apr_hash_set group__apr__hash.html g456beb139bc548728b49c09c2f89b93c (apr_hash_t *ht, const void *key, apr_ssize_t klen, const void *val) void * apr_hash_get group__apr__hash.html g05e526dad8afaebe14caea90d906d6ec (apr_hash_t *ht, const void *key, apr_ssize_t klen) apr_hash_index_t * apr_hash_first group__apr__hash.html g640005a4ba64a5db039b0b43a8ad4898 (apr_pool_t *p, apr_hash_t *ht) apr_hash_index_t * apr_hash_next group__apr__hash.html g9d7b9198555659e9abac4e3028ccce00 (apr_hash_index_t *hi) void apr_hash_this group__apr__hash.html gd90e5b895397c2c535e32b3e44a75b3f (apr_hash_index_t *hi, const void **key, apr_ssize_t *klen, void **val) unsigned int apr_hash_count group__apr__hash.html g4e44efa9ef043c1bb8a4abc5edcfda2c (apr_hash_t *ht) void apr_hash_clear group__apr__hash.html g06fb1b9ecff1a15ee41ff02db74264e4 (apr_hash_t *ht) apr_hash_t * apr_hash_overlay group__apr__hash.html g2f68646a64bad44efcbf3457af581fdb (apr_pool_t *p, const apr_hash_t *overlay, const apr_hash_t *base) apr_hash_t * apr_hash_merge group__apr__hash.html ga954266cd16a55f7f384ab0a9c4ff9f1 (apr_pool_t *p, const apr_hash_t *h1, const apr_hash_t *h2, void *(*merger)(apr_pool_t *p, const void *key, apr_ssize_t klen, const void *h1_val, const void *h2_val, const void *data), const void *data) apr_pool_t * apr_hash_pool_get group__apr__hash.html g6c170fee4d679928d381cd61c559c105 (const apr_hash_t *thehash) apr_lib General Purpose Library Routines group__apr__lib.html apr_vformatter_buff_t #define HUGE_STRING_LEN group__apr__lib.html g0c9dd98f46b90b5bcd4cbf75e252d0da #define apr_killpg group__apr__lib.html ga3b0264aadbd9f8d805252fb1ca1cd0e (x, y) struct apr_vformatter_buff_t apr_vformatter_buff_t group__apr__lib.html g5e9986deebda40f2d1cf8364fa03c3c5 const char * apr_filepath_name_get group__apr__lib.html g241e929df23aede34eb3f2651cf56bc9 (const char *pathname) int apr_vformatter group__apr__lib.html gd2cd3594aeaafd45931d1034965f48c1 (int(*flush_func)(apr_vformatter_buff_t *b), apr_vformatter_buff_t *c, const char *fmt, va_list ap) apr_status_t apr_password_get group__apr__lib.html g377e0677598745769ec6f80fecf8f859 (const char *prompt, char *pwbuf, apr_size_t *bufsize) apr_ctype ctype functions group__apr__ctype.html #define apr_isalnum group__apr__ctype.html g4fa78e6e7272dae64731768a17a2e003 (c) #define apr_isalpha group__apr__ctype.html g9ecd5b94a7816591afd68040b0624327 (c) #define apr_iscntrl group__apr__ctype.html gcc8b4597be99c895ea042e8088ee94ab (c) #define apr_isdigit group__apr__ctype.html g8c453b1d66015b357c3d3a3ddb7d97d7 (c) #define apr_isgraph group__apr__ctype.html gd4fbfcf508e7771ca85e85e4ac9567c2 (c) #define apr_islower group__apr__ctype.html gff5eeb2f6350095ce86cc2cd4b1d38ee (c) #define apr_isascii group__apr__ctype.html ge7cab1b39d2e0fc14f343ec14e12565a (c) #define apr_isprint group__apr__ctype.html g20da56fc8bbedc9f8a40d20c1cc58bac (c) #define apr_ispunct group__apr__ctype.html g1db14e8d5f9891010c8bad08aa100674 (c) #define apr_isspace group__apr__ctype.html g23f4c7721923a0f0f444fd7fb196047a (c) #define apr_isupper group__apr__ctype.html g362f53cc44aab662aaf04fa87e36035b (c) #define apr_isxdigit group__apr__ctype.html g9d30f3c5d538c21c6d50565cda8654d0 (c) #define apr_tolower group__apr__ctype.html ga591f2a7eb578b1fb3ae9aeaab9eafaa (c) #define apr_toupper group__apr__ctype.html g83d2a3217282784d24897658ad0717b7 (c) apr_mmap MMAP (Memory Map) Routines group__apr__mmap.html apr_mmap_t #define APR_MMAP_READ group__apr__mmap.html gc231fdf15d2d29802e0abbc5d0cf25b8 #define APR_MMAP_WRITE group__apr__mmap.html gc2eb7f697d8bf190e630b85f967c8273 #define APR_MMAP_THRESHOLD group__apr__mmap.html g19d1916e7b64bfb1a969648fe7b0846a #define APR_MMAP_LIMIT group__apr__mmap.html g548e49b3c9e8265ad8ccf70994f4fe25 #define APR_MMAP_CANDIDATE group__apr__mmap.html g4f469432098e986567576fd4c4ce5adc (filelength) struct apr_mmap_t apr_mmap_t group__apr__mmap.html g766b01a3e1e0438d06dc88d76f826f80 apr_status_t apr_mmap_create group__apr__mmap.html gc6b103139be2e859741ec94cc6ad34cc (apr_mmap_t **newmmap, apr_file_t *file, apr_off_t offset, apr_size_t size, apr_int32_t flag, apr_pool_t *cntxt) apr_status_t apr_mmap_dup group__apr__mmap.html g9fcdbf8090e924a4e8f2b301519bb4c8 (apr_mmap_t **new_mmap, apr_mmap_t *old_mmap, apr_pool_t *p) apr_status_t apr_mmap_delete group__apr__mmap.html g4b67a2d22a07707897cc1183a1682040 (apr_mmap_t *mm) apr_status_t apr_mmap_offset group__apr__mmap.html g4c1d31bd9e911744bd5edb97e17210ec (void **addr, apr_mmap_t *mm, apr_off_t offset) apr_network_io Network Routines group__apr__network__io.html apr_sockopt IP_Proto apr_mcast apr_sockaddr_t apr_hdtr_t #define APR_MAX_SECS_TO_LINGER group__apr__network__io.html g8311c84f6946742188a6b9a45e92ea8e #define APRMAXHOSTLEN group__apr__network__io.html g7f5b3882209106bb407b1d518d6ad59d #define APR_ANYADDR group__apr__network__io.html gdce1131c46b897ec63e9e4316a4631dd #define APR_IPV4_ADDR_OK group__apr__network__io.html g58aa30a94127b4a80f27fbf2e03fdfd8 #define APR_IPV6_ADDR_OK group__apr__network__io.html gef1f70f9b969d25832a230f429837207 #define APR_INADDR_NONE group__apr__network__io.html g16eb7ee55ff87a5093f2114ea5351217 #define APR_INET group__apr__network__io.html ga96e8e8dbf92bc77643a4032017b3d67 #define APR_UNSPEC group__apr__network__io.html ga7a33b17a7d0820b09ef489bd3328f85 #define APR_INET6 group__apr__network__io.html gd09d9ea8995f50f35073ae0c77efb44f #define apr_inet_addr group__apr__network__io.html g46a8b06887871cfd60a3e37385775e22 #define APR_SENDFILE_DISCONNECT_SOCKET group__apr__network__io.html gca378d0e24b1588e3fdb143e4ea9090d struct apr_socket_t apr_socket_t group__apr__network__io.html g49262b223e7434746e1f1737659aa2c3 struct apr_hdtr_t apr_hdtr_t group__apr__network__io.html g97887d5358a9c79c241ccafab61d8ff5 struct in_addr apr_in_addr_t group__apr__network__io.html gd30d6c55a354a9a2e0a8747abb0c8176 struct apr_ipsubnet_t apr_ipsubnet_t group__apr__network__io.html gc86ee04eb80f938902095d1d0a67c324 apr_uint16_t apr_port_t group__apr__network__io.html ga670a71960f6eb4fe0d0de2a1e7aba03 struct apr_sockaddr_t apr_sockaddr_t group__apr__network__io.html g373fb6f32d0875c5deb648b779c8a709 apr_shutdown_how_e group__apr__network__io.html ge2130f1fa2d0db58c5c3c9c73d9b4009 APR_SHUTDOWN_READ group__apr__network__io.html gge2130f1fa2d0db58c5c3c9c73d9b400988d0661d35eea5319715d6ca69265b01 APR_SHUTDOWN_WRITE group__apr__network__io.html gge2130f1fa2d0db58c5c3c9c73d9b40095e335b392088e14df65d1bd5e0db7c46 APR_SHUTDOWN_READWRITE group__apr__network__io.html gge2130f1fa2d0db58c5c3c9c73d9b4009dd172f55ff5ee7b930683a3903c99768 apr_interface_e group__apr__network__io.html g1982f44f48fdf00a8bd754bc7b773edc APR_LOCAL group__apr__network__io.html gg1982f44f48fdf00a8bd754bc7b773edc6c23a4bf48b8f93dff08adf827382616 APR_REMOTE group__apr__network__io.html gg1982f44f48fdf00a8bd754bc7b773edceb8be70b031f06a513ac0ebcaa5bac8a apr_status_t apr_socket_create group__apr__network__io.html g46b81e267ef80e64510d4e83880a91bd (apr_socket_t **new_sock, int family, int type, int protocol, apr_pool_t *cont) apr_status_t apr_socket_shutdown group__apr__network__io.html gc5aea857a50c493f840c48b930abc48e (apr_socket_t *thesocket, apr_shutdown_how_e how) apr_status_t apr_socket_close group__apr__network__io.html g88779f243ce19a2563544aee81894e6d (apr_socket_t *thesocket) apr_status_t apr_socket_bind group__apr__network__io.html g512882c9979c2b9cad7cbc2508516d65 (apr_socket_t *sock, apr_sockaddr_t *sa) apr_status_t apr_socket_listen group__apr__network__io.html g154bcee918f6f01fe0373359dd74b0c4 (apr_socket_t *sock, apr_int32_t backlog) apr_status_t apr_socket_accept group__apr__network__io.html g1d62711ca77ccc0f6413a298a47876da (apr_socket_t **new_sock, apr_socket_t *sock, apr_pool_t *connection_pool) apr_status_t apr_socket_connect group__apr__network__io.html g8e58bd8112ed2ce5004487918cd9275e (apr_socket_t *sock, apr_sockaddr_t *sa) apr_status_t apr_sockaddr_info_get group__apr__network__io.html ga2f399ca2b60b35c0abf7630298c6c9f (apr_sockaddr_t **sa, const char *hostname, apr_int32_t family, apr_port_t port, apr_int32_t flags, apr_pool_t *p) apr_status_t apr_getnameinfo group__apr__network__io.html g7a56fd9573b942753738ec30b887c9de (char **hostname, apr_sockaddr_t *sa, apr_int32_t flags) apr_status_t apr_parse_addr_port group__apr__network__io.html g90c31b2f012c6b1e2d842a96c4431de3 (char **addr, char **scope_id, apr_port_t *port, const char *str, apr_pool_t *p) apr_status_t apr_gethostname group__apr__network__io.html g6bd3d656ba935ca428075f477b8a6f8b (char *buf, int len, apr_pool_t *cont) apr_status_t apr_socket_data_get group__apr__network__io.html ge76b48d0224a608b4ddb8bd00582eaa7 (void **data, const char *key, apr_socket_t *sock) apr_status_t apr_socket_data_set group__apr__network__io.html gfec197f3aa9a495801cdf7892ff8dcb5 (apr_socket_t *sock, void *data, const char *key, apr_status_t(*cleanup)(void *)) apr_status_t apr_socket_send group__apr__network__io.html g943268245cf59f6ff8cf1458c9a9ba8d (apr_socket_t *sock, const char *buf, apr_size_t *len) apr_status_t apr_socket_sendv group__apr__network__io.html g99ece70c34a7a332daa3941de3950c64 (apr_socket_t *sock, const struct iovec *vec, apr_int32_t nvec, apr_size_t *len) apr_status_t apr_socket_sendto group__apr__network__io.html g03ae34bc5712dac2b3fdee39e5f87be3 (apr_socket_t *sock, apr_sockaddr_t *where, apr_int32_t flags, const char *buf, apr_size_t *len) apr_status_t apr_socket_recvfrom group__apr__network__io.html g80880312b41e86c9c266ede1a504e2ca (apr_sockaddr_t *from, apr_socket_t *sock, apr_int32_t flags, char *buf, apr_size_t *len) apr_status_t apr_socket_sendfile group__apr__network__io.html g3d93e6212c4c27f2390b0057f8f4a8be (apr_socket_t *sock, apr_file_t *file, apr_hdtr_t *hdtr, apr_off_t *offset, apr_size_t *len, apr_int32_t flags) apr_status_t apr_socket_recv group__apr__network__io.html ga6ee00191f197f64b5a5409f4aff53d1 (apr_socket_t *sock, char *buf, apr_size_t *len) apr_status_t apr_socket_opt_set group__apr__network__io.html g08f5e505fa611005f56c12783269ffa9 (apr_socket_t *sock, apr_int32_t opt, apr_int32_t on) apr_status_t apr_socket_timeout_set group__apr__network__io.html g945bdbe807ec5635d65a6fd9ddb78c29 (apr_socket_t *sock, apr_interval_time_t t) apr_status_t apr_socket_opt_get group__apr__network__io.html g1934c2d5943efc8ce925f376f3c2e17e (apr_socket_t *sock, apr_int32_t opt, apr_int32_t *on) apr_status_t apr_socket_timeout_get group__apr__network__io.html ga32313b54afed590367c8571075d2bc1 (apr_socket_t *sock, apr_interval_time_t *t) apr_status_t apr_socket_atmark group__apr__network__io.html g2389de257444870974b5ded91cf7a10c (apr_socket_t *sock, int *atmark) apr_status_t apr_socket_addr_get group__apr__network__io.html gcad56b59eafc6ad2459bf6493c992515 (apr_sockaddr_t **sa, apr_interface_e which, apr_socket_t *sock) apr_status_t apr_sockaddr_ip_get group__apr__network__io.html gb78fc9b9799c119f4a5517411458a660 (char **addr, apr_sockaddr_t *sockaddr) apr_status_t apr_sockaddr_ip_getbuf group__apr__network__io.html g8c88ae154304e30d47c2696f4370dc6d (char *buf, apr_size_t buflen, apr_sockaddr_t *sockaddr) int apr_sockaddr_equal group__apr__network__io.html g1bf65369305ae352f3280af2acc684f5 (const apr_sockaddr_t *addr1, const apr_sockaddr_t *addr2) apr_status_t apr_socket_type_get group__apr__network__io.html g8d23ee2db9a84af2e6408ef460613514 (apr_socket_t *sock, int *type) apr_status_t apr_getservbyname group__apr__network__io.html gd5b504c0fe4d578e72531e3ca0263654 (apr_sockaddr_t *sockaddr, const char *servname) apr_status_t apr_ipsubnet_create group__apr__network__io.html g34a3c7f1666427f4e381e857b9e9c298 (apr_ipsubnet_t **ipsub, const char *ipstr, const char *mask_or_numbits, apr_pool_t *p) int apr_ipsubnet_test group__apr__network__io.html gb74d21b8898b7c40bf7fd07ad3eb993d (apr_ipsubnet_t *ipsub, apr_sockaddr_t *sa) apr_status_t apr_socket_accept_filter group__apr__network__io.html g270b7c0835283fa2b85a05d295dd7ee5 (apr_socket_t *sock, char *name, char *args) apr_status_t apr_socket_protocol_get group__apr__network__io.html gc402d9426de37b6cede18fa157020bd9 (apr_socket_t *sock, int *protocol) apr_pool_t * apr_socket_pool_get group__apr__network__io.html g4f109ecf176aee8fca8ecfa7f8b07d93 (const apr_socket_t *thesocket) apr_status_t apr_socket_inherit_set group__apr__network__io.html g8ae81c6a7acf90112ebcfb9221ccc649 (apr_socket_t *thesocket) apr_status_t apr_socket_inherit_unset group__apr__network__io.html g5afabb2cee38c141d076b9c52a3f2ce1 (apr_socket_t *thesocket) apr_sockopt Socket option definitions group__apr__sockopt.html #define APR_SO_LINGER group__apr__sockopt.html g6a807e7b78937ab74a4fcd6e99d76669 #define APR_SO_KEEPALIVE group__apr__sockopt.html g0c54c5b98593d9ad2f8cc8836da7eae5 #define APR_SO_DEBUG group__apr__sockopt.html g2b30d26f69059692e97a59ec1d6db73b #define APR_SO_NONBLOCK group__apr__sockopt.html gc3bf19cc28b43da9b9dc396c84914a0f #define APR_SO_REUSEADDR group__apr__sockopt.html g90434074950efa1383d7c5649026a159 #define APR_SO_SNDBUF group__apr__sockopt.html g0e7ef8d3785eec5210ede9fd309db35f #define APR_SO_RCVBUF group__apr__sockopt.html g4ab9494893075c8db6ac26a997f41f0e #define APR_SO_DISCONNECTED group__apr__sockopt.html g5fd72839e254ddec03ffb624c21fa564 #define APR_TCP_NODELAY group__apr__sockopt.html g24db924d850dea792e92be7f8bc45cbd #define APR_TCP_NOPUSH group__apr__sockopt.html g7679a9e3114815eb6c31d26db707975d #define APR_RESET_NODELAY group__apr__sockopt.html gc9ee12e841eefaf86fabaae4a298adea #define APR_INCOMPLETE_READ group__apr__sockopt.html g73b6c80791c5148c2a416e03a8a1ff8a #define APR_INCOMPLETE_WRITE group__apr__sockopt.html g0c1544983845bf747b4a2a3facfb45e9 #define APR_IPV6_V6ONLY group__apr__sockopt.html ge1126f69a19a23c484e3292b016375df #define APR_TCP_DEFER_ACCEPT group__apr__sockopt.html ga81adac9b40a87f1d4c0c2f037e9af78 IP_Proto IP Protocol Definitions for use when creating sockets group___i_p___proto.html #define APR_PROTO_TCP group___i_p___proto.html gd231c935f9f9746ca43b46cdcf80338e #define APR_PROTO_UDP group___i_p___proto.html g05acc4775ee3f3a637f97c904b8ebd7d #define APR_PROTO_SCTP group___i_p___proto.html g89b4fd2811d13e945e937f890b750727 apr_mcast IP Multicast group__apr__mcast.html apr_status_t apr_mcast_join group__apr__mcast.html g731894962f9b20b2ee3ccd057053ef71 (apr_socket_t *sock, apr_sockaddr_t *join, apr_sockaddr_t *iface, apr_sockaddr_t *source) apr_status_t apr_mcast_leave group__apr__mcast.html gdd3d59b5f628786093277b962c863d13 (apr_socket_t *sock, apr_sockaddr_t *addr, apr_sockaddr_t *iface, apr_sockaddr_t *source) apr_status_t apr_mcast_hops group__apr__mcast.html g373041d43cb0fd05b2974b9fef0ae30f (apr_socket_t *sock, apr_byte_t ttl) apr_status_t apr_mcast_loopback group__apr__mcast.html g84bc14970499f79de8b71d77898f68ee (apr_socket_t *sock, apr_byte_t opt) apr_status_t apr_mcast_interface group__apr__mcast.html g9949eb40d8bfb670f9bce997cebcdcae (apr_socket_t *sock, apr_sockaddr_t *iface) apr_poll Poll Routines group__apr__poll.html apr_descriptor apr_pollfd_t #define APR_POLLIN group__apr__poll.html g746222e6b858bc2fc77328d59f78e788 #define APR_POLLPRI group__apr__poll.html g196c38e1914077c4c9a0cf3ce87f1b9c #define APR_POLLOUT group__apr__poll.html g6fb703db1d11e2c5f66d8c6146e56053 #define APR_POLLERR group__apr__poll.html g6f5a72fd9cf3f5dcf174acce0b4b77ee #define APR_POLLHUP group__apr__poll.html gce76603c4fa4b56f8b5977ff1ceb6f3b #define APR_POLLNVAL group__apr__poll.html g132da215e207d4685fb467cc64a73f1b #define APR_POLLSET_THREADSAFE group__apr__poll.html gbdfaccfd394c847f692351dee2e5ef7f #define APR_POLLSET_NOCOPY group__apr__poll.html g0febaf4378d2705bf1256b22fe8dfd24 struct apr_pollfd_t apr_pollfd_t group__apr__poll.html g0c89b184cbe2337e44207f1ad245129b struct apr_pollset_t apr_pollset_t group__apr__poll.html g680da1f10ac5ef75efc503a9d15b8906 struct apr_pollcb_t apr_pollcb_t group__apr__poll.html ge382e39bdf0c5a02fca7da3944bece08 apr_status_t(* apr_pollcb_cb_t group__apr__poll.html gd440412b52e12fcfddfdd5b1618359e5 )(void *baton, apr_pollfd_t *descriptor) apr_datatype_e group__apr__poll.html g0a8549d84c1721788b102a4cc8b4b0f0 APR_NO_DESC group__apr__poll.html gg0a8549d84c1721788b102a4cc8b4b0f0eb85f43492052bf0788d31f6dd85a222 APR_POLL_SOCKET group__apr__poll.html gg0a8549d84c1721788b102a4cc8b4b0f03629c5b3166fde91792f2f913fbd72f0 APR_POLL_FILE group__apr__poll.html gg0a8549d84c1721788b102a4cc8b4b0f08351d461bf66b706232962fd02e84202 APR_POLL_LASTDESC group__apr__poll.html gg0a8549d84c1721788b102a4cc8b4b0f0413b387c7fe1ca7b096d46dfd9942fe5 apr_status_t apr_pollset_create group__apr__poll.html g4ca4056a19daee8fe94ddba100fe2326 (apr_pollset_t **pollset, apr_uint32_t size, apr_pool_t *p, apr_uint32_t flags) apr_status_t apr_pollset_destroy group__apr__poll.html ga06c538d3fea9d860374043aff9450b2 (apr_pollset_t *pollset) apr_status_t apr_pollset_add group__apr__poll.html g4ec50bf9a11c6b60927c51b81412f5b9 (apr_pollset_t *pollset, const apr_pollfd_t *descriptor) apr_status_t apr_pollset_remove group__apr__poll.html g3c99c06e142d6b6b789eeb6086122e3a (apr_pollset_t *pollset, const apr_pollfd_t *descriptor) apr_status_t apr_pollset_poll group__apr__poll.html g6b31d7b3a7b2d356370403dd2b79ecf3 (apr_pollset_t *pollset, apr_interval_time_t timeout, apr_int32_t *num, const apr_pollfd_t **descriptors) apr_status_t apr_poll group__apr__poll.html gd1d8a1ccd14952be6da5f272ca8dda76 (apr_pollfd_t *aprset, apr_int32_t numsock, apr_int32_t *nsds, apr_interval_time_t timeout) apr_status_t apr_pollcb_create group__apr__poll.html ga829380f21f7709a505fdf45650e6fa0 (apr_pollcb_t **pollcb, apr_uint32_t size, apr_pool_t *pool, apr_uint32_t flags) apr_status_t apr_pollcb_add group__apr__poll.html g8fab02dfa803d911dae98656fac7a2c8 (apr_pollcb_t *pollcb, apr_pollfd_t *descriptor) apr_status_t apr_pollcb_remove group__apr__poll.html gd004b778a14d6bcc4e48a10e5af729d8 (apr_pollcb_t *pollcb, apr_pollfd_t *descriptor) apr_status_t apr_pollcb_poll group__apr__poll.html g11765d1b27e2f621a8dcd2c40f0e259c (apr_pollcb_t *pollcb, apr_interval_time_t timeout, apr_pollcb_cb_t func, void *baton) apr_pools Memory Pool Functions group__apr__pools.html PoolCleanup PoolDebug #define APR_POOL_DECLARE_ACCESSOR group__apr__pools.html g89ce1d55c7f0c39ea87c88eabd655394 (type) #define APR_POOL_IMPLEMENT_ACCESSOR group__apr__pools.html g43a8a52f68f8b7d3b7694c254da4a074 (type) #define APR_POOL_DEBUG group__apr__pools.html gd898431056ee6f544e0632f2cf5706c4 #define APR_POOL__FILE_LINE__ group__apr__pools.html gc81cff34d0ff4be52fa924663478eade struct apr_pool_t apr_pool_t group__apr__pools.html gf137f28edcf9a086cd6bc36c20d7cdfb int(* apr_abortfunc_t group__apr__pools.html g0a1fe549a7c45b864c003ddf12115365 )(int retcode) apr_status_t apr_pool_initialize group__apr__pools.html gd64a6a29515621bc13f8a8da50366d67 (void) void apr_pool_terminate group__apr__pools.html g3728aacec227318cef973b8a33f3b430 (void) apr_status_t apr_pool_create_ex group__apr__pools.html gb274bd29e4e4d4944b4618403148074f (apr_pool_t **newpool, apr_pool_t *parent, apr_abortfunc_t abort_fn, apr_allocator_t *allocator) apr_status_t apr_pool_create_core_ex group__apr__pools.html g20e514c83555398acddc30c4dfa0c540 (apr_pool_t **newpool, apr_abortfunc_t abort_fn, apr_allocator_t *allocator) apr_status_t apr_pool_create_unmanaged_ex group__apr__pools.html gae7212db77bb57f86419cd594f73a92f (apr_pool_t **newpool, apr_abortfunc_t abort_fn, apr_allocator_t *allocator) apr_status_t apr_pool_create_ex_debug group__apr__pools.html gcbea97ae5c0c861f6b7c147d46ac1d0c (apr_pool_t **newpool, apr_pool_t *parent, apr_abortfunc_t abort_fn, apr_allocator_t *allocator, const char *file_line) apr_status_t apr_pool_create_core_ex_debug group__apr__pools.html ga1c5bfc44188884bb439670f81448c20 (apr_pool_t **newpool, apr_abortfunc_t abort_fn, apr_allocator_t *allocator, const char *file_line) apr_status_t apr_pool_create_unmanaged_ex_debug group__apr__pools.html ge220e572b14355f1aa7b21c8fb022524 (apr_pool_t **newpool, apr_abortfunc_t abort_fn, apr_allocator_t *allocator, const char *file_line) apr_status_t apr_pool_create group__apr__pools.html g918adf3026c894efeae254a0446aed3b (apr_pool_t **newpool, apr_pool_t *parent) apr_status_t apr_pool_create_core group__apr__pools.html gd3675378924bc9d98e46258c049f1761 (apr_pool_t **newpool) apr_status_t apr_pool_create_unmanaged group__apr__pools.html g72f86d699b4b2ec2aeb82c334ca3446b (apr_pool_t **newpool) apr_allocator_t * apr_pool_allocator_get group__apr__pools.html gf446fcf5da1fcd62d3f802a4c0c10f97 (apr_pool_t *pool) void apr_pool_clear group__apr__pools.html gfa8a998cd660e82b62aecec09e239d0d (apr_pool_t *p) void apr_pool_clear_debug group__apr__pools.html g9521870e42ec4395a0bf8388706a57b9 (apr_pool_t *p, const char *file_line) void apr_pool_destroy group__apr__pools.html g54759954d2cba7cb649ab5680a33f9e3 (apr_pool_t *p) void apr_pool_destroy_debug group__apr__pools.html g7efe64dfcce883d7fad9df813d9259fc (apr_pool_t *p, const char *file_line) void * apr_palloc group__apr__pools.html g85f1e193c31d109affda72f9a92c6915 (apr_pool_t *p, apr_size_t size) void * apr_palloc_debug group__apr__pools.html g0ac211ac89be868b107776b4183a8174 (apr_pool_t *p, apr_size_t size, const char *file_line) void * apr_pcalloc group__apr__pools.html gf61c098ad258069d64cdf8c0a9369f9e (apr_pool_t *p, apr_size_t size) void * apr_pcalloc_debug group__apr__pools.html g7b43035318ffdc57a6eddab07dc57cb2 (apr_pool_t *p, apr_size_t size, const char *file_line) void apr_pool_abort_set group__apr__pools.html ga658b1f10dd13967eaa7c4156d4c2174 (apr_abortfunc_t abortfunc, apr_pool_t *pool) apr_abortfunc_t apr_pool_abort_get group__apr__pools.html gf7610c30ef5f84a8742c0b3e63fdd7b0 (apr_pool_t *pool) apr_pool_t * apr_pool_parent_get group__apr__pools.html g94db31f40609b15b592ff47f989ca9ec (apr_pool_t *pool) int apr_pool_is_ancestor group__apr__pools.html g05d299f778659d1e0806140d8a7fea79 (apr_pool_t *a, apr_pool_t *b) void apr_pool_tag group__apr__pools.html geaa872f7999740a60803e95429890518 (apr_pool_t *pool, const char *tag) apr_status_t apr_pool_userdata_set group__apr__pools.html g78d1aa2d9fa842d83eaffccb0f0c0c5c (const void *data, const char *key, apr_status_t(*cleanup)(void *), apr_pool_t *pool) apr_status_t apr_pool_userdata_setn group__apr__pools.html g435644c493dc5b10d80c4b99b8cd4589 (const void *data, const char *key, apr_status_t(*cleanup)(void *), apr_pool_t *pool) apr_status_t apr_pool_userdata_get group__apr__pools.html gf930f1fad2cf92a2432c0814c8a0b86f (void **data, const char *key, apr_pool_t *pool) PoolCleanup Pool Cleanup Functions group___pool_cleanup.html void apr_pool_cleanup_register group___pool_cleanup.html g6bdb28224dfe08160cbe3ba6b22dcbd7 (apr_pool_t *p, const void *data, apr_status_t(*plain_cleanup)(void *), apr_status_t(*child_cleanup)(void *)) void apr_pool_pre_cleanup_register group___pool_cleanup.html g64114542989d8872c7fd3c62f2a68678 (apr_pool_t *p, const void *data, apr_status_t(*plain_cleanup)(void *)) void apr_pool_cleanup_kill group___pool_cleanup.html gdc59bf32a0302e34fa0a2663f6e48a44 (apr_pool_t *p, const void *data, apr_status_t(*cleanup)(void *)) void apr_pool_child_cleanup_set group___pool_cleanup.html g7197fa6b43d9c5e99de17e0e900989ea (apr_pool_t *p, const void *data, apr_status_t(*plain_cleanup)(void *), apr_status_t(*child_cleanup)(void *)) apr_status_t apr_pool_cleanup_run group___pool_cleanup.html gbf3913823af6015895a726ab738eaac5 (apr_pool_t *p, void *data, apr_status_t(*cleanup)(void *)) apr_status_t apr_pool_cleanup_null group___pool_cleanup.html ga211acee585df08f396a50b0ea489b02 (void *data) void apr_pool_cleanup_for_exec group___pool_cleanup.html g1726cc585bda8997fcb0828f884be55b (void) PoolDebug Pool Debugging functions. group___pool_debug.html void apr_pool_join group___pool_debug.html gecd956092f81c70117507ad8cbca8ea7 (apr_pool_t *p, apr_pool_t *sub) apr_pool_t * apr_pool_find group___pool_debug.html g0bc40d9069709020e3643492dae2ccb0 (const void *mem) apr_size_t apr_pool_num_bytes group___pool_debug.html g22462da23d70dfde389a370b131cd351 (apr_pool_t *p, int recurse) void apr_pool_lock group___pool_debug.html g24f8f0287478fa71f77d0ce4ec035e4a (apr_pool_t *pool, int flag) apr_portabile Portability Routines group__apr__portabile.html apr_os_thread apr_os_dso apr_os_proc_mutex_t apr_os_sock_info_t #define apr_os_global_mutex_t group__apr__portabile.html gdd3a9818afc16248c3c30f22e19838dd #define apr_os_global_mutex_get group__apr__portabile.html ge9be7821e8c021915c930fc83d6d4a73 int apr_os_file_t group__apr__portabile.html g885491b889a4a719549650d3a370fd34 DIR apr_os_dir_t group__apr__portabile.html gcb790646cfc3da1b43a5f7c4bfaa3937 int apr_os_sock_t group__apr__portabile.html g2965cd2e48cb6513bc0ba05aa6083ed7 struct apr_os_proc_mutex_t apr_os_proc_mutex_t group__apr__portabile.html g107413a26e947456cabfcab99b8a7ade pthread_t apr_os_thread_t group__apr__portabile.html g4ccd9519af148ccf9cff850dd58f00b6 pthread_key_t apr_os_threadkey_t group__apr__portabile.html g0a228496d8a1a9b3be744ddb101a3e76 pid_t apr_os_proc_t group__apr__portabile.html g2ce5962de629ee6528081813c6b60e2e struct timeval apr_os_imp_time_t group__apr__portabile.html g6d27e476300cd1d3fda24e1ff0e358e1 struct tm apr_os_exp_time_t group__apr__portabile.html g0fa9349212690591b09a0cbea7b61bdd void * apr_os_dso_handle_t group__apr__portabile.html g542684803ee8ab0abd69077697599ec0 void * apr_os_shm_t group__apr__portabile.html g7af1085d6390fbd08d66482b8c17de51 struct apr_os_sock_info_t apr_os_sock_info_t group__apr__portabile.html gece2b8b41cbb949590896b47daaa9fd2 apr_status_t apr_os_file_get group__apr__portabile.html g1ff9a9a7313954fb6590f280d2c2e992 (apr_os_file_t *thefile, apr_file_t *file) apr_status_t apr_os_dir_get group__apr__portabile.html g99225bfab137069b9d5c5a72f863c577 (apr_os_dir_t **thedir, apr_dir_t *dir) apr_status_t apr_os_sock_get group__apr__portabile.html g07ec79bbb5243596933cd2caf2d428df (apr_os_sock_t *thesock, apr_socket_t *sock) apr_status_t apr_os_proc_mutex_get group__apr__portabile.html g2003a3142f05675696268053b2fddbe1 (apr_os_proc_mutex_t *ospmutex, apr_proc_mutex_t *pmutex) apr_status_t apr_os_exp_time_get group__apr__portabile.html g903df49f8cd2bb7298cb1612ff6394df (apr_os_exp_time_t **ostime, apr_time_exp_t *aprtime) apr_status_t apr_os_imp_time_get group__apr__portabile.html g406db611360a70360bec953cd92d2df7 (apr_os_imp_time_t **ostime, apr_time_t *aprtime) apr_status_t apr_os_shm_get group__apr__portabile.html g80ebb75a574f97363455dbab05e289d6 (apr_os_shm_t *osshm, apr_shm_t *shm) apr_status_t apr_os_file_put group__apr__portabile.html g17a85a792b05506f293e7cf36f8754b7 (apr_file_t **file, apr_os_file_t *thefile, apr_int32_t flags, apr_pool_t *cont) apr_status_t apr_os_pipe_put group__apr__portabile.html g8886290c57248bc4d6c1e4802cc377f0 (apr_file_t **file, apr_os_file_t *thefile, apr_pool_t *cont) apr_status_t apr_os_pipe_put_ex group__apr__portabile.html ga3b025a01b6e9b71e402abba74fe3b93 (apr_file_t **file, apr_os_file_t *thefile, int register_cleanup, apr_pool_t *cont) apr_status_t apr_os_dir_put group__apr__portabile.html g5087057e23ff6b79ae31ef6e7cc7301e (apr_dir_t **dir, apr_os_dir_t *thedir, apr_pool_t *cont) apr_status_t apr_os_sock_put group__apr__portabile.html g729bd6825dfadd814de2aa602462d838 (apr_socket_t **sock, apr_os_sock_t *thesock, apr_pool_t *cont) apr_status_t apr_os_sock_make group__apr__portabile.html g5df9f6b1b9c07bfeca3685118760eefc (apr_socket_t **apr_sock, apr_os_sock_info_t *os_sock_info, apr_pool_t *cont) apr_status_t apr_os_proc_mutex_put group__apr__portabile.html g885f99da0c19912293b5b7bf9df21b02 (apr_proc_mutex_t **pmutex, apr_os_proc_mutex_t *ospmutex, apr_pool_t *cont) apr_status_t apr_os_imp_time_put group__apr__portabile.html g8ba8b7036b84e260c1cf519c3247a7d4 (apr_time_t *aprtime, apr_os_imp_time_t **ostime, apr_pool_t *cont) apr_status_t apr_os_exp_time_put group__apr__portabile.html g59486f31d5b591863ed83e67cc8106b1 (apr_time_exp_t *aprtime, apr_os_exp_time_t **ostime, apr_pool_t *cont) apr_status_t apr_os_shm_put group__apr__portabile.html gac2b48e4ea4ac8f959cd0e78ede6c5f2 (apr_shm_t **shm, apr_os_shm_t *osshm, apr_pool_t *cont) const char * apr_os_default_encoding group__apr__portabile.html g6e21845a4a5f3b7dd107b2beea50c91e (apr_pool_t *pool) const char * apr_os_locale_encoding group__apr__portabile.html gf4c49baaf6cb115c6c92e74e4a40fd46 (apr_pool_t *pool) apr_os_thread Thread portability Routines group__apr__os__thread.html apr_status_t apr_os_thread_get group__apr__os__thread.html gdda5e99fc387491a2a9436bf6144bd49 (apr_os_thread_t **thethd, apr_thread_t *thd) apr_status_t apr_os_threadkey_get group__apr__os__thread.html g2fd6ec9d398c4f2564765866c3d31219 (apr_os_threadkey_t *thekey, apr_threadkey_t *key) apr_status_t apr_os_thread_put group__apr__os__thread.html g7eda58df34fbc11cd251899e575a1b0f (apr_thread_t **thd, apr_os_thread_t *thethd, apr_pool_t *cont) apr_status_t apr_os_threadkey_put group__apr__os__thread.html g386f6e3e205d422f623132bb50147133 (apr_threadkey_t **key, apr_os_threadkey_t *thekey, apr_pool_t *cont) apr_os_thread_t apr_os_thread_current group__apr__os__thread.html g669a17c3a41db20bbc41c06d0e8881b3 (void) int apr_os_thread_equal group__apr__os__thread.html gc55d4bbc219435046872b1236feb9bfa (apr_os_thread_t tid1, apr_os_thread_t tid2) apr_os_dso DSO (Dynamic Loading) Portabiliity Routines group__apr__os__dso.html apr_status_t apr_os_dso_handle_put group__apr__os__dso.html gc8852ec406fad593be38c0dfbb401633 (apr_dso_handle_t **dso, apr_os_dso_handle_t thedso, apr_pool_t *pool) apr_status_t apr_os_dso_handle_get group__apr__os__dso.html g35f9c50b7e546d0c33985442a9c4aa6e (apr_os_dso_handle_t *dso, apr_dso_handle_t *aprdso) apr_proc_mutex Process Locking Routines group__apr__proc__mutex.html struct apr_proc_mutex_t apr_proc_mutex_t group__apr__proc__mutex.html g0fae3a1ab686cd1f252c6062e4c97bd2 apr_lockmech_e group__apr__proc__mutex.html g75dd95a48a1e855a87b509b522746ed4 APR_LOCK_FCNTL group__apr__proc__mutex.html gg75dd95a48a1e855a87b509b522746ed4d9dad69d83d1e112054ad21a7e4e16b3 APR_LOCK_FLOCK group__apr__proc__mutex.html gg75dd95a48a1e855a87b509b522746ed41d06f73a37dae31233299401c9594b41 APR_LOCK_SYSVSEM group__apr__proc__mutex.html gg75dd95a48a1e855a87b509b522746ed4642536695bd4c233761a15d48b1d6487 APR_LOCK_PROC_PTHREAD group__apr__proc__mutex.html gg75dd95a48a1e855a87b509b522746ed4bd5e7cca2c9f6023b541131f3841057a APR_LOCK_POSIXSEM group__apr__proc__mutex.html gg75dd95a48a1e855a87b509b522746ed46d65d9d745e13d8759bd8f1057f27041 APR_LOCK_DEFAULT group__apr__proc__mutex.html gg75dd95a48a1e855a87b509b522746ed4e91fb435c45216bcf84f506db99d0f19 apr_status_t apr_proc_mutex_create group__apr__proc__mutex.html g57a0ad8cc6209dcbc8cf7c4bdf4a2c22 (apr_proc_mutex_t **mutex, const char *fname, apr_lockmech_e mech, apr_pool_t *pool) apr_status_t apr_proc_mutex_child_init group__apr__proc__mutex.html g52c440b92eda07dc9c851a4e98f2ac83 (apr_proc_mutex_t **mutex, const char *fname, apr_pool_t *pool) apr_status_t apr_proc_mutex_lock group__apr__proc__mutex.html g9af7c9eabf4f99a5a33b41dc322af06f (apr_proc_mutex_t *mutex) apr_status_t apr_proc_mutex_trylock group__apr__proc__mutex.html g7c41927ce5014374eb4fc66d410f9513 (apr_proc_mutex_t *mutex) apr_status_t apr_proc_mutex_unlock group__apr__proc__mutex.html g4ecd9a73fbb0e6e6853e5d0769bbb183 (apr_proc_mutex_t *mutex) apr_status_t apr_proc_mutex_destroy group__apr__proc__mutex.html ga692ccd799305e0166fb81f258870830 (apr_proc_mutex_t *mutex) apr_status_t apr_proc_mutex_cleanup group__apr__proc__mutex.html g71ec4d283f58e893322f44116e6f8ea2 (void *mutex) const char * apr_proc_mutex_lockfile group__apr__proc__mutex.html gd4dcc5ec2a5a6ede7be178e13f56377a (apr_proc_mutex_t *mutex) const char * apr_proc_mutex_name group__apr__proc__mutex.html g3e5cf6b6fd0736502efd91312d50881c (apr_proc_mutex_t *mutex) const char * apr_proc_mutex_defname group__apr__proc__mutex.html gf4425adc130f83784c552b6bc1563036 (void) apr_pool_t * apr_proc_mutex_pool_get group__apr__proc__mutex.html g9d7eda31ec4ad2183ddfcbff2f07daf9 (const apr_proc_mutex_t *theproc_mutex) apr_ring Ring Macro Implementations group__apr__ring.html #define APR_RING_ENTRY group__apr__ring.html g095edad4bcb6975014ed9584930f7819 (elem) #define APR_RING_HEAD group__apr__ring.html g2953b8d4034077c4020616282e6c0b67 (head, elem) #define APR_RING_SENTINEL group__apr__ring.html g54210090292ebafcd0a0d75d9ff1563d (hp, elem, link) #define APR_RING_FIRST group__apr__ring.html gcacd9cfca24feb7ff754d4008422efcb (hp) #define APR_RING_LAST group__apr__ring.html g8b927069ba9dc13defaf45a87267b5d3 (hp) #define APR_RING_NEXT group__apr__ring.html ge42e4f7148719aa534bdbbc82be26a06 (ep, link) #define APR_RING_PREV group__apr__ring.html g82d45623d505d59ea5619cf8f63d0ebb (ep, link) #define APR_RING_INIT group__apr__ring.html g245e1a73b162a4a68ebd54c84683729d (hp, elem, link) #define APR_RING_EMPTY group__apr__ring.html g9b64ad6eebea19f896d2aa90172b6b9a (hp, elem, link) #define APR_RING_ELEM_INIT group__apr__ring.html ge5048ecda4b26b012ee93c2c830058cb (ep, link) #define APR_RING_SPLICE_BEFORE group__apr__ring.html g438e7369e650ee07ac98ed0731589750 (lep, ep1, epN, link) #define APR_RING_SPLICE_AFTER group__apr__ring.html g53e6564eba59d7e734a0ce03cb418a42 (lep, ep1, epN, link) #define APR_RING_INSERT_BEFORE group__apr__ring.html g76f9a04f932b3377073fa4e30d745564 (lep, nep, link) #define APR_RING_INSERT_AFTER group__apr__ring.html g40453637d00c853f3a212a30c1f2cb41 (lep, nep, link) #define APR_RING_SPLICE_HEAD group__apr__ring.html g592e71a7cf219fc70f4fc47c60ef4c64 (hp, ep1, epN, elem, link) #define APR_RING_SPLICE_TAIL group__apr__ring.html g51e02e214fb6e218f45ff23cbd1f7abc (hp, ep1, epN, elem, link) #define APR_RING_INSERT_HEAD group__apr__ring.html gd59352546dc9253c0057ad43cf728a63 (hp, nep, elem, link) #define APR_RING_INSERT_TAIL group__apr__ring.html g235311035184125d72ce0689c9949a3e (hp, nep, elem, link) #define APR_RING_CONCAT group__apr__ring.html g34ee7a0d6daa61117006bb74498ff5aa (h1, h2, elem, link) #define APR_RING_PREPEND group__apr__ring.html g4d5aaa9b6f02f96f98f234a0a428474d (h1, h2, elem, link) #define APR_RING_UNSPLICE group__apr__ring.html g1d725b0a9ea7ff88f771e37ec130c13b (ep1, epN, link) #define APR_RING_REMOVE group__apr__ring.html gab4a57544bdb660ec1e306137387d9d7 (ep, link) #define APR_RING_FOREACH group__apr__ring.html g7dc7b26e72f836d27e8e0c87da14fb4a (ep, head, elem, link) #define APR_RING_FOREACH_SAFE group__apr__ring.html g9a1e91eef86d676d1622dc5b9ddd6f89 (ep1, ep2, head, elem, link) #define APR_RING_CHECK_ONE group__apr__ring.html g33c7cfbea7c688c7bd0a3d36609f318b (msg, ptr) #define APR_RING_CHECK group__apr__ring.html g97bb4dcc313145496e6b05855f9c6e2b (hp, elem, link, msg) #define APR_RING_CHECK_CONSISTENCY group__apr__ring.html g6b0f2091527ee9c7a1511cb6f172a0a7 (hp, elem, link) #define APR_RING_CHECK_ELEM group__apr__ring.html g5500df0e96dea1a3258f1e92b28fea0a (ep, elem, link, msg) #define APR_RING_CHECK_ELEM_CONSISTENCY group__apr__ring.html gb7070ae5cf69bf16178a0e0e397c5b38 (ep, elem, link) apr_shm Shared Memory Routines group__apr__shm.html struct apr_shm_t apr_shm_t group__apr__shm.html g79e8c16bdeaf7ade4ef0f935249e7c2f apr_status_t apr_shm_create group__apr__shm.html gc370c4943c22505ce2b0d57c51805480 (apr_shm_t **m, apr_size_t reqsize, const char *filename, apr_pool_t *pool) apr_status_t apr_shm_remove group__apr__shm.html gee8b7d9b952ff6157ddbb00fabb477e0 (const char *filename, apr_pool_t *pool) apr_status_t apr_shm_destroy group__apr__shm.html g7de5b65a9c7d9840bfa289854f8d59d4 (apr_shm_t *m) apr_status_t apr_shm_attach group__apr__shm.html g0e542941c280cb72b78e30d452464759 (apr_shm_t **m, const char *filename, apr_pool_t *pool) apr_status_t apr_shm_detach group__apr__shm.html g900095a06d3fdb4cdd04ca4449a9d42a (apr_shm_t *m) void * apr_shm_baseaddr_get group__apr__shm.html gde739e1f5f4e88c93256a63ebfd47d4d (const apr_shm_t *m) apr_size_t apr_shm_size_get group__apr__shm.html g557ae85d3f225620a77ad80caeaacac7 (const apr_shm_t *m) apr_pool_t * apr_shm_pool_get group__apr__shm.html g072c40df7643e697885935ae65545098 (const apr_shm_t *theshm) apr_signal Signal Handling group__apr__signal.html void apr_sigfunc_t group__apr__signal.html g2afd99d29d57dc1358aeccedb714368a (int) apr_sigfunc_t * apr_signal group__apr__signal.html g77ecb509002eeb784c06014c635a9a5a (int signo, apr_sigfunc_t *func) const char * apr_signal_description_get group__apr__signal.html g685b8a8e5e7a5067e3fe3456c5c1a150 (int signum) void apr_signal_init group__apr__signal.html g76f1701a2f33697425b3fa6fa44a192b (apr_pool_t *pglobal) apr_status_t apr_signal_block group__apr__signal.html g111744ccf1db400150bf7c14c2cfc312 (int signum) apr_status_t apr_signal_unblock group__apr__signal.html g9d8a1d786de4ace76f711806e9e34071 (int signum) apr_strings String routines group__apr__strings.html APR_Strings_Snprintf int apr_strnatcmp group__apr__strings.html gbe7e226c26e1535d787a7836b9c8d0a1 (char const *a, char const *b) int apr_strnatcasecmp group__apr__strings.html g1708d51c4989934fec663b23366430f3 (char const *a, char const *b) char * apr_pstrdup group__apr__strings.html gbc79e99ff19abbd7cfd18308c5f85d47 (apr_pool_t *p, const char *s) char * apr_pstrmemdup group__apr__strings.html g0eae1185559578c0f9792413305eca25 (apr_pool_t *p, const char *s, apr_size_t n) char * apr_pstrndup group__apr__strings.html gd17053ffe6604d908ae7cac33543a6b4 (apr_pool_t *p, const char *s, apr_size_t n) void * apr_pmemdup group__apr__strings.html gc3886f14ecf5aed8fe4493087799685c (apr_pool_t *p, const void *m, apr_size_t n) char * apr_pstrcat group__apr__strings.html g7bd80c95ffb7b3f96bc78e7b5b5b0045 (apr_pool_t *p,...) char * apr_pstrcatv group__apr__strings.html g15d0853af252a894e288c682b8f84309 (apr_pool_t *p, const struct iovec *vec, apr_size_t nvec, apr_size_t *nbytes) char * apr_pvsprintf group__apr__strings.html g05248544edebc71070140d2ce5969c10 (apr_pool_t *p, const char *fmt, va_list ap) char * apr_psprintf group__apr__strings.html g3eca76b8d293c5c3f8021e45eda813d8 (apr_pool_t *p, const char *fmt,...) char * apr_cpystrn group__apr__strings.html g69700a825e82dd646f9f166599040431 (char *dst, const char *src, apr_size_t dst_size) char * apr_collapse_spaces group__apr__strings.html gfd92441a5f4fa3b5f5aa49e1f9884bc7 (char *dest, const char *src) apr_status_t apr_tokenize_to_argv group__apr__strings.html g5213cee7e8ba799df9dc2e57f71cd4dd (const char *arg_str, char ***argv_out, apr_pool_t *token_context) char * apr_strtok group__apr__strings.html g1cf7fcb5843707ece733e27aad85c516 (char *str, const char *sep, char **last) char * apr_itoa group__apr__strings.html ge1c780f2d908a286a141e4b885254a9c (apr_pool_t *p, int n) char * apr_ltoa group__apr__strings.html g578ea3fa78957c6b2e9b8ab4cbfd60b1 (apr_pool_t *p, long n) char * apr_off_t_toa group__apr__strings.html gbce9fb74bbad08d795389bfe859053d3 (apr_pool_t *p, apr_off_t n) apr_status_t apr_strtoff group__apr__strings.html g1583688e0777398174f62e46a522ae8f (apr_off_t *offset, const char *buf, char **end, int base) apr_int64_t apr_strtoi64 group__apr__strings.html g1da34829609e8976f498b235afd6cbe4 (const char *buf, char **end, int base) apr_int64_t apr_atoi64 group__apr__strings.html gf0653577ee64efb5406d932db95cce3d (const char *buf) char * apr_strfsize group__apr__strings.html gf66522fda6d2dfa540fdc58831405980 (apr_off_t size, char *buf) APR_Strings_Snprintf snprintf implementations group___a_p_r___strings___snprintf.html int apr_snprintf group___a_p_r___strings___snprintf.html gf0d0becc04278df5172f0ce5905f8ff9 (char *buf, apr_size_t len, const char *format,...) int apr_vsnprintf group___a_p_r___strings___snprintf.html gf6bf63e240e48b517644ff3e99e49c26 (char *buf, apr_size_t len, const char *format, va_list ap) apr_support Internal APR support functions group__apr__support.html apr_status_t apr_wait_for_io_or_timeout group__apr__support.html g324ffc66a6d42df2325ce999001c1c36 (apr_file_t *f, apr_socket_t *s, int for_read) apr_tables Table and Array Functions group__apr__tables.html apr_array_header_t apr_table_entry_t #define APR_ARRAY_IDX group__apr__tables.html g84066caaa4c7632671af18c229809fc4 (ary, i, type) #define APR_ARRAY_PUSH group__apr__tables.html g1833b0f940ec03d0b95926812152e1ca (ary, type) #define APR_OVERLAP_TABLES_SET group__apr__tables.html g867455bb7008872e03b08c0742f9698c #define APR_OVERLAP_TABLES_MERGE group__apr__tables.html g553eea6eb6fea4bafaf4cbd7acafdf5f struct apr_table_t apr_table_t group__apr__tables.html gd7ea82d6608a4a633fc3775694ab71e4 struct apr_array_header_t apr_array_header_t group__apr__tables.html g63e76617a1cd3828bbaefcbf93928ec2 struct apr_table_entry_t apr_table_entry_t group__apr__tables.html gc7e0151b714e58b75c597dafed75df3f int( apr_table_do_callback_fn_t group__apr__tables.html g0a59d6b321ade650c7cfa31d7fa93dcc )(void *rec, const char *key, const char *value) const apr_array_header_t * apr_table_elts group__apr__tables.html gea3005541cce67481f48ab201b5c0cf3 (const apr_table_t *t) int apr_is_empty_table group__apr__tables.html g198e52683a86ecf8df9642990c220ff7 (const apr_table_t *t) int apr_is_empty_array group__apr__tables.html gcae19f5b2182d5813f4ef3050f82ff29 (const apr_array_header_t *a) apr_array_header_t * apr_array_make group__apr__tables.html g8f4308b5a1636ec06544113a9c283304 (apr_pool_t *p, int nelts, int elt_size) void * apr_array_push group__apr__tables.html gc08267b32905197dd02ffff3314d9603 (apr_array_header_t *arr) void * apr_array_pop group__apr__tables.html gd1ab3e0ca2de25a7ff2fbed393380972 (apr_array_header_t *arr) void apr_array_clear group__apr__tables.html g6a6436840256ed8a47b5d6be4ea2ae03 (apr_array_header_t *arr) void apr_array_cat group__apr__tables.html g532e0f0e4d1e2b7243ebdb7eb1f783c7 (apr_array_header_t *dst, const apr_array_header_t *src) apr_array_header_t * apr_array_copy group__apr__tables.html g327e2d5e29fa49d5a2a31295a6932950 (apr_pool_t *p, const apr_array_header_t *arr) apr_array_header_t * apr_array_copy_hdr group__apr__tables.html g6203e9f731bf43e7373857c38d04397d (apr_pool_t *p, const apr_array_header_t *arr) apr_array_header_t * apr_array_append group__apr__tables.html g893cade58c5fabecb593cb4ffac7e9be (apr_pool_t *p, const apr_array_header_t *first, const apr_array_header_t *second) char * apr_array_pstrcat group__apr__tables.html g6232817e4a32ee5619c99fe55e145c7a (apr_pool_t *p, const apr_array_header_t *arr, const char sep) apr_table_t * apr_table_make group__apr__tables.html g7b0a16a1388c68e66bff32190cf092f6 (apr_pool_t *p, int nelts) apr_table_t * apr_table_copy group__apr__tables.html ge69f2b0b593bcdbf4c678a0f3dfde5f3 (apr_pool_t *p, const apr_table_t *t) apr_table_t * apr_table_clone group__apr__tables.html g7e8bc16b272840302545ed4a6a082a6e (apr_pool_t *p, const apr_table_t *t) void apr_table_clear group__apr__tables.html g03f03de545f9a18e25420f261938ffea (apr_table_t *t) const char * apr_table_get group__apr__tables.html g4db13e3915c6b9a3142b175d4c15d915 (const apr_table_t *t, const char *key) void apr_table_set group__apr__tables.html gf101d92c2f6343cdf4ec062ff416f244 (apr_table_t *t, const char *key, const char *val) void apr_table_setn group__apr__tables.html g1fe7bb25d4027bb79d3c2bb41d8d8b75 (apr_table_t *t, const char *key, const char *val) void apr_table_unset group__apr__tables.html gb0df7a237feb4cd9beed201f4e236127 (apr_table_t *t, const char *key) void apr_table_merge group__apr__tables.html gd5d10eca30b76fb44d999b4dfda8d632 (apr_table_t *t, const char *key, const char *val) void apr_table_mergen group__apr__tables.html g1d50805448114c476cfcd00d5ee3e3a8 (apr_table_t *t, const char *key, const char *val) void apr_table_add group__apr__tables.html gb2ea874754a0fbf139b7316c1f837f12 (apr_table_t *t, const char *key, const char *val) void apr_table_addn group__apr__tables.html gff9fdbd8f499f0dfb07123230e19ea54 (apr_table_t *t, const char *key, const char *val) apr_table_t * apr_table_overlay group__apr__tables.html g783b5c439d46c109bb45e7bc1a6d7ef2 (apr_pool_t *p, const apr_table_t *overlay, const apr_table_t *base) int apr_table_do group__apr__tables.html g5917e542ae910961ee48b0ec2d09a879 (apr_table_do_callback_fn_t *comp, void *rec, const apr_table_t *t,...) int apr_table_vdo group__apr__tables.html g753c5247c9cd7f90c8958b64d9b6aeae (apr_table_do_callback_fn_t *comp, void *rec, const apr_table_t *t, va_list vp) void apr_table_overlap group__apr__tables.html g603ebc9b97703b855f8ad77640165372 (apr_table_t *a, const apr_table_t *b, unsigned flags) void apr_table_compress group__apr__tables.html g7f2a652a0cdaf8c20588823c97a3007f (apr_table_t *t, unsigned flags) apr_thread_cond Condition Variable Routines group__apr__thread__cond.html struct apr_thread_cond_t apr_thread_cond_t group__apr__thread__cond.html ge8f918d38bf1c58bc09670eee456ae5e apr_status_t apr_thread_cond_create group__apr__thread__cond.html gb39e8b722d46d23466e9e346ada85a7f (apr_thread_cond_t **cond, apr_pool_t *pool) apr_status_t apr_thread_cond_wait group__apr__thread__cond.html g789719a5f02bdab8b8abbc8bddd0406b (apr_thread_cond_t *cond, apr_thread_mutex_t *mutex) apr_status_t apr_thread_cond_timedwait group__apr__thread__cond.html g67f2feecb7fa1929cc9b354dafd00306 (apr_thread_cond_t *cond, apr_thread_mutex_t *mutex, apr_interval_time_t timeout) apr_status_t apr_thread_cond_signal group__apr__thread__cond.html gdf7ad6c2731bc6128f969d3efc7ff5eb (apr_thread_cond_t *cond) apr_status_t apr_thread_cond_broadcast group__apr__thread__cond.html gfbbedd2a07629fe3186343035ae83152 (apr_thread_cond_t *cond) apr_status_t apr_thread_cond_destroy group__apr__thread__cond.html g049e646e23c670f3a79fe25401b9c1b0 (apr_thread_cond_t *cond) apr_pool_t * apr_thread_cond_pool_get group__apr__thread__cond.html gfc2d7f2907eb12e5543c971a4c0140ee (const apr_thread_cond_t *thethread_cond) apr_thread_mutex Thread Mutex Routines group__apr__thread__mutex.html #define APR_THREAD_MUTEX_DEFAULT group__apr__thread__mutex.html g579050872f9aff06e773b084264f7d06 #define APR_THREAD_MUTEX_NESTED group__apr__thread__mutex.html gf421e0445dbc3c739130f5f6544c2e78 #define APR_THREAD_MUTEX_UNNESTED group__apr__thread__mutex.html gc31107f3db115edc0c26ea48943c6a16 struct apr_thread_mutex_t apr_thread_mutex_t group__apr__thread__mutex.html g95712060ba3a192036416e1ccef1db75 apr_status_t apr_thread_mutex_create group__apr__thread__mutex.html g927e99580a669f577fbcb6508814ff12 (apr_thread_mutex_t **mutex, unsigned int flags, apr_pool_t *pool) apr_status_t apr_thread_mutex_lock group__apr__thread__mutex.html g1430fd10d8d260c0e3832c959742a977 (apr_thread_mutex_t *mutex) apr_status_t apr_thread_mutex_trylock group__apr__thread__mutex.html g6ac9c8ebee83ff89416f00231a858798 (apr_thread_mutex_t *mutex) apr_status_t apr_thread_mutex_unlock group__apr__thread__mutex.html g74e58f753737283f9b826d8cdcbcb4bf (apr_thread_mutex_t *mutex) apr_status_t apr_thread_mutex_destroy group__apr__thread__mutex.html ge80e6f9c2a2fbaa94f5a6954e02118f4 (apr_thread_mutex_t *mutex) apr_pool_t * apr_thread_mutex_pool_get group__apr__thread__mutex.html gfec9362d92f8bd67660b97cb3c246544 (const apr_thread_mutex_t *thethread_mutex) apr_thread_proc Threads and Process Functions group__apr__thread__proc.html APR_OC apr_proc_t #define APR_PROC_CHECK_EXIT group__apr__thread__proc.html g689b0f3953cde83a4092931bad8b7183 (x) #define APR_PROC_CHECK_SIGNALED group__apr__thread__proc.html ga0a8a0b8785cc9392059c7accd71f5f6 (x) #define APR_PROC_CHECK_CORE_DUMP group__apr__thread__proc.html g2249e96191b5d98d33fb7875bce49410 (x) #define APR_NO_PIPE group__apr__thread__proc.html gb7cfcb8ed24e6c0a76cd41b5b113ae95 #define APR_FULL_BLOCK group__apr__thread__proc.html g646af57314e71f4647243f36dd03e5ea #define APR_FULL_NONBLOCK group__apr__thread__proc.html ge0707f76da785490830fc3491093767c #define APR_PARENT_BLOCK group__apr__thread__proc.html g8653bab028b1c2b98754babc2547f988 #define APR_CHILD_BLOCK group__apr__thread__proc.html gcad9da4db7a22f46715e50fb8ec1c939 #define APR_NO_FILE group__apr__thread__proc.html g597fb6a501c20cc3a597fe6c613f4310 #define APR_NO_FILE group__apr__thread__proc.html g597fb6a501c20cc3a597fe6c613f4310 #define APR_READ_BLOCK group__apr__thread__proc.html gf8295548cb0821ee02249d6de8336bcb #define APR_WRITE_BLOCK group__apr__thread__proc.html g36ff2de9664ad6995bd488b4ac715c9c #define APR_LIMIT_CPU group__apr__thread__proc.html gad8a94c7ac2be58fe035b2fd6efec84f #define APR_LIMIT_MEM group__apr__thread__proc.html g6dbb01bb357b078acff8fd87e9c494e8 #define APR_LIMIT_NPROC group__apr__thread__proc.html g72e9be453a20f4e78bc6d7bd95d7c333 #define APR_LIMIT_NOFILE group__apr__thread__proc.html g18d73099d66988698a9ad2aebdce2c9f #define APR_PROC_DETACH_FOREGROUND group__apr__thread__proc.html gb57b448a464ac299c03d6127781df152 #define APR_PROC_DETACH_DAEMONIZE group__apr__thread__proc.html gb4de7134fcc66c4127ae65b68631f846 void( apr_child_errfn_t group__apr__thread__proc.html g8f8642f468f05b0ac2b1426b723af100 )(apr_pool_t *proc, apr_status_t err, const char *description) struct apr_thread_t apr_thread_t group__apr__thread__proc.html g646c71351e723d84f8cc8c8d1d5937be struct apr_threadattr_t apr_threadattr_t group__apr__thread__proc.html g35de571e9944871c10b38d8feef885ac struct apr_procattr_t apr_procattr_t group__apr__thread__proc.html g0d83919a6a0dd609598a864917f8b339 struct apr_thread_once_t apr_thread_once_t group__apr__thread__proc.html g91841bcf20d0579e8e6acc6d3c220ac1 struct apr_threadkey_t apr_threadkey_t group__apr__thread__proc.html g337c9c1bd2d47740022071a5c41f2edb struct apr_other_child_rec_t apr_other_child_rec_t group__apr__thread__proc.html gfc52ee8b19a7b222278d31ebb3f11a71 void *(APR_THREAD_FUNC * apr_thread_start_t group__apr__thread__proc.html g37193850d158ca870fc8f8759f0725a9 )(apr_thread_t *, void *) apr_cmdtype_e group__apr__thread__proc.html gdcb981d7748c580eb69ac11dbf709060 APR_SHELLCMD group__apr__thread__proc.html ggdcb981d7748c580eb69ac11dbf70906002f5d83f79e2c12bfca5a86d7f14caa6 APR_PROGRAM group__apr__thread__proc.html ggdcb981d7748c580eb69ac11dbf709060c128c1239a524cf21300b8ed6248ac99 APR_PROGRAM_ENV group__apr__thread__proc.html ggdcb981d7748c580eb69ac11dbf7090606a3f9694aced0e449f6bb4b3e437233a APR_PROGRAM_PATH group__apr__thread__proc.html ggdcb981d7748c580eb69ac11dbf709060a424b51bdc16e4d18bb757a32c6a346a APR_SHELLCMD_ENV group__apr__thread__proc.html ggdcb981d7748c580eb69ac11dbf709060fcefc45317b67fad6dc5459772ce9409 apr_wait_how_e group__apr__thread__proc.html g5e52d786644f3b66d6180571e68c7260 APR_WAIT group__apr__thread__proc.html gg5e52d786644f3b66d6180571e68c7260057885ccf4b8b707e0d115c691037de4 APR_NOWAIT group__apr__thread__proc.html gg5e52d786644f3b66d6180571e68c72600163031f6b72b0c4add9108052a672d5 apr_exit_why_e group__apr__thread__proc.html gc097b4fa41e67024711c5983446d0951 APR_PROC_EXIT group__apr__thread__proc.html ggc097b4fa41e67024711c5983446d0951977f140c82333af62aa4bed8c99a3ee2 APR_PROC_SIGNAL group__apr__thread__proc.html ggc097b4fa41e67024711c5983446d09517e3421d18abe458ca27822d19424225b APR_PROC_SIGNAL_CORE group__apr__thread__proc.html ggc097b4fa41e67024711c5983446d09516b667be4983cb59e9bed37ee05a0dcce apr_kill_conditions_e group__apr__thread__proc.html g3eaec78633742e7e0cb9480a21477aff APR_KILL_NEVER group__apr__thread__proc.html gg3eaec78633742e7e0cb9480a21477aff33580ab0809e9498855fbdde8a1714ef APR_KILL_ALWAYS group__apr__thread__proc.html gg3eaec78633742e7e0cb9480a21477afff45d0f72811399b394d1311384e2dfe4 APR_KILL_AFTER_TIMEOUT group__apr__thread__proc.html gg3eaec78633742e7e0cb9480a21477aff16a47aa786b1c1f31ef02353bcae9a1a APR_JUST_WAIT group__apr__thread__proc.html gg3eaec78633742e7e0cb9480a21477aff6ada2605856ac94826edbe824e64e503 APR_KILL_ONLY_ONCE group__apr__thread__proc.html gg3eaec78633742e7e0cb9480a21477aff24d6f47785093be4cea2a922eeaed098 apr_status_t apr_threadattr_create group__apr__thread__proc.html g66c2f55e5dff9ac37bd32e9febd38da5 (apr_threadattr_t **new_attr, apr_pool_t *cont) apr_status_t apr_threadattr_detach_set group__apr__thread__proc.html g85d44b3b021f28116122d5e40e024648 (apr_threadattr_t *attr, apr_int32_t on) apr_status_t apr_threadattr_detach_get group__apr__thread__proc.html ge5b7cdb3de542d1b7b52fe5d9d8cb00b (apr_threadattr_t *attr) apr_status_t apr_threadattr_stacksize_set group__apr__thread__proc.html g7849e0d637338a18cb44f66f11f28ed1 (apr_threadattr_t *attr, apr_size_t stacksize) apr_status_t apr_threadattr_guardsize_set group__apr__thread__proc.html g2e732f2913291180c0c484f57d727140 (apr_threadattr_t *attr, apr_size_t guardsize) apr_status_t apr_thread_create group__apr__thread__proc.html geba6593f43f1de94c2b4495dd72b0e9f (apr_thread_t **new_thread, apr_threadattr_t *attr, apr_thread_start_t func, void *data, apr_pool_t *cont) apr_status_t apr_thread_exit group__apr__thread__proc.html g0e35365e530578bca1b4bea522ac8c85 (apr_thread_t *thd, apr_status_t retval) apr_status_t apr_thread_join group__apr__thread__proc.html g1b950f36fa5bcd5a64887073f46f6d13 (apr_status_t *retval, apr_thread_t *thd) void apr_thread_yield group__apr__thread__proc.html gcd69fb862c069cb6f297f65d64b5c102 (void) apr_status_t apr_thread_once_init group__apr__thread__proc.html g63f3bf667151053e45d5a2029daeda0d (apr_thread_once_t **control, apr_pool_t *p) apr_status_t apr_thread_once group__apr__thread__proc.html g8f3645ee52ff07566c92181b4ce732d8 (apr_thread_once_t *control, void(*func)(void)) apr_status_t apr_thread_detach group__apr__thread__proc.html gdbd186912d5f6f2a19a175e1e02ba10e (apr_thread_t *thd) apr_status_t apr_thread_data_get group__apr__thread__proc.html gd799c8140ed068a12f1dbe134423eae7 (void **data, const char *key, apr_thread_t *thread) apr_status_t apr_thread_data_set group__apr__thread__proc.html ga90d79c9935692db4f27a6573f437221 (void *data, const char *key, apr_status_t(*cleanup)(void *), apr_thread_t *thread) apr_status_t apr_threadkey_private_create group__apr__thread__proc.html gcb9553b2b3165388bfc0a54b1148804a (apr_threadkey_t **key, void(*dest)(void *), apr_pool_t *cont) apr_status_t apr_threadkey_private_get group__apr__thread__proc.html g371c87c122cc3df0b7ad0031f6e11167 (void **new_mem, apr_threadkey_t *key) apr_status_t apr_threadkey_private_set group__apr__thread__proc.html g63501a064ca7f1818aa056b40146aa0b (void *priv, apr_threadkey_t *key) apr_status_t apr_threadkey_private_delete group__apr__thread__proc.html g20b9b79892a6532784fff023a4ebd8cf (apr_threadkey_t *key) apr_status_t apr_threadkey_data_get group__apr__thread__proc.html ge203664972dfc5c555620ae1788f5b48 (void **data, const char *key, apr_threadkey_t *threadkey) apr_status_t apr_threadkey_data_set group__apr__thread__proc.html g1059158f34dded87f21ba82af1211951 (void *data, const char *key, apr_status_t(*cleanup)(void *), apr_threadkey_t *threadkey) apr_status_t apr_procattr_create group__apr__thread__proc.html g90f8ef684e601c110daad9b63da53cf3 (apr_procattr_t **new_attr, apr_pool_t *cont) apr_status_t apr_procattr_io_set group__apr__thread__proc.html g2b1598bc6f5ab0bfcf2e55096d563c98 (apr_procattr_t *attr, apr_int32_t in, apr_int32_t out, apr_int32_t err) apr_status_t apr_procattr_child_in_set group__apr__thread__proc.html g24f40119b1aa07dd45a681a44915cb1b (struct apr_procattr_t *attr, apr_file_t *child_in, apr_file_t *parent_in) apr_status_t apr_procattr_child_out_set group__apr__thread__proc.html gbb97e9a49021ab4452ae3f1a281c977f (struct apr_procattr_t *attr, apr_file_t *child_out, apr_file_t *parent_out) apr_status_t apr_procattr_child_err_set group__apr__thread__proc.html g6fad364c6c820e37c0915435cfb3921f (struct apr_procattr_t *attr, apr_file_t *child_err, apr_file_t *parent_err) apr_status_t apr_procattr_dir_set group__apr__thread__proc.html g97766f50b0ae083a2f8a28e698a59baa (apr_procattr_t *attr, const char *dir) apr_status_t apr_procattr_cmdtype_set group__apr__thread__proc.html g1426acc5bdd96385769e7b42bfa6ebbd (apr_procattr_t *attr, apr_cmdtype_e cmd) apr_status_t apr_procattr_detach_set group__apr__thread__proc.html g3ccca55041f648f00f0605673d4e0fdc (apr_procattr_t *attr, apr_int32_t detach) apr_status_t apr_procattr_limit_set group__apr__thread__proc.html g4de85cfd54d27476dbb943955c1b0a2a (apr_procattr_t *attr, apr_int32_t what, struct rlimit *limit) apr_status_t apr_procattr_child_errfn_set group__apr__thread__proc.html ga39deba0837e0772754ad41589b733cf (apr_procattr_t *attr, apr_child_errfn_t *errfn) apr_status_t apr_procattr_error_check_set group__apr__thread__proc.html g24076f050e9385af09ad8c3931d8dc43 (apr_procattr_t *attr, apr_int32_t chk) apr_status_t apr_procattr_addrspace_set group__apr__thread__proc.html g0f1dd02408995767efcb9c0d9c775620 (apr_procattr_t *attr, apr_int32_t addrspace) apr_status_t apr_procattr_user_set group__apr__thread__proc.html g741ed3dc047b935b091a21528c49bb19 (apr_procattr_t *attr, const char *username, const char *password) apr_status_t apr_procattr_group_set group__apr__thread__proc.html g391f0d3831a5894ea2118762789a395d (apr_procattr_t *attr, const char *groupname) apr_status_t apr_proc_fork group__apr__thread__proc.html g3d0415bf69b0a629a929833e82758b85 (apr_proc_t *proc, apr_pool_t *cont) apr_status_t apr_proc_create group__apr__thread__proc.html gb51dd90b98d365a969f0ec5c7bef4e14 (apr_proc_t *new_proc, const char *progname, const char *const *args, const char *const *env, apr_procattr_t *attr, apr_pool_t *pool) apr_status_t apr_proc_wait group__apr__thread__proc.html g0936f7a7fe7e2d5e08979c9f343a5a1b (apr_proc_t *proc, int *exitcode, apr_exit_why_e *exitwhy, apr_wait_how_e waithow) apr_status_t apr_proc_wait_all_procs group__apr__thread__proc.html g506183074e8413c3ff597539e4768ea4 (apr_proc_t *proc, int *exitcode, apr_exit_why_e *exitwhy, apr_wait_how_e waithow, apr_pool_t *p) apr_status_t apr_proc_detach group__apr__thread__proc.html g56c2b005792752b63d804f2021596406 (int daemonize) void apr_proc_other_child_register group__apr__thread__proc.html gf8d2be452a819161aa4cd6205a17761e (apr_proc_t *proc, void(*maintenance)(int reason, void *, int status), void *data, apr_file_t *write_fd, apr_pool_t *p) void apr_proc_other_child_unregister group__apr__thread__proc.html g10b1a4b224566c03c97f100ac8a2c830 (void *data) apr_status_t apr_proc_other_child_alert group__apr__thread__proc.html g88701979c4e5ac4b94966c73e0159efd (apr_proc_t *proc, int reason, int status) void apr_proc_other_child_refresh group__apr__thread__proc.html g74a905d90a3476a611adeeb304931a6c (apr_other_child_rec_t *ocr, int reason) void apr_proc_other_child_refresh_all group__apr__thread__proc.html gcff5e867a92619d30c4e78f9ad2a58e3 (int reason) apr_status_t apr_proc_kill group__apr__thread__proc.html g4a5ff2fce2c68460281b0cb3ee0365d5 (apr_proc_t *proc, int sig) void apr_pool_note_subprocess group__apr__thread__proc.html gcbe3fd9491fa35149de28cebcae22f87 (apr_pool_t *a, apr_proc_t *proc, apr_kill_conditions_e how) apr_status_t apr_setup_signal_thread group__apr__thread__proc.html g7adc09cd24568666266edce81cfffbed (void) apr_status_t apr_signal_thread group__apr__thread__proc.html g2e53fa76ff725749c7affe6c81faa9e5 (int(*signal_handler)(int signum)) apr_pool_t * apr_thread_pool_get group__apr__thread__proc.html g089b70ae9d6c64d2675a1fd1e9cd0d0d (const apr_thread_t *thethread) APR_OC Other Child Flags group___a_p_r___o_c.html #define APR_OC_REASON_DEATH group___a_p_r___o_c.html g93a18b17cfedca0c7c99c696508c935b #define APR_OC_REASON_UNWRITABLE group___a_p_r___o_c.html ge4cb4983512df7df00c9c0401efba9c9 #define APR_OC_REASON_RESTART group___a_p_r___o_c.html g5ae054b0b4c7c8eea911c146ae9ccdce #define APR_OC_REASON_UNREGISTER group___a_p_r___o_c.html g7fe88662b788e07800290f68575b2f4b #define APR_OC_REASON_LOST group___a_p_r___o_c.html g5d441798b20b93bd1f609264d03690fb #define APR_OC_REASON_RUNNING group___a_p_r___o_c.html ga4a7ca44f23d67e7e19fd59bf41abd6a apr_thread_rwlock Reader/Writer Lock Routines group__apr__thread__rwlock.html struct apr_thread_rwlock_t apr_thread_rwlock_t group__apr__thread__rwlock.html gede9b908e3d9e6a8aed7bd10d0ae0498 apr_status_t apr_thread_rwlock_create group__apr__thread__rwlock.html gdae9c87ad957112406b48947cb1f0e93 (apr_thread_rwlock_t **rwlock, apr_pool_t *pool) apr_status_t apr_thread_rwlock_rdlock group__apr__thread__rwlock.html gd44a106cd9a81eef362d31837ca7018f (apr_thread_rwlock_t *rwlock) apr_status_t apr_thread_rwlock_tryrdlock group__apr__thread__rwlock.html g2bbbc137f5c610e31bf87fd0a60c428e (apr_thread_rwlock_t *rwlock) apr_status_t apr_thread_rwlock_wrlock group__apr__thread__rwlock.html g91543c9f97a6a1265524a5a8f55fef31 (apr_thread_rwlock_t *rwlock) apr_status_t apr_thread_rwlock_trywrlock group__apr__thread__rwlock.html g54c04596f8a1f44630bdda5a25578d63 (apr_thread_rwlock_t *rwlock) apr_status_t apr_thread_rwlock_unlock group__apr__thread__rwlock.html gc7b31112d972abfcac30252e622eb040 (apr_thread_rwlock_t *rwlock) apr_status_t apr_thread_rwlock_destroy group__apr__thread__rwlock.html g136118166f50091fb30011d837a4cdcc (apr_thread_rwlock_t *rwlock) apr_pool_t * apr_thread_rwlock_pool_get group__apr__thread__rwlock.html g3e78c5d8f2e7f4cdad46e912e68edd33 (const apr_thread_rwlock_t *thethread_rwlock) apr_time Time Routines group__apr__time.html apr_time_exp_t #define APR_TIME_C group__apr__time.html gb0d08005432bbda78e03bcd2e235e7d3 (val) #define APR_TIME_T_FMT group__apr__time.html gad2d372b64a68d96b1e4c5f1173eb2c7 #define APR_USEC_PER_SEC group__apr__time.html gb4dd3f3015d25a50f3be3e0e91043abf #define apr_time_sec group__apr__time.html ge0237f70a9a3206b5263c0a474219476 (time) #define apr_time_usec group__apr__time.html ge842c7b471ccf0dc691eb2ff3cc8fc8e (time) #define apr_time_msec group__apr__time.html g05d6c6ea507b74605aa2149a4410076f (time) #define apr_time_as_msec group__apr__time.html g0ab989e84c18e63d36e653aab2821691 (time) #define apr_time_from_sec group__apr__time.html gec56c2c03299a750006bfcc08d64ec32 (sec) #define apr_time_make group__apr__time.html g47e8d04826e56b6ce39ed082d33abc38 (sec, usec) #define APR_RFC822_DATE_LEN group__apr__time.html g33933cf7a3e3c2cf6082c5f6d22ca3e5 #define APR_CTIME_LEN group__apr__time.html g0bd804145d3954f45a6962e9dd10f220 apr_int64_t apr_time_t group__apr__time.html gdb4bde16055748190eae190c55aa02bb apr_int64_t apr_interval_time_t group__apr__time.html gae2129185a395cc393f76fabf4f43e47 apr_int32_t apr_short_interval_time_t group__apr__time.html g3e4663cc0d8b730902ff697c8d3f64be struct apr_time_exp_t apr_time_exp_t group__apr__time.html ge28f2767111a534f263ced95a28489b1 apr_time_t apr_time_now group__apr__time.html gc5cb8713d0681d7b809169a222512287 (void) apr_status_t apr_time_ansi_put group__apr__time.html gc2fec71f18b4a286b2e21f0b74fadce8 (apr_time_t *result, time_t input) apr_status_t apr_time_exp_tz group__apr__time.html gaf3b8ba123feaa0af5a5975b9a8ab8b1 (apr_time_exp_t *result, apr_time_t input, apr_int32_t offs) apr_status_t apr_time_exp_gmt group__apr__time.html gfa8bdd3a4500f66866d8dd54bf69fb71 (apr_time_exp_t *result, apr_time_t input) apr_status_t apr_time_exp_lt group__apr__time.html g34d3b9858de1d3111a4b2ff936ada7f6 (apr_time_exp_t *result, apr_time_t input) apr_status_t apr_time_exp_get group__apr__time.html gc13166685922464d9848bda469e0b3b7 (apr_time_t *result, apr_time_exp_t *input) apr_status_t apr_time_exp_gmt_get group__apr__time.html g0f9fdeae48a45662cb3f198d06c743f0 (apr_time_t *result, apr_time_exp_t *input) void apr_sleep group__apr__time.html g8ffddc239a3d8051d9972cee080fd761 (apr_interval_time_t t) apr_status_t apr_rfc822_date group__apr__time.html gd77b323dd4402ac89c51240f19015df5 (char *date_str, apr_time_t t) apr_status_t apr_ctime group__apr__time.html gd1fcb8f26d508fbb34ea2beca7bc851e (char *date_str, apr_time_t t) apr_status_t apr_strftime group__apr__time.html g3f5e1aa45e735f3bcf8c13fb718c214f (char *s, apr_size_t *retsize, apr_size_t max, const char *format, apr_time_exp_t *tm) void apr_time_clock_hires group__apr__time.html gc47e0b54f17857f0ce2925b2930b5500 (apr_pool_t *p) const char apr_month_snames group__apr__time.html g77382d017a2bef80d44478e0b41557a4 [12][4] const char apr_day_snames group__apr__time.html g37d6f7740ae0f5d8ae9cfc286e8712be [7][4] apr_user User and Group ID Services group__apr__user.html #define apr_uid_compare group__apr__user.html gfc0e18b67f8e3471848893cc4a052809 (left, right) #define apr_gid_compare group__apr__user.html ga87aee2f533bed9dac33613fcf398713 (left, right) uid_t apr_uid_t group__apr__user.html gd1aa508f584bc230acf4f68ba4fc4de7 gid_t apr_gid_t group__apr__user.html g22e9e224e984f837f3e276833e2f3a55 apr_status_t apr_uid_current group__apr__user.html g6583c5814fcf3924a2e391dac126f8a9 (apr_uid_t *userid, apr_gid_t *groupid, apr_pool_t *p) apr_status_t apr_uid_name_get group__apr__user.html gd56be7519e060a3c6698657f51ab6bc8 (char **username, apr_uid_t userid, apr_pool_t *p) apr_status_t apr_uid_get group__apr__user.html g4b82187f32db9350f2e02165bbce965b (apr_uid_t *userid, apr_gid_t *groupid, const char *username, apr_pool_t *p) apr_status_t apr_uid_homepath_get group__apr__user.html g0ad8087cf1c6257a286cf5215da8107e (char **dirname, const char *username, apr_pool_t *p) apr_status_t apr_gid_name_get group__apr__user.html gdda2c777f2e8d61c02be34305720e316 (char **groupname, apr_gid_t groupid, apr_pool_t *p) apr_status_t apr_gid_get group__apr__user.html gc65178a647d34387781dc8d7ade3cefc (apr_gid_t *groupid, const char *groupname, apr_pool_t *p) apr_array_header_t structapr__array__header__t.html apr_pool_t * pool structapr__array__header__t.html 68f353ce65943172fcc9494aa9f6e424 int elt_size structapr__array__header__t.html 36a690ebc781edc9e99ac1bec53c1770 int nelts structapr__array__header__t.html b11b88220885c5a0920a06ac85680055 int nalloc structapr__array__header__t.html 0ceb78a23ebef1bceea5f0cd3e1513b6 char * elts structapr__array__header__t.html f8462fa2a1ddf6406c66cd3dd441a269 apr_descriptor unionapr__descriptor.html apr_file_t * f unionapr__descriptor.html 69d605f2bb33b05ceedb3d95b744ca7e apr_socket_t * s unionapr__descriptor.html 39a15be8be084afadfa173810b346f6c apr_finfo_t structapr__finfo__t.html apr_pool_t * pool structapr__finfo__t.html 71496f86b5489c87e58e9c03fe468fb8 apr_int32_t valid structapr__finfo__t.html ff0cdf06637edec63c4701e582792019 apr_fileperms_t protection structapr__finfo__t.html 7c09d73ad1957e2c0e6c6b77d94e90ab apr_filetype_e filetype structapr__finfo__t.html 274ae0dd60b59182c2e0134bc9a09a20 apr_uid_t user structapr__finfo__t.html b79d14bd50f50662d29ad433166c4bc5 apr_gid_t group structapr__finfo__t.html 15c9c056330308de4dafb3826a9b02bc apr_ino_t inode structapr__finfo__t.html 73aebb666ddc391d53a871802c27eed6 apr_dev_t device structapr__finfo__t.html 38cbfbff641284065481f5907d59c8bf apr_int32_t nlink structapr__finfo__t.html 98598f28735d75aa0c1994efc825e6d9 apr_off_t size structapr__finfo__t.html 3e47a673c5b82a25a783a732dee6f946 apr_off_t csize structapr__finfo__t.html eaa4a4def98ad4f162e05c2e2292321d apr_time_t atime structapr__finfo__t.html d78874e5751e9bba30debb0826eb96a7 apr_time_t mtime structapr__finfo__t.html fc3bec0f6b3b10160428ba5602a41c60 apr_time_t ctime structapr__finfo__t.html ebbdb3dc755d825de3dce901cfba0883 const char * fname structapr__finfo__t.html cfed83ab2943ee7a58a215aa1cfd9e47 const char * name structapr__finfo__t.html 2915f9141ea76ae3672ccf9eb0fa77bb struct apr_file_t * filehand structapr__finfo__t.html 7858e3d9c5f6ed062d9ff7f5c79b6336 apr_getopt_option_t structapr__getopt__option__t.html const char * name structapr__getopt__option__t.html 7e623913c9761495c5d37adf6ff1ee69 int optch structapr__getopt__option__t.html 476e67c4dde620fe5b4f5952238c6e94 int has_arg structapr__getopt__option__t.html ac65dae93f6d35f4848b91f6f9d66278 const char * description structapr__getopt__option__t.html 8fd515c0a9e621f6c0d058772429ab98 apr_getopt_t structapr__getopt__t.html apr_pool_t * cont structapr__getopt__t.html 63a073fb9c11bb2713b3d7f967e95a24 apr_getopt_err_fn_t * errfn structapr__getopt__t.html 6bf3fd7ad92d1f0161cd895e1ad50d06 void * errarg structapr__getopt__t.html 46db55c58789ab7fa99bb49544b0776e int ind structapr__getopt__t.html b04d49d670f095c3244dc9792b70ff07 int opt structapr__getopt__t.html 4f842391b8f8f19e562584fdd29d0654 int reset structapr__getopt__t.html bc4e72bc761666c0b0d9015c3b0de8c3 int argc structapr__getopt__t.html 58aeb33137aabdd5a00efbde05652094 const char ** argv structapr__getopt__t.html 296c27d8db2fe6d4b88c5c7a85c40c02 char const * place structapr__getopt__t.html 87961387d1c71bebfbdf69c7f392d2d5 int interleave structapr__getopt__t.html 771dbef87345c731845dd63723fb34db int skip_start structapr__getopt__t.html 0cd41eedf9ed82bf5d9dcc3491ee67dd int skip_end structapr__getopt__t.html e9e7e6eb1576820c7dc6e589cc3a28b7 apr_hdtr_t structapr__hdtr__t.html struct iovec * headers structapr__hdtr__t.html fc2035a3ef314f9aa6ae3aabe7c0dc72 int numheaders structapr__hdtr__t.html 8915ade68ef06f4d23005ec0f81e9305 struct iovec * trailers structapr__hdtr__t.html 538387cfa0065abc2bfa6ba7393fa3ee int numtrailers structapr__hdtr__t.html 9468659de891a5672b0b84cf442e9c7b apr_memnode_t structapr__memnode__t.html apr_memnode_t * next structapr__memnode__t.html 07dd84ca152164d6bc283dbce99f8f78 apr_memnode_t ** ref structapr__memnode__t.html c68a939c0c3d48498ec0c0fde409c502 apr_uint32_t index structapr__memnode__t.html 6188325f9e1cbcafcb0a65b7e41881a1 apr_uint32_t free_index structapr__memnode__t.html f63769f30f6eb9d72e4b24050bd7a9d9 char * first_avail structapr__memnode__t.html 863e7980225e46678881271c4c803e4c char * endp structapr__memnode__t.html 35c9bf71f1cc680929f857176b547a05 apr_mmap_t structapr__mmap__t.html APR_RING_ENTRY structapr__mmap__t.html eca30aed7539548d31b7c0115020af62 (apr_mmap_t) link apr_pool_t * cntxt structapr__mmap__t.html 42d01080278bbc9bad26728f9a71c492 void * mm structapr__mmap__t.html bcc62d7e7c8187311e6619faf0d44f19 apr_size_t size structapr__mmap__t.html 274aea0906a4b674e1642ac9e81966c7 apr_os_proc_mutex_t structapr__os__proc__mutex__t.html int crossproc structapr__os__proc__mutex__t.html b75e29a654ba0ff0dc491b625308fb79 pthread_mutex_t * pthread_interproc structapr__os__proc__mutex__t.html ed588bef2efc836e5a768f32638e89c1 pthread_mutex_t * intraproc structapr__os__proc__mutex__t.html a2e01fa37b652185a0dd3fae80caa4ad apr_os_sock_info_t structapr__os__sock__info__t.html apr_os_sock_t * os_sock structapr__os__sock__info__t.html 952464d2f91ca4650e8b4848a81745b5 struct sockaddr * local structapr__os__sock__info__t.html faf470560cbc3088479af708878aa086 struct sockaddr * remote structapr__os__sock__info__t.html e71fe14a5eb9141fc4ad0a6d0a91f17e int family structapr__os__sock__info__t.html a29fd0cf57b0b5e3559961f068fa8b7e int type structapr__os__sock__info__t.html 248fb394cd644b31619f44de0936aa04 int protocol structapr__os__sock__info__t.html 176ede3ecf40abf0f82a01bfeb95f1e3 apr_pollfd_t structapr__pollfd__t.html apr_pool_t * p structapr__pollfd__t.html dae68586ed671472590efe8770de38cc apr_datatype_e desc_type structapr__pollfd__t.html cfafd260241a874745f49ba2df246c53 apr_int16_t reqevents structapr__pollfd__t.html bcedac7097a97823a38ece6e47f4ea9f apr_int16_t rtnevents structapr__pollfd__t.html ed5b2109b27984975309922bfa84e3f6 apr_descriptor desc structapr__pollfd__t.html d63baa71bb91f80513d33482e28fb967 void * client_data structapr__pollfd__t.html 01220e7a71963456461baa40b2a05716 apr_proc_t structapr__proc__t.html pid_t pid structapr__proc__t.html 8a8ee4b234156485a72497023e7482e5 apr_file_t * in structapr__proc__t.html 914bda8939f9d17c9e2f238683fb994b apr_file_t * out structapr__proc__t.html cb7d7c5226217946d761f0e90ff70d24 apr_file_t * err structapr__proc__t.html d087f812b5c69ce937db4cf6e8cd5a0b char * invoked structapr__proc__t.html 72ed1c58c3f08ffa7202fa80e870cd54 HANDLE hproc structapr__proc__t.html a1f17cce2b442d92893b9c63053b6771 apr_sockaddr_t structapr__sockaddr__t.html apr_pool_t * pool structapr__sockaddr__t.html 5f2d72a6a181cf2f54ba7c922aa0dfab char * hostname structapr__sockaddr__t.html 8e675775b407f25674aaa938a40de9cd char * servname structapr__sockaddr__t.html 668335161a8347b9a34c600bff80b52f apr_port_t port structapr__sockaddr__t.html 174c19138de9c208f13ed71b5892e505 apr_int32_t family structapr__sockaddr__t.html c17f6e803928cfc29069a6e62dcb3a52 apr_socklen_t salen structapr__sockaddr__t.html ef1d2a482f85eeab7b6bf0a7732a087a int ipaddr_len structapr__sockaddr__t.html 81be21b2eb968b83ca36183213c99867 int addr_str_len structapr__sockaddr__t.html 8f7cda5562e904a1398ed5a4a6f0a9d9 void * ipaddr_ptr structapr__sockaddr__t.html 6e1b71121ada4047acde36c6777b5442 apr_sockaddr_t * next structapr__sockaddr__t.html 774835c6b8e3adf255b752e8b126c434 union apr_sockaddr_t::@0 sa structapr__sockaddr__t.html 3ca40eae640100e0f157e7c21b33a17d struct sockaddr_in sin unionapr__sockaddr__t_1_1@0.html 988334e522b892d1cf4cf4b4ddf80721 struct sockaddr_in6 sin6 unionapr__sockaddr__t_1_1@0.html 733525f1e952afd0404323dd35d9f3e3 struct sockaddr_storage sas unionapr__sockaddr__t_1_1@0.html 2ad1adbfcb5cd10da70e48fd4be701ce apr_table_entry_t structapr__table__entry__t.html char * key structapr__table__entry__t.html bdccb35ea49dd95082fdce65a5a6001f char * val structapr__table__entry__t.html 755371d0aa6a9487b502c34807271e6f apr_uint32_t key_checksum structapr__table__entry__t.html 0c51574420b6cc7bc6c2e35710e0ad3a apr_time_exp_t structapr__time__exp__t.html apr_int32_t tm_usec structapr__time__exp__t.html c5f11e3c1f5a30d357df2108296a8d30 apr_int32_t tm_sec structapr__time__exp__t.html 2c29c99a75b55237917cb05ebae6706c apr_int32_t tm_min structapr__time__exp__t.html 56a380db482ba5b2bef43351faad27fb apr_int32_t tm_hour structapr__time__exp__t.html 2dbab1d10ed6234c8e9e714e13b7911c apr_int32_t tm_mday structapr__time__exp__t.html 6c09a274f011841e9e988c3c9504848a apr_int32_t tm_mon structapr__time__exp__t.html 746f38956dfeb6be3bd17282791e3577 apr_int32_t tm_year structapr__time__exp__t.html 35c32245be49279a6689e34bcd6e534a apr_int32_t tm_wday structapr__time__exp__t.html 57e892bbf3c52df34dcff2c6a9f1adbf apr_int32_t tm_yday structapr__time__exp__t.html a15c7ab0d7e2a974e89cc1470f1583ab apr_int32_t tm_isdst structapr__time__exp__t.html 4d899f1fb9fde3c6b6893941fa81b1c8 apr_int32_t tm_gmtoff structapr__time__exp__t.html 1102ca16ed70b1c707473431eed58d7b apr_version_t structapr__version__t.html int major structapr__version__t.html 0ae64fee85387834ab76d9f9288373ab int minor structapr__version__t.html ab0a1e8362517416389631bceeeedbad int patch structapr__version__t.html 98a629a88e776642d6e527d7535e0791 int is_dev structapr__version__t.html adc878af1010faa53e365e1142c81ced apr_vformatter_buff_t structapr__vformatter__buff__t.html char * curpos structapr__vformatter__buff__t.html ad69bb2ce382b39f55df6cc59039aee9 char * endpos structapr__vformatter__buff__t.html b4884e759f4285c72df93e0d63022675 libapreq2-2.13/docs/apreq2.tag0000644000076400017500000020436411473533324015147 0ustar issacissac index index apreq.h /home/issac/asf/svn/v2_13/include/ apreq_8h apreq_value_t #define APREQ_DECLARE apreq_8h.html 02bf89714a74397155a11b9ccb942b0d (d) #define APREQ_DECLARE_NONSTD apreq_8h.html 8a1e7333187fdbc476473ac72d2ff38b (d) #define APREQ_DECLARE_DATA apreq_8h.html 142563500999527d486a2eac8c3a0973 #define APREQ_DEFAULT_READ_BLOCK_SIZE apreq_8h.html 73bfd1896ab59181f8e052fb8cc147cd #define APREQ_DEFAULT_READ_LIMIT apreq_8h.html 744fa55285c4a3868a9154f473d58ac4 #define APREQ_DEFAULT_BRIGADE_LIMIT apreq_8h.html f54c8645b8266fa7c9b2e261c608744f #define APREQ_DEFAULT_NELTS apreq_8h.html 253093cc2fffe7094828714ade120466 #define APREQ_FLAGS_OFF apreq_8h.html 5bcc4e81747b13b7bfbb946648453f9e (f, name) #define APREQ_FLAGS_ON apreq_8h.html df8584e758a62fe0a79023821c359222 (f, name) #define APREQ_FLAGS_GET apreq_8h.html 07141b4d0c7daa6d5aba5ff33d52a31f (f, name) #define APREQ_FLAGS_SET apreq_8h.html 817a3e293b1ae4210ee68871d6b67e1f (f, name, value) #define APREQ_CHARSET_BIT apreq_8h.html a9a11ce4168273452b3fde6e42221d74 #define APREQ_CHARSET_MASK apreq_8h.html 901fbcbe68a29cfce368b6640bd5bcde #define APREQ_TAINTED_BIT apreq_8h.html cecc7cc6c676725990e0be5f14179ca7 #define APREQ_TAINTED_MASK apreq_8h.html 3b151396d29841edc92a2889a38fda79 #define APREQ_COOKIE_VERSION_BIT apreq_8h.html 16af9730d0124fef7849c36121d63141 #define APREQ_COOKIE_VERSION_MASK apreq_8h.html e70e687e9866ea4a61ed3594c97bf5ce #define APREQ_COOKIE_SECURE_BIT apreq_8h.html 79ac15b3b3d9905367b9758514513dc0 #define APREQ_COOKIE_SECURE_MASK apreq_8h.html cbe05bd23b067595cae2318473f42d9a #define APREQ_COOKIE_HTTPONLY_BIT apreq_8h.html 9fc978fd97cc558ff5f51a14503daab7 #define APREQ_COOKIE_HTTPONLY_MASK apreq_8h.html 71f0dc8a9004339edfa279266fab50e8 #define apreq_attr_to_type apreq_8h.html 6355f965e8eabf742537bfd8da534376 (T, A, P) apreq_charset_t apreq_8h.html 6607dfa756796989c15014870b48c8cd apreq_join_t apreq_8h.html c3784c04255e92629350505d35b0473e APREQ_JOIN_AS_IS apreq_8h.html c3784c04255e92629350505d35b0473e9b74c73cbfdf7aad3effc0627018ff08 APREQ_JOIN_ENCODE apreq_8h.html c3784c04255e92629350505d35b0473e6cc82b38c229380cc7fbb274b7e3cf36 APREQ_JOIN_DECODE apreq_8h.html c3784c04255e92629350505d35b0473e9dd8468f9547f1dee0709f906e98cdc6 APREQ_JOIN_QUOTE apreq_8h.html c3784c04255e92629350505d35b0473eb22a5a8f345963488381335b2f909fb9 apreq_match_t apreq_8h.html 590d7bfd9cd294f652d388c4f37fc8d5 APREQ_MATCH_FULL apreq_8h.html 590d7bfd9cd294f652d388c4f37fc8d56ff614170217cfafb5c32c1cefd6caba APREQ_MATCH_PARTIAL apreq_8h.html 590d7bfd9cd294f652d388c4f37fc8d52fbd9432fdb0e8bec90bd9ec76dcb3f9 apreq_expires_t apreq_8h.html eb51f7cb925e3218c622ff82b8ee2f70 APREQ_EXPIRES_HTTP apreq_8h.html eb51f7cb925e3218c622ff82b8ee2f70d0fecca3f99d74b155630437504119f5 APREQ_EXPIRES_NSCOOKIE apreq_8h.html eb51f7cb925e3218c622ff82b8ee2f70a7e0989ec9839a8494ea328ff30eb5a1 static APR_INLINE void apreq_value_table_add apreq_8h.html 0d27c51db1532fa3f829838ed90f6226 (const apreq_value_t *v, apr_table_t *t) apr_status_t apreq_initialize apreq_8h.html 163e7aaee57baa89b4d7e00a4279b035 (apr_pool_t *pool) apr_status_t apreq_pre_initialize apreq_8h.html ff013107e72c94b917617fd42dce79e8 (apr_pool_t *pool) apr_status_t apreq_post_initialize apreq_8h.html cecad02f3b9982190143d1097bbfa555 (apr_pool_t *pool) apreq_cookie.h /home/issac/asf/svn/v2_13/include/ apreq__cookie_8h apreq.h apreq_cookie_t #define APREQ_COOKIE_MAX_LENGTH apreq__cookie_8h.html 681b8ef60cad05e684876d4dd2be043b static APR_INLINE apreq_cookie_t * apreq_value_to_cookie apreq__cookie_8h.html b69d56f31d7c8f6f6f598a133817b46e (const char *val) static APR_INLINE unsigned apreq_cookie_version apreq__cookie_8h.html 04eaee766e51f143ff2ca4d8a0107004 (const apreq_cookie_t *c) static APR_INLINE void apreq_cookie_version_set apreq__cookie_8h.html eff5b05ca6b935dd61dcc9da1a047546 (apreq_cookie_t *c, unsigned v) static APR_INLINE unsigned apreq_cookie_is_secure apreq__cookie_8h.html 7553c7f54497ce30e1828082c98c813e (const apreq_cookie_t *c) static APR_INLINE void apreq_cookie_secure_on apreq__cookie_8h.html 1df7a1ba35cf4c47fc907f40b95fe5e4 (apreq_cookie_t *c) static APR_INLINE void apreq_cookie_secure_off apreq__cookie_8h.html d9f4813b99b80801ba1dc11d0099ac10 (apreq_cookie_t *c) static APR_INLINE unsigned apreq_cookie_is_httponly apreq__cookie_8h.html 61c3709414b9fe614e32587da8ee8e8a (const apreq_cookie_t *c) static APR_INLINE void apreq_cookie_httponly_on apreq__cookie_8h.html a9a94a9b03dea7b286a9c4041d3c7e4e (apreq_cookie_t *c) static APR_INLINE void apreq_cookie_httponly_off apreq__cookie_8h.html 619cc2d56e20134e91bf1d31ab26bfec (apreq_cookie_t *c) static APR_INLINE unsigned apreq_cookie_is_tainted apreq__cookie_8h.html 08618139ba29e98cd2327de3f0e961fe (const apreq_cookie_t *c) static APR_INLINE void apreq_cookie_tainted_on apreq__cookie_8h.html feec2e0802ae883d4f2fda750b74ca55 (apreq_cookie_t *c) static APR_INLINE void apreq_cookie_tainted_off apreq__cookie_8h.html c3b777e9709fa062ff978afef3867964 (apreq_cookie_t *c) apr_status_t apreq_parse_cookie_header apreq__cookie_8h.html 113be08c01bc82605ec52d80c054cbf6 (apr_pool_t *pool, apr_table_t *jar, const char *header) apreq_cookie_t * apreq_cookie_make apreq__cookie_8h.html 53b5bb02baf7fb318cd643fb55820422 (apr_pool_t *pool, const char *name, const apr_size_t nlen, const char *value, const apr_size_t vlen) char * apreq_cookie_as_string apreq__cookie_8h.html 10c1d6639303c3f85fb5818d88e654d3 (const apreq_cookie_t *c, apr_pool_t *p) int apreq_cookie_serialize apreq__cookie_8h.html fc06d8f5e4ee8530013c4f3c3b12e01f (const apreq_cookie_t *c, char *buf, apr_size_t len) void apreq_cookie_expires apreq__cookie_8h.html 8c6eb3c7c0f003bdc150d2ce99dacc7f (apreq_cookie_t *c, const char *time_str) apreq_error.h /home/issac/asf/svn/v2_13/include/ apreq__error_8h apreq.h #define APR_EBADARG apreq__error_8h.html 7f8849f2cb2d0bfd64f644a6ca0cec2b #define APREQ_ERROR_GENERAL apreq__error_8h.html 14b149a0f859ce1078d36db8e8f45a2a #define APREQ_ERROR_TAINTED apreq__error_8h.html 035ee2cee3527332669bdaf17142f520 #define APREQ_ERROR_INTERRUPT apreq__error_8h.html 91b1099a9cbf13d45a45a14b7d279b75 #define APREQ_ERROR_BADDATA apreq__error_8h.html de2a5d60e2db8fc32d8c43580d74c0c8 #define APREQ_ERROR_BADCHAR apreq__error_8h.html 04b6a01738a1ee7fd1ecc79d256e721f #define APREQ_ERROR_BADSEQ apreq__error_8h.html 73a69e21acc2cf849310a421ab43d2ba #define APREQ_ERROR_BADATTR apreq__error_8h.html 3d696f49030bb7fc65f2804037d3ccb7 #define APREQ_ERROR_BADHEADER apreq__error_8h.html 11e549980ef0fce49ac7179bb9164d57 #define APREQ_ERROR_BADUTF8 apreq__error_8h.html 88ab15be9af4235cb6b1d9c6c512f0e1 #define APREQ_ERROR_NODATA apreq__error_8h.html 6e29823668899ad81365ae68f96f3ae4 #define APREQ_ERROR_NOTOKEN apreq__error_8h.html 59be3610ba54a58fbb3cd6bb655ff972 #define APREQ_ERROR_NOATTR apreq__error_8h.html ffdf9393e5c9277aeae3ea8d2ecf55fa #define APREQ_ERROR_NOHEADER apreq__error_8h.html 3ce3cf5b410b1ccc2e42ae46d4577f20 #define APREQ_ERROR_NOPARSER apreq__error_8h.html 02ebfa80f1a413b46212df5682db5890 #define APREQ_ERROR_MISMATCH apreq__error_8h.html 33080081185585997ef9c5232ec4dd8f #define APREQ_ERROR_OVERLIMIT apreq__error_8h.html bcc1b4c98b1d8c5d128cffd50afb978e #define APREQ_ERROR_UNDERLIMIT apreq__error_8h.html 0370b1ba3534f6ae9f422c6b351c79cd #define APREQ_ERROR_NOTEMPTY apreq__error_8h.html 17d6bb14537a52ef53b56e4b385c76b2 char * apreq_strerror apreq__error_8h.html 48c0198d940b53fbd4d843d7deb65e47 (apr_status_t s, char *buf, apr_size_t bufsize) apreq_module.h /home/issac/asf/svn/v2_13/include/ apreq__module_8h apreq_cookie.h apreq_parser.h apreq_error.h apreq_handle_t apreq_module_t #define APREQ_MODULE apreq__module_8h.html 7d6d0550f527e18c8cfab702e65daf3b (pre, mmn) #define apreq_cookie apreq__module_8h.html 5b5398d109fb933fb0367ef947e7c7b6 (req, name) static APR_INLINE unsigned apreq_module_status_is_error apreq__module_8h.html 08dedd0ec5b291dad6b58644896eb2ed (apr_status_t s) static APR_INLINE apr_status_t apreq_jar apreq__module_8h.html 2652c9a9b0e0f4162051fc3904ac480a (apreq_handle_t *req, const apr_table_t **t) static APR_INLINE apr_status_t apreq_args apreq__module_8h.html de74830e449fa5bb24694ffc3b8374ca (apreq_handle_t *req, const apr_table_t **t) static APR_INLINE apr_status_t apreq_body apreq__module_8h.html e928689622d094025a8efb8c6c17d680 (apreq_handle_t *req, const apr_table_t **t) static APR_INLINE apreq_cookie_t * apreq_jar_get apreq__module_8h.html 63dfa7b7b303d061fe56c7109528d430 (apreq_handle_t *req, const char *name) static APR_INLINE apreq_param_t * apreq_args_get apreq__module_8h.html eadd074ee9dd8095d857820ce15f1701 (apreq_handle_t *req, const char *name) static APR_INLINE apreq_param_t * apreq_body_get apreq__module_8h.html 7c4cb1c2b91f5539b2231d09ebea2239 (apreq_handle_t *req, const char *name) static APR_INLINE apr_status_t apreq_parser_get apreq__module_8h.html 136584883dac2b5c76052bed1c4e61dc (apreq_handle_t *req, const apreq_parser_t **parser) static APR_INLINE apr_status_t apreq_parser_set apreq__module_8h.html 6842f8b5a1d1f9115ba8ff7b1da1e78b (apreq_handle_t *req, apreq_parser_t *parser) static APR_INLINE apr_status_t apreq_hook_add apreq__module_8h.html 0c24fc39ad03c54839a9cb03dc00dc28 (apreq_handle_t *req, apreq_hook_t *hook) static APR_INLINE apr_status_t apreq_brigade_limit_set apreq__module_8h.html b368191aa61cd0386e824c1a6dbd6e49 (apreq_handle_t *req, apr_size_t bytes) static APR_INLINE apr_status_t apreq_brigade_limit_get apreq__module_8h.html d98e3dac181ac837159581812229d8e3 (apreq_handle_t *req, apr_size_t *bytes) static APR_INLINE apr_status_t apreq_read_limit_set apreq__module_8h.html 97d4d8090e7847ace598c7a65b309564 (apreq_handle_t *req, apr_uint64_t bytes) static APR_INLINE apr_status_t apreq_read_limit_get apreq__module_8h.html b5cc462231ee5e4389ceb46eab1e456f (apreq_handle_t *req, apr_uint64_t *bytes) static APR_INLINE apr_status_t apreq_temp_dir_set apreq__module_8h.html fc1b7d33062581140fd16b859b06d24a (apreq_handle_t *req, const char *path) static APR_INLINE apr_status_t apreq_temp_dir_get apreq__module_8h.html 51c4bd2bc98e9355f8595341ba6aff0b (apreq_handle_t *req, const char **path) apreq_handle_t * apreq_handle_cgi apreq__module_8h.html 3f9b9c725672298c86b081aaa258fbdc (apr_pool_t *pool) apreq_handle_t * apreq_handle_custom apreq__module_8h.html beaaad6c03b54ca963f9f14a3031e912 (apr_pool_t *pool, const char *query_string, const char *cookie, apreq_parser_t *parser, apr_uint64_t read_limit, apr_bucket_brigade *in) apreq_param_t * apreq_param apreq__module_8h.html 08c59b5f07fb36080bb4d62e68bfeddf (apreq_handle_t *req, const char *key) apr_table_t * apreq_params apreq__module_8h.html 0dff48fd4e83399a07853abe9d67c251 (apreq_handle_t *req, apr_pool_t *p) apr_table_t * apreq_cookies apreq__module_8h.html 7435376b1f543c604d8326de3157e075 (apreq_handle_t *req, apr_pool_t *p) apreq_param.h /home/issac/asf/svn/v2_13/include/ apreq__param_8h apreq.h apreq_param_t static APR_INLINE unsigned apreq_param_is_tainted apreq__param_8h.html f407c2ab726bc8bc34a1b1924a4f327a (const apreq_param_t *p) static APR_INLINE void apreq_param_tainted_on apreq__param_8h.html 967919466da31283c6d668c58fe5223c (apreq_param_t *p) static APR_INLINE void apreq_param_tainted_off apreq__param_8h.html e76641d443483db5274624f948e1c347 (apreq_param_t *p) static APR_INLINE apreq_charset_t apreq_param_charset_set apreq__param_8h.html be765ec55aebc8409ddd6d3db44ff917 (apreq_param_t *p, apreq_charset_t c) static APR_INLINE apreq_charset_t apreq_param_charset_get apreq__param_8h.html be2a7a47df83a5667fe2834bfc03f15a (apreq_param_t *p) static APR_INLINE apreq_param_t * apreq_value_to_param apreq__param_8h.html 121453693ef7c6af821ae723b6dbe34b (const char *val) apreq_param_t * apreq_param_make apreq__param_8h.html 25c915d3d0fd1694d2c538f108646560 (apr_pool_t *p, const char *name, const apr_size_t nlen, const char *val, const apr_size_t vlen) apr_status_t apreq_param_decode apreq__param_8h.html eea075c59169992492f6f5c40b9b8a70 (apreq_param_t **param, apr_pool_t *pool, const char *word, apr_size_t nlen, apr_size_t vlen) char * apreq_param_encode apreq__param_8h.html 4b8b032f9d2ae8e0a6e95b6dd95b5aa9 (apr_pool_t *pool, const apreq_param_t *param) apr_status_t apreq_parse_query_string apreq__param_8h.html 0aa638519951d85d1faf7bf6ba986226 (apr_pool_t *pool, apr_table_t *t, const char *qs) apr_array_header_t * apreq_params_as_array apreq__param_8h.html 76c7e698fd45f3f3e07db60fcba15e52 (apr_pool_t *p, const apr_table_t *t, const char *key) const char * apreq_params_as_string apreq__param_8h.html 0f1db12120bb2307f5e33186f094b0d6 (apr_pool_t *p, const apr_table_t *t, const char *key, apreq_join_t mode) const apr_table_t * apreq_uploads apreq__param_8h.html e449c4a1890767d1e9a50c78ea42769c (const apr_table_t *body, apr_pool_t *pool) const apreq_param_t * apreq_upload apreq__param_8h.html 1be07e7c4c8a687203ccc0d38ec3aedd (const apr_table_t *body, const char *name) apreq_parser.h /home/issac/asf/svn/v2_13/include/ apreq__parser_8h apreq_param.h apreq_hook_t apreq_parser_t apreq_hook_find_param_ctx_t #define APREQ_PARSER_ARGS apreq__parser_8h.html f39d2adfdd09c2fe0c8c6a3c1ea1437e #define APREQ_HOOK_ARGS apreq__parser_8h.html 61c8b1c319752bde3cc35e98247707bf #define APREQ_DECLARE_PARSER apreq__parser_8h.html 855c07ea7fc9e240c8620d29eea4a019 (f) #define APREQ_DECLARE_HOOK apreq__parser_8h.html baa196498d8cf959e07b4c84d5264f7f (f) struct apreq_hook_t apreq_hook_t apreq__parser_8h.html 2c35885676cec315fc7dea19a6d1d870 struct apreq_parser_t apreq_parser_t apreq__parser_8h.html de5e15a40b9e1ec626ee56c494c7cdbb apr_status_t(* apreq_parser_function_t apreq__parser_8h.html 98c4415da3f11cf5ced76bd3c6540e65 )(APREQ_PARSER_ARGS) apr_status_t(* apreq_hook_function_t apreq__parser_8h.html 6841a882a8a33203233506bd6754585a )(APREQ_HOOK_ARGS) static APR_INLINE apr_status_t apreq_parser_run apreq__parser_8h.html 3c00aa3a31daba2c06110d5fc8edf1fe (struct apreq_parser_t *psr, apr_table_t *t, apr_bucket_brigade *bb) static APR_INLINE apr_status_t apreq_hook_run apreq__parser_8h.html 14d03a414fc4a0663af55fbb1f532bab (struct apreq_hook_t *h, apreq_param_t *param, apr_bucket_brigade *bb) APREQ_DECLARE_PARSER apreq__parser_8h.html 6fd1ffe554941172fce54217c35f9db3 (apreq_parse_headers) APREQ_DECLARE_PARSER apreq__parser_8h.html ec4b20f646ea57ad84d6a3391c548838 (apreq_parse_urlencoded) APREQ_DECLARE_PARSER apreq__parser_8h.html 3bb6d9580fcbaf11cef33072ed3b14cb (apreq_parse_multipart) APREQ_DECLARE_PARSER apreq__parser_8h.html 2833122bb6995f056a96df80a9f5a45f (apreq_parse_generic) APREQ_DECLARE_HOOK apreq__parser_8h.html dda61d873abf1c0ed1857bda405baa49 (apreq_hook_apr_xml_parser) apreq_parser_t * apreq_parser_make apreq__parser_8h.html 562191171c5df0a83360435d0fe1a667 (apr_pool_t *pool, apr_bucket_alloc_t *ba, const char *content_type, apreq_parser_function_t pfn, apr_size_t brigade_limit, const char *temp_dir, apreq_hook_t *hook, void *ctx) apreq_hook_t * apreq_hook_make apreq__parser_8h.html 3cf15457eea6991b36f47f6139ab163c (apr_pool_t *pool, apreq_hook_function_t hook, apreq_hook_t *next, void *ctx) apr_status_t apreq_parser_add_hook apreq__parser_8h.html 97972c08b20917465b745c8b8eec95ed (apreq_parser_t *p, apreq_hook_t *h) apreq_parser_function_t apreq_parser apreq__parser_8h.html 73013ecad087f14075d319a4a983dd82 (const char *enctype) apr_status_t apreq_register_parser apreq__parser_8h.html 595f05be3d241a5b339fd6ef948bfbc8 (const char *enctype, apreq_parser_function_t pfn) APREQ_DECLARE_HOOK apreq__parser_8h.html 162c74d59738663d7cb2109ee0b87c0a (apreq_hook_disable_uploads) APREQ_DECLARE_HOOK apreq__parser_8h.html d169b0ac7b7b1a66d3df3ae66c96a16c (apreq_hook_discard_brigade) APREQ_DECLARE_HOOK apreq__parser_8h.html 5deeed0646b3d61cafe4eb5b6e40b16c (apreq_hook_find_param) apreq_util.h /home/issac/asf/svn/v2_13/include/ apreq__util_8h apreq.h char * apreq_join apreq__util_8h.html 1aa668dc806fce4bd0fef348d1601930 (apr_pool_t *p, const char *sep, const apr_array_header_t *arr, apreq_join_t mode) apr_ssize_t apreq_index apreq__util_8h.html c72c51ffe478faa804eaea5f68276dd8 (const char *hay, apr_size_t hlen, const char *ndl, apr_size_t nlen, const apreq_match_t type) apr_size_t apreq_quote apreq__util_8h.html b4aa9bed839bb576444f464666e0bd85 (char *dest, const char *src, const apr_size_t slen) apr_size_t apreq_quote_once apreq__util_8h.html fef8b7af9d36b0f7ec24e9d0f64a29a7 (char *dest, const char *src, const apr_size_t slen) apr_size_t apreq_encode apreq__util_8h.html 034ccdfdcf751be6c0f8c2a1d30c2ae6 (char *dest, const char *src, const apr_size_t slen) apr_size_t apreq_cp1252_to_utf8 apreq__util_8h.html 801aa204656988ff4aa32cec6dd80e5a (char *dest, const char *src, apr_size_t slen) apreq_charset_t apreq_charset_divine apreq__util_8h.html e11e0b3e2304a2e8c30aaa464ea78037 (const char *src, apr_size_t slen) apr_status_t apreq_decode apreq__util_8h.html 3c1d46b8c0e7991ae1ced0178c2f4738 (char *dest, apr_size_t *dlen, const char *src, apr_size_t slen) apr_status_t apreq_decodev apreq__util_8h.html 13a090a30a4d05353caabab92a67179d (char *dest, apr_size_t *dlen, struct iovec *v, int nelts) static APR_INLINE char * apreq_escape apreq__util_8h.html 785be2ceae273b0a7b2ffda223b2ebae (apr_pool_t *p, const char *src, const apr_size_t slen) static APR_INLINE apr_ssize_t apreq_unescape apreq__util_8h.html 979c0af9322189581bde4644eec5fd41 (char *str) apr_int64_t apreq_atoi64f apreq__util_8h.html 69acb9425572cb8f694d49277160b1f7 (const char *s) apr_int64_t apreq_atoi64t apreq__util_8h.html 4e838a92724aa7d9be0b978dc5c4e50c (const char *s) apr_status_t apreq_brigade_fwrite apreq__util_8h.html 3bbe5ee2d1537c6a9f30d0fed9f5f1e1 (apr_file_t *f, apr_off_t *wlen, apr_bucket_brigade *bb) apr_status_t apreq_file_mktemp apreq__util_8h.html b266a81c528de92654eb37f9890c4a7d (apr_file_t **fp, apr_pool_t *pool, const char *path) static APR_INLINE apr_status_t apreq_brigade_setaside apreq__util_8h.html 91f3144692934b2daf54fb3c9ca7b180 (apr_bucket_brigade *bb, apr_pool_t *p) static APR_INLINE apr_status_t apreq_brigade_copy apreq__util_8h.html b4def9e77622cf22cfa427e7fbf2ac45 (apr_bucket_brigade *d, apr_bucket_brigade *s) static APR_INLINE void apreq_brigade_move apreq__util_8h.html a23561a0d169b50454a815926ccc0ba5 (apr_bucket_brigade *d, apr_bucket_brigade *s, apr_bucket *e) apr_status_t apreq_header_attribute apreq__util_8h.html 8195b6a32954928a6088e7cea077dd75 (const char *hdr, const char *name, const apr_size_t nlen, const char **val, apr_size_t *vlen) apr_status_t apreq_brigade_concat apreq__util_8h.html 4ddf563c9902474bdedbf014e24aafc8 (apr_pool_t *pool, const char *temp_dir, apr_size_t brigade_limit, apr_bucket_brigade *out, apr_bucket_brigade *in) apr_file_t * apreq_brigade_spoolfile apreq__util_8h.html ec0de2141b6b742a1468667eb8f8158e (apr_bucket_brigade *bb) apreq_version.h /home/issac/asf/svn/v2_13/include/ apreq__version_8h apreq.h #define APREQ_MAJOR_VERSION apreq__version_8h.html 7fb04b0c2a9da6237e235b845ee89f9a #define APREQ_MINOR_VERSION apreq__version_8h.html 44bf530fbecff4ee7bcc0158784da0ff #define APREQ_PATCH_VERSION apreq__version_8h.html 365b89d742846921cb3619341e5eb266 #define APREQ_VERSION_STRING apreq__version_8h.html dd82c8ea79b8cc142eeec45772d24fdb #define APREQ_IS_DEV_STRING apreq__version_8h.html c9445f3e18e852cae2a91bd2a63394be void apreq_version apreq__version_8h.html 8d20db97717fa1bad4f31c7f9a29594f (apr_version_t *pvsn) const char * apreq_version_string apreq__version_8h.html 663ea74082d9bbe18a0c15b66b8fddaa (void) apreq_changes CHANGES apreq_changes v2_07 v2_08 v2_09 v2_0_0 v2_01_dev v2_10 v2_02_dev v2_11 v2_03_dev v2_12 v2_04_dev v2_13 v2_05_dev v2_06_dev apreq_status STATUS apreq_status apreq_license LICENSE apreq_license apreq_notice NOTICE apreq_notice apreq_install INSTALL apreq_install apreq_faq FAQ apreq_faq libapreq2 Apache Request Library group__libapreq2.html apreq.h apreq_cookie.h apreq_error.h apreq_module.h apreq_param.h apreq_parser.h apreq_util.h apreq_version.h apreq2_config apreq_module Modules group__apreq__module.html mod_apreq2 apreq_lang Language Bindings group__apreq__lang.html apreq_xs apreq_xs Perl group__apreq__xs.html apreq_xs_request apreq_xs_upload apreq_xs_cookie apreq_xs_apr_request apreq_xs_apr_request_cookie apreq_xs_apr_request_param apreq_xs_apr_request_error apreq_xs_apr_request_cgi apreq_xs_apr_request_apache2 apreq_xs_request Apache2::Request group__apreq__xs__request.html apreq_xs_upload Apache2::Upload group__apreq__xs__upload.html apreq_xs_cookie Apache2::Cookie group__apreq__xs__cookie.html apreq_xs_apr_request APR::Request group__apreq__xs__apr__request.html apreq_xs_apr_request_cookie APR::Request::Cookie group__apreq__xs__apr__request__cookie.html apreq_xs_apr_request_param APR::Request::Param group__apreq__xs__apr__request__param.html apreq_xs_apr_request_error APR::Request::Error group__apreq__xs__apr__request__error.html apreq_xs_apr_request_cgi APR::Request::CGI group__apreq__xs__apr__request__cgi.html apreq_xs_apr_request_apache2 APR::Request::Apache2 group__apreq__xs__apr__request__apache2.html mod_apreq2 Apache 2.X Filter Module group__mod__apreq2.html #define APREQ_FILTER_NAME group__mod__apreq2.html g4b67634b709506e4912f86ebda448504 #define APREQ_APACHE2_MMN group__mod__apreq2.html gab4a3c4b04f2aee2e17b648da09463b0 apreq_handle_t * apreq_handle_apache2 group__mod__apreq2.html g68f508b2e1d9909328d7b1277ce4aa80 (request_rec *r) APR_DECLARE_OPTIONAL_FN group__mod__apreq2.html g082ed084cdc19fb048e87c9c1b4989dc (apreq_handle_t *, apreq_handle_apache2,(request_rec *r)) apreq_cookie_t structapreq__cookie__t.html char * path structapreq__cookie__t.html 75e2ad6da3068f50aca9b989e7e1729c char * domain structapreq__cookie__t.html 8097326f4b8711db7d3f085f283ac5a6 char * port structapreq__cookie__t.html 45dafe4c4b5a751a40bb4123ed691837 char * comment structapreq__cookie__t.html f911681788862a8b0910074ef886bed2 char * commentURL structapreq__cookie__t.html 1fa5dfca7e94ebeb6f31d87d926f7626 apr_time_t max_age structapreq__cookie__t.html e4f9a1bec2731a70e14b43342abe1077 unsigned flags structapreq__cookie__t.html 7d83540c84756a3d4ad3c8503d24de6a const apreq_value_t v structapreq__cookie__t.html 4a4741916f814017f20b64061755cf76 apreq_handle_t structapreq__handle__t.html struct apreq_module_t * module structapreq__handle__t.html 54a98c529077ac4cf01a5520aa38ab1b apr_pool_t * pool structapreq__handle__t.html 698eaa56cf54f2cbbc39704fb9d8ab42 apr_bucket_alloc_t * bucket_alloc structapreq__handle__t.html 89a335e21236423de239a6a6d2526559 apreq_hook_find_param_ctx_t structapreq__hook__find__param__ctx__t.html const char * name structapreq__hook__find__param__ctx__t.html 5df855008b6264147b86ddb233b77369 apreq_param_t * param structapreq__hook__find__param__ctx__t.html 249740de0f632993023658cbb3c23346 apreq_hook_t * prev structapreq__hook__find__param__ctx__t.html fbafb972809a4f3927c3515965ed4954 apreq_hook_t structapreq__hook__t.html apreq_hook_function_t hook structapreq__hook__t.html 9e61fe14dbacf28528f69de468fb1fc0 apreq_hook_t * next structapreq__hook__t.html 09efec3f75c52dbeaeedde059c953f7f apr_pool_t * pool structapreq__hook__t.html 2316f4a8fb1cf0a9d5a46866b3229db1 void * ctx structapreq__hook__t.html 52aeaf774a4d37758b6a3de625913ac5 apreq_module_t structapreq__module__t.html const char * name structapreq__module__t.html e326f2fad3c575876a0da35c5a81123a apr_uint32_t magic_number structapreq__module__t.html dae50d06225fdd6eefeb18ff83045cf7 apr_status_t(* jar structapreq__module__t.html b35544e5939df2189e88996a0cd25633 )(apreq_handle_t *, const apr_table_t **) apr_status_t(* args structapreq__module__t.html 7fd46ce27e0e4067f8d738d065a3a840 )(apreq_handle_t *, const apr_table_t **) apr_status_t(* body structapreq__module__t.html cf3160960a3a9a8e75187c70f8b75e06 )(apreq_handle_t *, const apr_table_t **) apreq_cookie_t *(* jar_get structapreq__module__t.html 825d5dc4ca0f99c17ab65b8907548331 )(apreq_handle_t *, const char *) apreq_param_t *(* args_get structapreq__module__t.html 966dd27491fb442ed2814f8948156d37 )(apreq_handle_t *, const char *) apreq_param_t *(* body_get structapreq__module__t.html 4e3ca2756113ec202d76e50d5bb46622 )(apreq_handle_t *, const char *) apr_status_t(* parser_get structapreq__module__t.html ad82c9225daaed3253ba34e4c55434d7 )(apreq_handle_t *, const apreq_parser_t **) apr_status_t(* parser_set structapreq__module__t.html bfcd9449fc06c038ae2fe4f482919e32 )(apreq_handle_t *, apreq_parser_t *) apr_status_t(* hook_add structapreq__module__t.html 3e0130a4fe0dff7f6f2c103185da0544 )(apreq_handle_t *, apreq_hook_t *) apr_status_t(* brigade_limit_get structapreq__module__t.html 98a4281cc06207a86b7cea9df184c2c8 )(apreq_handle_t *, apr_size_t *) apr_status_t(* brigade_limit_set structapreq__module__t.html 1088b1d83aac0ec4fb4c172eb528efdb )(apreq_handle_t *, apr_size_t) apr_status_t(* read_limit_get structapreq__module__t.html 7e5678baa9a383a5e93ebbf09fc4f023 )(apreq_handle_t *, apr_uint64_t *) apr_status_t(* read_limit_set structapreq__module__t.html 85032dfaf2719f6d7024d7f89ec6996d )(apreq_handle_t *, apr_uint64_t) apr_status_t(* temp_dir_get structapreq__module__t.html 9c15b94e2c94eb56af7df06d008eb420 )(apreq_handle_t *, const char **) apr_status_t(* temp_dir_set structapreq__module__t.html 8744bfd5c82533092e5e029a8cd29e65 )(apreq_handle_t *, const char *) apreq_param_t structapreq__param__t.html apr_table_t * info structapreq__param__t.html bb8ddaeb79c4d96691289520a2a4777f apr_bucket_brigade * upload structapreq__param__t.html 03674c98f355545deeb3fcbe109d8c9a unsigned flags structapreq__param__t.html 802bd45ab5afd0784d730e0dbb01aa71 const apreq_value_t v structapreq__param__t.html f710878750c677daa9cd61868434d67f apreq_parser_t structapreq__parser__t.html apreq_parser_function_t parser structapreq__parser__t.html dc117877c27713515c7617b560efb9a9 const char * content_type structapreq__parser__t.html 3acc7764c18c52c33bb64e3ee3375670 apr_pool_t * pool structapreq__parser__t.html 8148c125f670a73aedb9b228612b5901 apr_bucket_alloc_t * bucket_alloc structapreq__parser__t.html e2d1910ffc51047ff2759843d1babbc8 apr_size_t brigade_limit structapreq__parser__t.html 203d6cfc8d36892a995a535bfe644e32 const char * temp_dir structapreq__parser__t.html 928f16aae17f84fadf06a52a51a6385c apreq_hook_t * hook structapreq__parser__t.html dd1d982c326705e8da838041a645de33 void * ctx structapreq__parser__t.html b73f196059129e0ca7926526ebba0a78 apreq_value_t structapreq__value__t.html char * name structapreq__value__t.html 3015440cd334584cafa3e19078cbf778 apr_size_t nlen structapreq__value__t.html e0d07fb5f672d1bd32c9bb53b4da941a apr_size_t dlen structapreq__value__t.html 7881ecfbe424c4708792fe4b2b1bd4a7 char data structapreq__value__t.html 4aab05328f30a972ae6cd56235a4350e [1] libapreq2-2.13/docs/apu.tag0000644000076400017500000117211311473533323014536 0ustar issacissac apr_anylock.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__anylock_8h apr_anylock_t apr_anylock_t::apr_anylock_u_t #define APR_ANYLOCK_LOCK apr__anylock_8h.html c43b130fb19a434647c34e1d7040fc49 (lck) #define APR_ANYLOCK_TRYLOCK apr__anylock_8h.html fbc6bc9b6cabe0db55e8896fc26053f4 (lck) #define APR_ANYLOCK_UNLOCK apr__anylock_8h.html 367f0d4cc5239e95ee925542d4a0b3fb (lck) apr_base64.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__base64_8h int apr_base64_encode_len group___a_p_r___util___base64.html g5dad9df13a7018e3946a54c8d2c27ae9 (int len) int apr_base64_encode group___a_p_r___util___base64.html g6176124b05512773de40cc5e899058b9 (char *coded_dst, const char *plain_src, int len_plain_src) int apr_base64_encode_binary group___a_p_r___util___base64.html ge7480ce6b723e71cf91583217d96f1d7 (char *coded_dst, const unsigned char *plain_src, int len_plain_src) int apr_base64_decode_len group___a_p_r___util___base64.html gd1ba714a6708376e6a21722a40a698a2 (const char *coded_src) int apr_base64_decode group___a_p_r___util___base64.html g1f717903883e7405c2a0d0ec5814f865 (char *plain_dst, const char *coded_src) int apr_base64_decode_binary group___a_p_r___util___base64.html g3d8f1517351d8b7a18b8396642b98975 (unsigned char *plain_dst, const char *coded_src) apr_buckets.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__buckets_8h apr_bucket_type_t apr_bucket apr_bucket_brigade apr_bucket_refcount apr_bucket_heap apr_bucket_pool apr_bucket_mmap apr_bucket_file apr_bucket_structs #define APR_BUCKET_BUFF_SIZE group___a_p_r___util___bucket___brigades.html g82bf404af30875135c65e2c13ad035e5 #define APR_BRIGADE_CHECK_CONSISTENCY group___a_p_r___util___bucket___brigades.html ge1dfe8bf117d10e7dc5b8e0c08f0ebb2 (b) #define APR_BUCKET_CHECK_CONSISTENCY group___a_p_r___util___bucket___brigades.html gedaeb3fbe71aac408377471b8a54dc08 (e) #define APR_BRIGADE_SENTINEL group___a_p_r___util___bucket___brigades.html g858da66dccab1e063415678bb115788a (b) #define APR_BRIGADE_EMPTY group___a_p_r___util___bucket___brigades.html g836f61da6cce15074eff257ce4b6fc0f (b) #define APR_BRIGADE_FIRST group___a_p_r___util___bucket___brigades.html gb5826a11eb6ba90786a94282f806c230 (b) #define APR_BRIGADE_LAST group___a_p_r___util___bucket___brigades.html g40e0ef2a904aa519ca9d63288dee0b4d (b) #define APR_BRIGADE_INSERT_HEAD group___a_p_r___util___bucket___brigades.html g6dc39d8757e18941a6fb069b0c18fbd3 (b, e) #define APR_BRIGADE_INSERT_TAIL group___a_p_r___util___bucket___brigades.html g5447595f8374296c5ffe208db39b2f5d (b, e) #define APR_BRIGADE_CONCAT group___a_p_r___util___bucket___brigades.html g7cecbc89be912ce9ab24c889eb8f955b (a, b) #define APR_BRIGADE_PREPEND group___a_p_r___util___bucket___brigades.html g52ba212f76507a79ccae213875150ad1 (a, b) #define APR_BUCKET_INSERT_BEFORE group___a_p_r___util___bucket___brigades.html ge012adeccda754eabc42b7855bec081e (a, b) #define APR_BUCKET_INSERT_AFTER group___a_p_r___util___bucket___brigades.html g1f8114b7316d1fef1deb95abc8f02341 (a, b) #define APR_BUCKET_NEXT group___a_p_r___util___bucket___brigades.html g7171f690b203d548a5b6ae0b079068d8 (e) #define APR_BUCKET_PREV group___a_p_r___util___bucket___brigades.html gf229fecd4174efd4d6a9774e3048ae28 (e) #define APR_BUCKET_REMOVE group___a_p_r___util___bucket___brigades.html g2c46a1b717a87b68bd98b425e0c64977 (e) #define APR_BUCKET_INIT group___a_p_r___util___bucket___brigades.html g00c2e104125f124c3a52627863432de9 (e) #define APR_BUCKET_IS_METADATA group___a_p_r___util___bucket___brigades.html g506cb29cc1ec1abeb487e01b122bd4d9 (e) #define APR_BUCKET_IS_FLUSH group___a_p_r___util___bucket___brigades.html g24105da0bb755a775c4b2a519d7c25f9 (e) #define APR_BUCKET_IS_EOS group___a_p_r___util___bucket___brigades.html g89b225e1c08473766eec719b985ca0d6 (e) #define APR_BUCKET_IS_FILE group___a_p_r___util___bucket___brigades.html g1d54037bb6953c73d5c61f64c311d470 (e) #define APR_BUCKET_IS_PIPE group___a_p_r___util___bucket___brigades.html g03e62d86c994d1d1cc9be3eb8b8f6ac6 (e) #define APR_BUCKET_IS_SOCKET group___a_p_r___util___bucket___brigades.html g4b8315b498e4eb67efde1c83bdbe8b87 (e) #define APR_BUCKET_IS_HEAP group___a_p_r___util___bucket___brigades.html g3dee4fbd5b4e16e5188a6cfec40b6961 (e) #define APR_BUCKET_IS_TRANSIENT group___a_p_r___util___bucket___brigades.html g1a7e7ac5fddbab4ce189e8d3007446ff (e) #define APR_BUCKET_IS_IMMORTAL group___a_p_r___util___bucket___brigades.html g53f1188c168acf7dcfabfa1ac5a08655 (e) #define APR_BUCKET_IS_MMAP group___a_p_r___util___bucket___brigades.html g1693d49aeb0287e3b171c922c6b633d2 (e) #define APR_BUCKET_IS_POOL group___a_p_r___util___bucket___brigades.html gdbe80a9016da6a06ab414ba61d6625d0 (e) #define APR_BUCKET_ALLOC_SIZE group___a_p_r___util___bucket___brigades.html ge3ccf4c383c9e7fea28354cc8e029626 #define apr_bucket_destroy group___a_p_r___util___bucket___brigades.html gfc0dae1e90a798284ed777a0c9e90ec6 (e) #define apr_bucket_delete group___a_p_r___util___bucket___brigades.html g8925c02a7f95e8c1c3986294d4678797 (e) #define apr_bucket_read group___a_p_r___util___bucket___brigades.html ge44ae938c6c60e148430fdb098dcf28f (e, str, len, block) #define apr_bucket_setaside group___a_p_r___util___bucket___brigades.html gb00941ffd472982693eb415a964de7af (e, p) #define apr_bucket_split group___a_p_r___util___bucket___brigades.html g5bb8827a8dd1baa6ac32682e13e9d8c2 (e, point) #define apr_bucket_copy group___a_p_r___util___bucket___brigades.html gb33cc08b7f064d06397f312e427279c3 (e, c) struct apr_bucket_brigade apr_bucket_brigade group___a_p_r___util___bucket___brigades.html g9f50254e85c7aad79ca289a0ba069025 struct apr_bucket apr_bucket group___a_p_r___util___bucket___brigades.html ga17a456120961b1c5af0525f4900a457 struct apr_bucket_alloc_t apr_bucket_alloc_t group___a_p_r___util___bucket___brigades.html g9a30babfeb6e290db124d8f9b69e49e4 struct apr_bucket_type_t apr_bucket_type_t group___a_p_r___util___bucket___brigades.html g4a152aaf7d851c81af73b7e84dc1a8a2 apr_status_t(* apr_brigade_flush group___a_p_r___util___bucket___brigades.html gcdf6dc9d4c81c64834e5e509281f7f16 )(apr_bucket_brigade *bb, void *ctx) struct apr_bucket_refcount apr_bucket_refcount group___a_p_r___util___bucket___brigades.html g785fd3402961b30315975b0c87c87706 struct apr_bucket_heap apr_bucket_heap group___a_p_r___util___bucket___brigades.html gede6e77d621d0f3f7d2685d489d01283 struct apr_bucket_pool apr_bucket_pool group___a_p_r___util___bucket___brigades.html g211e00d871029de148116cd24b070aed struct apr_bucket_mmap apr_bucket_mmap group___a_p_r___util___bucket___brigades.html g27ede7c3a29627c7d184dc7cfbc4f767 struct apr_bucket_file apr_bucket_file group___a_p_r___util___bucket___brigades.html g1a786f7edac4d7a2c212f0fe74457b3d union apr_bucket_structs apr_bucket_structs group___a_p_r___util___bucket___brigades.html g3c0929c971f94de4521fb0fea6fd3209 apr_read_type_e group___a_p_r___util___bucket___brigades.html g756973fb6392bd1026c3d96b4519776d APR_BLOCK_READ group___a_p_r___util___bucket___brigades.html gg756973fb6392bd1026c3d96b4519776d2d983f5b7fd996434e0dded171c261d8 APR_NONBLOCK_READ group___a_p_r___util___bucket___brigades.html gg756973fb6392bd1026c3d96b4519776d42b97663ca71fbbf2e2af7c8192e5dd8 apr_bucket_brigade * apr_brigade_create group___a_p_r___util___bucket___brigades.html geb422371006699c68f0ed3b496cc12a2 (apr_pool_t *p, apr_bucket_alloc_t *list) apr_status_t apr_brigade_destroy group___a_p_r___util___bucket___brigades.html g2eba1e262dece0d4444ddd25ae7b250a (apr_bucket_brigade *b) apr_status_t apr_brigade_cleanup group___a_p_r___util___bucket___brigades.html gfd6a8378a15e8b42a57a5923a03de7f2 (void *data) apr_bucket_brigade * apr_brigade_split_ex group___a_p_r___util___bucket___brigades.html g36448fa89ab3239fd46591fbc82624e6 (apr_bucket_brigade *b, apr_bucket *e, apr_bucket_brigade *a) apr_bucket_brigade * apr_brigade_split group___a_p_r___util___bucket___brigades.html gcaf2929f951920a464e170baf2b4c345 (apr_bucket_brigade *b, apr_bucket *e) apr_status_t apr_brigade_partition group___a_p_r___util___bucket___brigades.html g4b2f22ba70ac9f65788014c61d4f5b76 (apr_bucket_brigade *b, apr_off_t point, apr_bucket **after_point) apr_status_t apr_brigade_length group___a_p_r___util___bucket___brigades.html g65075839e31fd85e2c80717f4e9e0461 (apr_bucket_brigade *bb, int read_all, apr_off_t *length) apr_status_t apr_brigade_flatten group___a_p_r___util___bucket___brigades.html g301aeb943e68ef4b99c1ae6a18dcf78e (apr_bucket_brigade *bb, char *c, apr_size_t *len) apr_status_t apr_brigade_pflatten group___a_p_r___util___bucket___brigades.html ga5da970af09d1a87e020db054f2d1c94 (apr_bucket_brigade *bb, char **c, apr_size_t *len, apr_pool_t *pool) apr_status_t apr_brigade_split_line group___a_p_r___util___bucket___brigades.html g257dece60dbdc910bc09e1fc0d7db622 (apr_bucket_brigade *bbOut, apr_bucket_brigade *bbIn, apr_read_type_e block, apr_off_t maxbytes) apr_status_t apr_brigade_to_iovec group___a_p_r___util___bucket___brigades.html g904bdc4a9a9c800d2d2b20b4ddefa6f7 (apr_bucket_brigade *b, struct iovec *vec, int *nvec) apr_status_t apr_brigade_vputstrs group___a_p_r___util___bucket___brigades.html g382871c1aec5cf9fbbcf19d67cff6b43 (apr_bucket_brigade *b, apr_brigade_flush flush, void *ctx, va_list va) apr_status_t apr_brigade_write group___a_p_r___util___bucket___brigades.html g7242dae50995fc1a9174476ca3053d99 (apr_bucket_brigade *b, apr_brigade_flush flush, void *ctx, const char *str, apr_size_t nbyte) apr_status_t apr_brigade_writev group___a_p_r___util___bucket___brigades.html gfc116a4359b717cd3a78a19ddf169486 (apr_bucket_brigade *b, apr_brigade_flush flush, void *ctx, const struct iovec *vec, apr_size_t nvec) apr_status_t apr_brigade_puts group___a_p_r___util___bucket___brigades.html g2d1fed26db94e3006223098737a06f5a (apr_bucket_brigade *bb, apr_brigade_flush flush, void *ctx, const char *str) apr_status_t apr_brigade_putc group___a_p_r___util___bucket___brigades.html g362999cb255297fd0fd433f03236302d (apr_bucket_brigade *b, apr_brigade_flush flush, void *ctx, const char c) apr_status_t apr_brigade_putstrs group___a_p_r___util___bucket___brigades.html g1f27949d92196cbf150b7d6256cbf4b7 (apr_bucket_brigade *b, apr_brigade_flush flush, void *ctx,...) apr_status_t apr_brigade_printf group___a_p_r___util___bucket___brigades.html g4120ba3834c545db3b9229d858e33b47 (apr_bucket_brigade *b, apr_brigade_flush flush, void *ctx, const char *fmt,...) apr_status_t apr_brigade_vprintf group___a_p_r___util___bucket___brigades.html g9e1af8c10946264e1bb37a3f56e4bfd8 (apr_bucket_brigade *b, apr_brigade_flush flush, void *ctx, const char *fmt, va_list va) apr_bucket * apr_brigade_insert_file group___a_p_r___util___bucket___brigades.html g7c4981f7050333a181e440e753c20555 (apr_bucket_brigade *bb, apr_file_t *f, apr_off_t start, apr_off_t len, apr_pool_t *p) apr_bucket_alloc_t * apr_bucket_alloc_create group___a_p_r___util___bucket___brigades.html g2d96fa729a17a86dc5221958e8c13c96 (apr_pool_t *p) apr_bucket_alloc_t * apr_bucket_alloc_create_ex group___a_p_r___util___bucket___brigades.html g252642139099350d0b987889d5c0868c (apr_allocator_t *allocator) void apr_bucket_alloc_destroy group___a_p_r___util___bucket___brigades.html gf5eb58cc232851c8449ba1d98d049a0a (apr_bucket_alloc_t *list) void * apr_bucket_alloc group___a_p_r___util___bucket___brigades.html ge47c2235a3740432f4a0990fccfe4102 (apr_size_t size, apr_bucket_alloc_t *list) void apr_bucket_free group___a_p_r___util___bucket___brigades.html g951beb3a8249648214e130ab06275a3a (void *block) apr_status_t apr_bucket_setaside_noop group___a_p_r___util___bucket___brigades.html ge6135b83d9f7bd7e1b60dbc761a3ca5f (apr_bucket *data, apr_pool_t *pool) apr_status_t apr_bucket_setaside_notimpl group___a_p_r___util___bucket___brigades.html gde52b057161f657a6b298d9c6a78b339 (apr_bucket *data, apr_pool_t *pool) apr_status_t apr_bucket_split_notimpl group___a_p_r___util___bucket___brigades.html g305766ff39440711da93e72f5b348a3a (apr_bucket *data, apr_size_t point) apr_status_t apr_bucket_copy_notimpl group___a_p_r___util___bucket___brigades.html g5fc17c10cee2abf02557669f6f507e89 (apr_bucket *e, apr_bucket **c) void apr_bucket_destroy_noop group___a_p_r___util___bucket___brigades.html g09221bea9541ca2340a4e8b5e1e7ac56 (void *data) apr_status_t apr_bucket_simple_split group___a_p_r___util___bucket___brigades.html g9fd8c7d9e42dd04b8f153072655e875c (apr_bucket *b, apr_size_t point) apr_status_t apr_bucket_simple_copy group___a_p_r___util___bucket___brigades.html g123c95e832734f92e6f1139b6a68cfa6 (apr_bucket *a, apr_bucket **b) apr_bucket * apr_bucket_shared_make group___a_p_r___util___bucket___brigades.html g562251ac5776e88f7384158b85e74be8 (apr_bucket *b, void *data, apr_off_t start, apr_size_t length) int apr_bucket_shared_destroy group___a_p_r___util___bucket___brigades.html g43c7dc7e3eb961a91bbc0b69a47e503c (void *data) apr_status_t apr_bucket_shared_split group___a_p_r___util___bucket___brigades.html g871e54ba20487a2085a73a673ffa4110 (apr_bucket *b, apr_size_t point) apr_status_t apr_bucket_shared_copy group___a_p_r___util___bucket___brigades.html g2e9a035d340ef6b4279b178eff614670 (apr_bucket *a, apr_bucket **b) apr_bucket * apr_bucket_eos_create group___a_p_r___util___bucket___brigades.html gac308b459ecdab87e94b12adad1b8760 (apr_bucket_alloc_t *list) apr_bucket * apr_bucket_eos_make group___a_p_r___util___bucket___brigades.html g06312ba339cb0ec1844b698d30e754c4 (apr_bucket *b) apr_bucket * apr_bucket_flush_create group___a_p_r___util___bucket___brigades.html g48347f3f7d5738cdb61fe35c25c09666 (apr_bucket_alloc_t *list) apr_bucket * apr_bucket_flush_make group___a_p_r___util___bucket___brigades.html gee543b95249a320a27ae9bb03e2c4f23 (apr_bucket *b) apr_bucket * apr_bucket_immortal_create group___a_p_r___util___bucket___brigades.html gd81543da24b144c0e100dd1e6d843adb (const char *buf, apr_size_t nbyte, apr_bucket_alloc_t *list) apr_bucket * apr_bucket_immortal_make group___a_p_r___util___bucket___brigades.html g33b21eb55cad9d28b5cdd40ad4181774 (apr_bucket *b, const char *buf, apr_size_t nbyte) apr_bucket * apr_bucket_transient_create group___a_p_r___util___bucket___brigades.html g554f2d87c718f30a9259d52c6f81a405 (const char *buf, apr_size_t nbyte, apr_bucket_alloc_t *list) apr_bucket * apr_bucket_transient_make group___a_p_r___util___bucket___brigades.html g7e1f9a0ae64781ff4430d08c25e6e831 (apr_bucket *b, const char *buf, apr_size_t nbyte) apr_bucket * apr_bucket_heap_create group___a_p_r___util___bucket___brigades.html gdde6843cfe311a60d290adc1d6635cac (const char *buf, apr_size_t nbyte, void(*free_func)(void *data), apr_bucket_alloc_t *list) apr_bucket * apr_bucket_heap_make group___a_p_r___util___bucket___brigades.html g71de285204d21507420068f05b12a541 (apr_bucket *b, const char *buf, apr_size_t nbyte, void(*free_func)(void *data)) apr_bucket * apr_bucket_pool_create group___a_p_r___util___bucket___brigades.html g154ea763ee9de4ccb8692b9e3b60ebb2 (const char *buf, apr_size_t length, apr_pool_t *pool, apr_bucket_alloc_t *list) apr_bucket * apr_bucket_pool_make group___a_p_r___util___bucket___brigades.html g01197c5b2cda6382354628cecdeae145 (apr_bucket *b, const char *buf, apr_size_t length, apr_pool_t *pool) apr_bucket * apr_bucket_mmap_create group___a_p_r___util___bucket___brigades.html gee338c7d218ce1fbbf8c1aefedcc0632 (apr_mmap_t *mm, apr_off_t start, apr_size_t length, apr_bucket_alloc_t *list) apr_bucket * apr_bucket_mmap_make group___a_p_r___util___bucket___brigades.html gb561ac92d1811e5a2589783536e64a1a (apr_bucket *b, apr_mmap_t *mm, apr_off_t start, apr_size_t length) apr_bucket * apr_bucket_socket_create group___a_p_r___util___bucket___brigades.html gcd9f08b40eb2204cd93b42e58338aeb2 (apr_socket_t *thissock, apr_bucket_alloc_t *list) apr_bucket * apr_bucket_socket_make group___a_p_r___util___bucket___brigades.html g2fffd4c4701ad55c6df27cdee0c47200 (apr_bucket *b, apr_socket_t *thissock) apr_bucket * apr_bucket_pipe_create group___a_p_r___util___bucket___brigades.html gb9ea07d5f9246e06c1bb3e76ee90cd71 (apr_file_t *thispipe, apr_bucket_alloc_t *list) apr_bucket * apr_bucket_pipe_make group___a_p_r___util___bucket___brigades.html ge7b4daa1318226beda4bf0eead2f5582 (apr_bucket *b, apr_file_t *thispipe) apr_bucket * apr_bucket_file_create group___a_p_r___util___bucket___brigades.html g421f96e8e9387a9c27fe010ebdee0202 (apr_file_t *fd, apr_off_t offset, apr_size_t len, apr_pool_t *p, apr_bucket_alloc_t *list) apr_bucket * apr_bucket_file_make group___a_p_r___util___bucket___brigades.html gcb716dea400092f2f8c84a3f0f6d3a10 (apr_bucket *b, apr_file_t *fd, apr_off_t offset, apr_size_t len, apr_pool_t *p) apr_status_t apr_bucket_file_enable_mmap group___a_p_r___util___bucket___brigades.html gb18ee46f66634c35ad79b6a74559cbb8 (apr_bucket *b, int enabled) const apr_bucket_type_t apr_bucket_type_flush group___a_p_r___util___bucket___brigades.html gecc113cfcc7751dfe70876437a2f51d7 const apr_bucket_type_t apr_bucket_type_eos group___a_p_r___util___bucket___brigades.html g829cac9b4843b85a902ddd64dffbfb12 const apr_bucket_type_t apr_bucket_type_file group___a_p_r___util___bucket___brigades.html g5f17aa7e616179411a06475ec09626e9 const apr_bucket_type_t apr_bucket_type_heap group___a_p_r___util___bucket___brigades.html g2c5608267ed7b860657f5a1c89c2f40d const apr_bucket_type_t apr_bucket_type_mmap group___a_p_r___util___bucket___brigades.html g63f9ce8e4d6e796921aad14a218a3b23 const apr_bucket_type_t apr_bucket_type_pool group___a_p_r___util___bucket___brigades.html g87bace819fdbf07c12497a8289b3567b const apr_bucket_type_t apr_bucket_type_pipe group___a_p_r___util___bucket___brigades.html g334a875abb2908364a40abbfa80c401f const apr_bucket_type_t apr_bucket_type_immortal group___a_p_r___util___bucket___brigades.html g391ac24b2c85969e8efa504588b364bb const apr_bucket_type_t apr_bucket_type_transient group___a_p_r___util___bucket___brigades.html g1692ced61c1966e67adc05ec2a69ce9b const apr_bucket_type_t apr_bucket_type_socket group___a_p_r___util___bucket___brigades.html ga6d9978cc10895bdf0a4686728822a84 apr_date.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__date_8h #define APR_DATE_BAD group___a_p_r___util___date.html g8be88b25f4b477ad13c4067c959411b0 int apr_date_checkmask group___a_p_r___util___date.html g6576e5747a46f262c54dc4286f65d6f8 (const char *data, const char *mask) apr_time_t apr_date_parse_http group___a_p_r___util___date.html gbd0ad0c1000ed8c95fb6a9660aed27c6 (const char *date) apr_time_t apr_date_parse_rfc group___a_p_r___util___date.html ga6d4a18ff9f40c37c0f145d063c50e96 (const char *date) apr_dbd.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__dbd_8h #define APR_DBD_TRANSACTION_COMMIT group___a_p_r___util___d_b_d.html gff6a26fb3b384bcb3a9172676c53590b #define APR_DBD_TRANSACTION_ROLLBACK group___a_p_r___util___d_b_d.html g60a8749e5172b692fd2e356b48ec922b #define APR_DBD_TRANSACTION_IGNORE_ERRORS group___a_p_r___util___d_b_d.html gd9dc523b0a3b8dea5b8c9b7b0c281ea2 struct apr_dbd_driver_t apr_dbd_driver_t group___a_p_r___util___d_b_d.html g91778287e3cd1b8ef8719ca2655e2bc8 struct apr_dbd_t apr_dbd_t group___a_p_r___util___d_b_d.html g4738c1f6340184987fc7806522c18ab8 struct apr_dbd_transaction_t apr_dbd_transaction_t group___a_p_r___util___d_b_d.html g92eb10d7ec8fdb3a39a7d6fdfffdf8fb struct apr_dbd_results_t apr_dbd_results_t group___a_p_r___util___d_b_d.html g6765891011818912e1b52fef773bfce6 struct apr_dbd_row_t apr_dbd_row_t group___a_p_r___util___d_b_d.html gb890e4650a1de51725142318825103a5 struct apr_dbd_prepared_t apr_dbd_prepared_t group___a_p_r___util___d_b_d.html g1f1179c6480a2ee0134f2cb881106cd3 apr_dbd_type_e group___a_p_r___util___d_b_d.html g19608fa5d518a5121bee23daacc5c230 APR_DBD_TYPE_TINY group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c230cc06ee0f3fe0c65b9f8265053550e4ee APR_DBD_TYPE_UTINY group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c230aa4f167bb26fa3e85b0d61f34713ebb6 APR_DBD_TYPE_SHORT group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c2300c38d32785a3cbddbe4ba692fdde16ee APR_DBD_TYPE_USHORT group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c230f3518efb67af10100b92578b5c867c9c APR_DBD_TYPE_INT group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c2304df919bac6f5b56257bfe63ed3e5968c APR_DBD_TYPE_UINT group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c23058b37a24a35ddf144a9132a9837ed3d3 APR_DBD_TYPE_LONG group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c230dd86aa288504ec2d4194f35a3a8ac55a APR_DBD_TYPE_ULONG group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c2304186d52d5ce586cd7559a0ae8737cbb7 APR_DBD_TYPE_LONGLONG group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c2308821461a3390bd0a001e714d2180ae6c APR_DBD_TYPE_ULONGLONG group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c230d1907d3eb1235acfa8a971fce43711c5 APR_DBD_TYPE_FLOAT group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c23014281587071981d4e6b25de5bb747e98 APR_DBD_TYPE_DOUBLE group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c23077c20702c7c6566369d3ccc894eb9cd8 APR_DBD_TYPE_STRING group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c2304c9490a29ed882c46fa738e7cddede44 APR_DBD_TYPE_TEXT group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c230e06c20e9edcd46964dc26bb43134e0e6 APR_DBD_TYPE_TIME group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c2302ad65674a89072f4582e97d0a4fad61d APR_DBD_TYPE_DATE group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c230b96a2b4b2b1fb94a7faeb01065d77835 APR_DBD_TYPE_DATETIME group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c23077bb0dd82ed396f7056ba2aaddd44265 APR_DBD_TYPE_TIMESTAMP group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c2305cffb0a0cc618ab3d0c187ca176d61ad APR_DBD_TYPE_ZTIMESTAMP group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c230e4db1948f1f1ef7651c5f01c12d1e56a APR_DBD_TYPE_BLOB group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c23060d6a6ab49b20a306443b7a9ad8c6f11 APR_DBD_TYPE_CLOB group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c230df428a7365d71eacdf24a89c202c1f72 APR_DBD_TYPE_NULL group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c230706a286af4fe4a9b97ee68adc11cd6cc apr_status_t apr_dbd_init group___a_p_r___util___d_b_d.html g7969f50d38bda792cbef72136300a574 (apr_pool_t *pool) apr_status_t apr_dbd_get_driver group___a_p_r___util___d_b_d.html g8ba85faccf7e8eea525812f8f2dfed25 (apr_pool_t *pool, const char *name, const apr_dbd_driver_t **driver) apr_status_t apr_dbd_open_ex group___a_p_r___util___d_b_d.html gbddb1fdcb2f8a5f5b83127485c78e8ae (const apr_dbd_driver_t *driver, apr_pool_t *pool, const char *params, apr_dbd_t **handle, const char **error) apr_status_t apr_dbd_open group___a_p_r___util___d_b_d.html geff12b01f78ac78721acc4a0a318e673 (const apr_dbd_driver_t *driver, apr_pool_t *pool, const char *params, apr_dbd_t **handle) apr_status_t apr_dbd_close group___a_p_r___util___d_b_d.html g4abe00d844cd547cc69880fe14af4aca (const apr_dbd_driver_t *driver, apr_dbd_t *handle) const char * apr_dbd_name group___a_p_r___util___d_b_d.html g7a14e0073a36bd97dd82baa5f20e874c (const apr_dbd_driver_t *driver) void * apr_dbd_native_handle group___a_p_r___util___d_b_d.html gb2a238e15942e66a2b92836c392d5334 (const apr_dbd_driver_t *driver, apr_dbd_t *handle) int apr_dbd_check_conn group___a_p_r___util___d_b_d.html ge3fca3b3c05f835f9849668a338d82d1 (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle) int apr_dbd_set_dbname group___a_p_r___util___d_b_d.html gfecb22f98684f29e579fd73eb58b1e86 (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, const char *name) int apr_dbd_transaction_start group___a_p_r___util___d_b_d.html g1c401df12087d3bf1f15a9b80a8f572d (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_transaction_t **trans) int apr_dbd_transaction_end group___a_p_r___util___d_b_d.html g6f3a5d6b351cd05646c9399a64eafeb5 (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_transaction_t *trans) int apr_dbd_transaction_mode_get group___a_p_r___util___d_b_d.html g2a54cfffc3a348a424002eba937b5853 (const apr_dbd_driver_t *driver, apr_dbd_transaction_t *trans) int apr_dbd_transaction_mode_set group___a_p_r___util___d_b_d.html gb78c0464926311ef64882adfee2f0f42 (const apr_dbd_driver_t *driver, apr_dbd_transaction_t *trans, int mode) int apr_dbd_query group___a_p_r___util___d_b_d.html g40dbb6bb3f3f171f3443d21f3594a66a (const apr_dbd_driver_t *driver, apr_dbd_t *handle, int *nrows, const char *statement) int apr_dbd_select group___a_p_r___util___d_b_d.html g144d354a36140fade933c1ef72661004 (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_results_t **res, const char *statement, int random) int apr_dbd_num_cols group___a_p_r___util___d_b_d.html g77d1bccedee2c61dc96de6852f3a7cc4 (const apr_dbd_driver_t *driver, apr_dbd_results_t *res) int apr_dbd_num_tuples group___a_p_r___util___d_b_d.html g2c9f511aba325f8904e69158eacd3987 (const apr_dbd_driver_t *driver, apr_dbd_results_t *res) int apr_dbd_get_row group___a_p_r___util___d_b_d.html gd4cdc5f4e8981b93f5a467a8c8a768f1 (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_results_t *res, apr_dbd_row_t **row, int rownum) const char * apr_dbd_get_entry group___a_p_r___util___d_b_d.html g1d6d3b38a0d677e3d65501074832a5b8 (const apr_dbd_driver_t *driver, apr_dbd_row_t *row, int col) const char * apr_dbd_get_name group___a_p_r___util___d_b_d.html g8eac8897bd1211564166b08492f458d7 (const apr_dbd_driver_t *driver, apr_dbd_results_t *res, int col) const char * apr_dbd_error group___a_p_r___util___d_b_d.html gffa947c657862c2996707da339482287 (const apr_dbd_driver_t *driver, apr_dbd_t *handle, int errnum) const char * apr_dbd_escape group___a_p_r___util___d_b_d.html gb5806cd6535aaeafe8e9f79ef2cc90c9 (const apr_dbd_driver_t *driver, apr_pool_t *pool, const char *string, apr_dbd_t *handle) int apr_dbd_prepare group___a_p_r___util___d_b_d.html gcf21412447c4357c64d1e9200a0f5eec (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, const char *query, const char *label, apr_dbd_prepared_t **statement) int apr_dbd_pquery group___a_p_r___util___d_b_d.html g1c4b005abda896011ca414679edfe112 (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, int *nrows, apr_dbd_prepared_t *statement, int nargs, const char **args) int apr_dbd_pselect group___a_p_r___util___d_b_d.html g9f9ee377c2d335f8f1a9bffe4bf7194f (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_results_t **res, apr_dbd_prepared_t *statement, int random, int nargs, const char **args) int apr_dbd_pvquery group___a_p_r___util___d_b_d.html g52ad74205d0afa92098e546303b9ee4c (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, int *nrows, apr_dbd_prepared_t *statement,...) int apr_dbd_pvselect group___a_p_r___util___d_b_d.html gfbd4dbbddfa76586f172ec0832d4fd37 (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_results_t **res, apr_dbd_prepared_t *statement, int random,...) int apr_dbd_pbquery group___a_p_r___util___d_b_d.html g7933396b01b4676ae2835d1f09d9a1be (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, int *nrows, apr_dbd_prepared_t *statement, const void **args) int apr_dbd_pbselect group___a_p_r___util___d_b_d.html g19b88ed11097a2d07bef1e31619fff0a (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_results_t **res, apr_dbd_prepared_t *statement, int random, const void **args) int apr_dbd_pvbquery group___a_p_r___util___d_b_d.html g27d1ca34ce4064bb14ac3cb315ba8d14 (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, int *nrows, apr_dbd_prepared_t *statement,...) int apr_dbd_pvbselect group___a_p_r___util___d_b_d.html gcfe85d56d78d5e4767684238287b700b (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_results_t **res, apr_dbd_prepared_t *statement, int random,...) apr_status_t apr_dbd_datum_get group___a_p_r___util___d_b_d.html g67e57ef4eb7952df79ceaa6e92767d41 (const apr_dbd_driver_t *driver, apr_dbd_row_t *row, int col, apr_dbd_type_e type, void *data) apr_dbm.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__dbm_8h apr_datum_t #define APR_DBM_READONLY group___a_p_r___util___d_b_m.html gcd6e9c0783bd0c232bdd02b14655b6b1 #define APR_DBM_READWRITE group___a_p_r___util___d_b_m.html gf693166e76d6f84b12a0d75307687053 #define APR_DBM_RWCREATE group___a_p_r___util___d_b_m.html gbf461a27dab1f4cc7405e891d2ad6522 #define APR_DBM_RWTRUNC group___a_p_r___util___d_b_m.html g8bffe207158704162c24fa74dc1b9264 struct apr_dbm_t apr_dbm_t group___a_p_r___util___d_b_m.html g47f6ff771143ed7b7987c686c20c8536 apr_status_t apr_dbm_open_ex group___a_p_r___util___d_b_m.html gf7295ba8157f487b78319e168e1344b4 (apr_dbm_t **dbm, const char *type, const char *name, apr_int32_t mode, apr_fileperms_t perm, apr_pool_t *cntxt) apr_status_t apr_dbm_open group___a_p_r___util___d_b_m.html gb2d9cc87f4922ae11a175556ec66e390 (apr_dbm_t **dbm, const char *name, apr_int32_t mode, apr_fileperms_t perm, apr_pool_t *cntxt) void apr_dbm_close group___a_p_r___util___d_b_m.html gad1e796c7436bf855ce6ec3c567eb3eb (apr_dbm_t *dbm) apr_status_t apr_dbm_fetch group___a_p_r___util___d_b_m.html gc990e695db20e3fa6998089081685196 (apr_dbm_t *dbm, apr_datum_t key, apr_datum_t *pvalue) apr_status_t apr_dbm_store group___a_p_r___util___d_b_m.html g014a6acf6f86aaac5fc44af5b8951051 (apr_dbm_t *dbm, apr_datum_t key, apr_datum_t value) apr_status_t apr_dbm_delete group___a_p_r___util___d_b_m.html g3b218881f3bb9f8e909f32d99ae2ad34 (apr_dbm_t *dbm, apr_datum_t key) int apr_dbm_exists group___a_p_r___util___d_b_m.html g20379004362aeeef11166bdaa8c47d1e (apr_dbm_t *dbm, apr_datum_t key) apr_status_t apr_dbm_firstkey group___a_p_r___util___d_b_m.html ge5428eaa8df9a036212c8fad60e95e3c (apr_dbm_t *dbm, apr_datum_t *pkey) apr_status_t apr_dbm_nextkey group___a_p_r___util___d_b_m.html g92b8233ccf421b89d2144f834dd6f9a6 (apr_dbm_t *dbm, apr_datum_t *pkey) void apr_dbm_freedatum group___a_p_r___util___d_b_m.html gcd9f6bc4a633720ac882daba9e0d9873 (apr_dbm_t *dbm, apr_datum_t data) char * apr_dbm_geterror group___a_p_r___util___d_b_m.html g597bd9e35de9575afb55b3326789c0f3 (apr_dbm_t *dbm, int *errcode, char *errbuf, apr_size_t errbufsize) apr_status_t apr_dbm_get_usednames_ex group___a_p_r___util___d_b_m.html g7a3a1bd1ece38d90739ecb7cf72bf4fb (apr_pool_t *pool, const char *type, const char *pathname, const char **used1, const char **used2) void apr_dbm_get_usednames group___a_p_r___util___d_b_m.html g1ee45897c5e1b0718dfa4bd35a75dbe1 (apr_pool_t *pool, const char *pathname, const char **used1, const char **used2) apr_hooks.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__hooks_8h #define APR_IMPLEMENT_HOOK_GET_PROTO group___a_p_r___util___hook.html g832a6d3b73a43b3f7c58c5702ddccce9 (ns, link, name) #define APR_DECLARE_EXTERNAL_HOOK group___a_p_r___util___hook.html g69298243d3c4ffb4627fd3d04b522f44 (ns, link, ret, name, args) #define APR_HOOK_STRUCT group___a_p_r___util___hook.html ga936f5a0d1164d301aa157de6023fae5 (members) #define APR_HOOK_LINK group___a_p_r___util___hook.html g5699f73166bae88b6f6ac0bf7618b0f6 (name) #define APR_IMPLEMENT_EXTERNAL_HOOK_BASE group___a_p_r___util___hook.html g2500abadaa54b3a9d6ec25ff33a6b0cc (ns, link, name) #define APR_IMPLEMENT_EXTERNAL_HOOK_VOID group___a_p_r___util___hook.html g2d11a43b6431ec568cc1647da4a2079c (ns, link, name, args_decl, args_use) #define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL group___a_p_r___util___hook.html gb466280bdabe0cc2ee5880cbb512fa3d (ns, link, ret, name, args_decl, args_use, ok, decline) #define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST group___a_p_r___util___hook.html g0420a2aa9ca6b3c1638bdb76025ecc57 (ns, link, ret, name, args_decl, args_use, decline) #define APR_HOOK_REALLY_FIRST group___a_p_r___util___hook.html gb004dcbfff32997deb15040e48f07e92 #define APR_HOOK_FIRST group___a_p_r___util___hook.html g564dea4803813674cb6b742f65a3d2b2 #define APR_HOOK_MIDDLE group___a_p_r___util___hook.html gb9a5d50c3478c4d640deccec6b0ce879 #define APR_HOOK_LAST group___a_p_r___util___hook.html ga610a95f03d7b4aee922c28b0919f028 #define APR_HOOK_REALLY_LAST group___a_p_r___util___hook.html ge3c7d2cf35e8c89828dfff7a85b0ed77 void apr_hook_sort_register group___a_p_r___util___hook.html g04843fe00dc3c08c23130fef3ba1260c (const char *szHookName, apr_array_header_t **aHooks) void apr_hook_sort_all group___a_p_r___util___hook.html g1e0b6cf91dac5417c1b9cbd1b46b8991 (void) void apr_hook_debug_show group___a_p_r___util___hook.html g1de31557683f53c2a07f73990962c585 (const char *szName, const char *const *aszPre, const char *const *aszSucc) void apr_hook_deregister_all group___a_p_r___util___hook.html g5d20451da75574c8433feb1bd5b2ce10 (void) apr_pool_t * apr_hook_global_pool group___a_p_r___util___hook.html g8911bb699a5f03ad3c36d579ca0eca23 int apr_hook_debug_enabled group___a_p_r___util___hook.html g59309caeb9b47d921727530494f264be const char * apr_hook_debug_current group___a_p_r___util___hook.html g37be3c217439ceddbda16054b020a658 apr_ldap.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__ldap_8h #define APR_HAS_LDAP group___a_p_r___util___l_d_a_p.html gf8d199208a26c4ee4c6db46764675f01 #define APR_HAS_NETSCAPE_LDAPSDK group___a_p_r___util___l_d_a_p.html g5ee3703cda47ea3fa8bb82b94341742c #define APR_HAS_SOLARIS_LDAPSDK group___a_p_r___util___l_d_a_p.html gdfd79510be01b585d07d3a0cf517377a #define APR_HAS_NOVELL_LDAPSDK group___a_p_r___util___l_d_a_p.html g61438dcd7b6c386fab3b3da59c884f2c #define APR_HAS_MOZILLA_LDAPSDK group___a_p_r___util___l_d_a_p.html g6e9f26af3e9801f4f3dfb6ccb51ab4fe #define APR_HAS_OPENLDAP_LDAPSDK group___a_p_r___util___l_d_a_p.html g53eb8a677574757eab3aeef411c79e82 #define APR_HAS_MICROSOFT_LDAPSDK group___a_p_r___util___l_d_a_p.html g4d353111e4fc3f79a7a9a4d9a37b4099 #define APR_HAS_TIVOLI_LDAPSDK group___a_p_r___util___l_d_a_p.html gd46b9586b73ac6e51a02831275f8b04e #define APR_HAS_ZOS_LDAPSDK group___a_p_r___util___l_d_a_p.html gaf7c4fb35087815ead3905b61df10791 #define APR_HAS_OTHER_LDAPSDK group___a_p_r___util___l_d_a_p.html g23badc30790c00670f7d32485aef644f apr_ldap_init.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__ldap__init_8h apr_ldap.h apr_ldap_option.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__ldap__option_8h apr_ldap.h apr_ldap_url.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__ldap__url_8h apr_md4.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__md4_8h apr_xlate.h apr_md4_ctx_t #define APR_MD4_DIGESTSIZE group___a_p_r___util___m_d4.html g84489272090a11902d831c288c81c20f struct apr_md4_ctx_t apr_md4_ctx_t group___a_p_r___util___m_d4.html g273e0d8ad064dba908e46bde074af0d8 apr_status_t apr_md4_init group___a_p_r___util___m_d4.html g3f2ae0d6d93b1dd7a5efe11c241aee4b (apr_md4_ctx_t *context) apr_status_t apr_md4_set_xlate group___a_p_r___util___m_d4.html g86138845d199bf164093670fb2a803c3 (apr_md4_ctx_t *context, apr_xlate_t *xlate) apr_status_t apr_md4_update group___a_p_r___util___m_d4.html gcbdaec9b84aa725c29fcaac196065556 (apr_md4_ctx_t *context, const unsigned char *input, apr_size_t inputLen) apr_status_t apr_md4_final group___a_p_r___util___m_d4.html g292ac23cbfedc3ff227ced262ec09b30 (unsigned char digest[APR_MD4_DIGESTSIZE], apr_md4_ctx_t *context) apr_status_t apr_md4 group___a_p_r___util___m_d4.html g8f11756aee7a293e2b05f9b1ed112431 (unsigned char digest[APR_MD4_DIGESTSIZE], const unsigned char *input, apr_size_t inputLen) apr_md5.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__md5_8h apr_xlate.h apr_md5_ctx_t #define APR_MD5_DIGESTSIZE group___a_p_r___m_d5.html g0bb65e74ccdddca6ef75e886084e52dc struct apr_md5_ctx_t apr_md5_ctx_t group___a_p_r___m_d5.html gcb4d6bf2cf0a29553a63273ff0a6fe69 apr_status_t apr_md5_init group___a_p_r___m_d5.html g7a0502bfc466821beabe4876987fbcb5 (apr_md5_ctx_t *context) apr_status_t apr_md5_set_xlate group___a_p_r___m_d5.html gd80cbd97ca3197a237bbed006c033a57 (apr_md5_ctx_t *context, apr_xlate_t *xlate) apr_status_t apr_md5_update group___a_p_r___m_d5.html g1ae4e5c171ae98953e716ac02f026ed2 (apr_md5_ctx_t *context, const void *input, apr_size_t inputLen) apr_status_t apr_md5_final group___a_p_r___m_d5.html g245fb83991257b096ebadd2b1b8cef62 (unsigned char digest[APR_MD5_DIGESTSIZE], apr_md5_ctx_t *context) apr_status_t apr_md5 group___a_p_r___m_d5.html gc98c04b75053ae04907ca325f46df955 (unsigned char digest[APR_MD5_DIGESTSIZE], const void *input, apr_size_t inputLen) apr_status_t apr_md5_encode group___a_p_r___m_d5.html gf902e64b62e4056c6dcc1594b2dca645 (const char *password, const char *salt, char *result, apr_size_t nbytes) apr_status_t apr_password_validate group___a_p_r___m_d5.html g9ea1aa7e468de57e603d6e1d1b1516f2 (const char *passwd, const char *hash) apr_memcache.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__memcache_8h apr_buckets.h apr_reslist.h apr_memcache_server_t apr_memcache_t apr_memcache_value_t apr_memcache_stats_t struct apr_memcache_conn_t apr_memcache_conn_t group___a_p_r___util___m_c.html gc4fabf6e3b3efb959eca48f473b73825 struct apr_memcache_server_t apr_memcache_server_t group___a_p_r___util___m_c.html ga7b43f2275de0fc700cc05e2467bbc4b apr_uint32_t(* apr_memcache_hash_func group___a_p_r___util___m_c.html g27f0376041ada9a7a8efc657b543cd24 )(void *baton, const char *data, const apr_size_t data_len) struct apr_memcache_t apr_memcache_t group___a_p_r___util___m_c.html g5bec59e17d9a29de2ffb38afae165371 apr_memcache_server_t *(* apr_memcache_server_func group___a_p_r___util___m_c.html ge9144ffbb456332c7edbe0dd09759bba )(void *baton, apr_memcache_t *mc, const apr_uint32_t hash) apr_memcache_server_status_t group___a_p_r___util___m_c.html g3b18c7c3f0ecabb930b78aa549c2e2e8 APR_MC_SERVER_LIVE group___a_p_r___util___m_c.html gg3b18c7c3f0ecabb930b78aa549c2e2e8211c8d3d7a4a187b5c8f936a6929d007 APR_MC_SERVER_DEAD group___a_p_r___util___m_c.html gg3b18c7c3f0ecabb930b78aa549c2e2e86dffa918006f926e0fdf0074f4bdac28 apr_uint32_t apr_memcache_hash group___a_p_r___util___m_c.html g945a83f7f56800b18243ec5933c16593 (apr_memcache_t *mc, const char *data, const apr_size_t data_len) apr_uint32_t apr_memcache_hash_crc32 group___a_p_r___util___m_c.html g103ab58d59ca8e4668d31631ee0d3222 (void *baton, const char *data, const apr_size_t data_len) apr_uint32_t apr_memcache_hash_default group___a_p_r___util___m_c.html g6e2fa2e270332d2cdb44abf775f8022e (void *baton, const char *data, const apr_size_t data_len) apr_memcache_server_t * apr_memcache_find_server_hash group___a_p_r___util___m_c.html g22fe48405f08eaded915f5205d9fc221 (apr_memcache_t *mc, const apr_uint32_t hash) apr_memcache_server_t * apr_memcache_find_server_hash_default group___a_p_r___util___m_c.html g0c1f483d299b083e0c06e9ec1c9eb316 (void *baton, apr_memcache_t *mc, const apr_uint32_t hash) apr_status_t apr_memcache_add_server group___a_p_r___util___m_c.html g9d6381d9d9f8f83f4fa5450cc8066590 (apr_memcache_t *mc, apr_memcache_server_t *server) apr_memcache_server_t * apr_memcache_find_server group___a_p_r___util___m_c.html g76b77e042ced1bae3b23f71696482a7e (apr_memcache_t *mc, const char *host, apr_port_t port) apr_status_t apr_memcache_enable_server group___a_p_r___util___m_c.html gfe4824659cbe261409b57a48d85c34e3 (apr_memcache_t *mc, apr_memcache_server_t *ms) apr_status_t apr_memcache_disable_server group___a_p_r___util___m_c.html ge8a982e8794a08a78264ec3a966797fc (apr_memcache_t *mc, apr_memcache_server_t *ms) apr_status_t apr_memcache_server_create group___a_p_r___util___m_c.html g18ddd72bc1ab5edb0a08a8f26f193bd3 (apr_pool_t *p, const char *host, apr_port_t port, apr_uint32_t min, apr_uint32_t smax, apr_uint32_t max, apr_uint32_t ttl, apr_memcache_server_t **ns) apr_status_t apr_memcache_create group___a_p_r___util___m_c.html g5a510d8ac3f5bf12cf2da1a445f4854b (apr_pool_t *p, apr_uint16_t max_servers, apr_uint32_t flags, apr_memcache_t **mc) apr_status_t apr_memcache_getp group___a_p_r___util___m_c.html gc41597ff979e7a181da459398196196f (apr_memcache_t *mc, apr_pool_t *p, const char *key, char **baton, apr_size_t *len, apr_uint16_t *flags) void apr_memcache_add_multget_key group___a_p_r___util___m_c.html gc94d47eedb9baebe823b2e5eeed54157 (apr_pool_t *data_pool, const char *key, apr_hash_t **values) apr_status_t apr_memcache_multgetp group___a_p_r___util___m_c.html g4a5beadb98954331896e95c35324b0fc (apr_memcache_t *mc, apr_pool_t *temp_pool, apr_pool_t *data_pool, apr_hash_t *values) apr_status_t apr_memcache_set group___a_p_r___util___m_c.html ga5bbe2c60302a689773d6a70da8f99fb (apr_memcache_t *mc, const char *key, char *baton, const apr_size_t data_size, apr_uint32_t timeout, apr_uint16_t flags) apr_status_t apr_memcache_add group___a_p_r___util___m_c.html g3c150706f243bf2b9cd89152d416ee56 (apr_memcache_t *mc, const char *key, char *baton, const apr_size_t data_size, apr_uint32_t timeout, apr_uint16_t flags) apr_status_t apr_memcache_replace group___a_p_r___util___m_c.html g48bf7ec0908e417975fb0330021b65ab (apr_memcache_t *mc, const char *key, char *data, const apr_size_t data_size, apr_uint32_t timeout, apr_uint16_t flags) apr_status_t apr_memcache_delete group___a_p_r___util___m_c.html g97d2c5be42ef773ba82fd8293b219ece (apr_memcache_t *mc, const char *key, apr_uint32_t timeout) apr_status_t apr_memcache_incr group___a_p_r___util___m_c.html g2cfc95fe963f2d4190996153a2ddb748 (apr_memcache_t *mc, const char *key, apr_int32_t n, apr_uint32_t *nv) apr_status_t apr_memcache_decr group___a_p_r___util___m_c.html gcf93837a1fd4c3d230644098f3043a39 (apr_memcache_t *mc, const char *key, apr_int32_t n, apr_uint32_t *new_value) apr_status_t apr_memcache_version group___a_p_r___util___m_c.html g1d1b9478138b907eb9c10576cb1653ff (apr_memcache_server_t *ms, apr_pool_t *p, char **baton) apr_status_t apr_memcache_stats group___a_p_r___util___m_c.html gd81ba4ef97f7dd64e37a0fbb09677859 (apr_memcache_server_t *ms, apr_pool_t *p, apr_memcache_stats_t **stats) apr_optional.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__optional_8h #define APR_OPTIONAL_FN_TYPE group___a_p_r___util___opt.html g987fcf75505450f1b4ff9d7b3a7ff5d3 (name) #define APR_DECLARE_OPTIONAL_FN group___a_p_r___util___opt.html gf3ff372e28978d4ce0be7517ca2fddbd (ret, name, args) #define APR_REGISTER_OPTIONAL_FN group___a_p_r___util___opt.html gb611deabd6e78b5f666071e8cbdcc736 (name) #define APR_RETRIEVE_OPTIONAL_FN group___a_p_r___util___opt.html g35f2df25ca06248d2fdd3e7463446418 (name) void( apr_opt_fn_t group___a_p_r___util___opt.html g35e08c2dbf593e3dc5a2cb0fdc8cd637 )(void) void apr_dynamic_fn_register group___a_p_r___util___opt.html ga9c7d3cc32128521274543c384e9698d (const char *szName, apr_opt_fn_t *pfn) apr_opt_fn_t * apr_dynamic_fn_retrieve group___a_p_r___util___opt.html g1ecfa6a6ced7332d03b5867735a5e49d (const char *szName) apr_optional_hooks.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__optional__hooks_8h #define APR_OPTIONAL_HOOK group___a_p_r___util___o_p_t___h_o_o_k.html g808d07f9a3e5df6517ba027972c79e4f (ns, name, pfn, aszPre, aszSucc, nOrder) #define APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL group___a_p_r___util___o_p_t___h_o_o_k.html g3e6fa7b8e9ce140b26d8f6ce34e6ae82 (ns, link, ret, name, args_decl, args_use, ok, decline) void apr_optional_hook_add group___a_p_r___util___o_p_t___h_o_o_k.html gff32812046580ae53b0368918374a3b6 (const char *szName, void(*pfn)(void), const char *const *aszPre, const char *const *aszSucc, int nOrder) apr_array_header_t * apr_optional_hook_get group___a_p_r___util___o_p_t___h_o_o_k.html ge7cfa7b32c41fb38eb19f0bba85abfeb (const char *szName) apr_queue.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__queue_8h struct apr_queue_t apr_queue_t group___a_p_r___util___f_i_f_o.html g8c74c22abf47b63555a2109b06f83abb apr_status_t apr_queue_create group___a_p_r___util___f_i_f_o.html g9c8c5ec3d8779a6c2ffffb8b74f784c7 (apr_queue_t **queue, unsigned int queue_capacity, apr_pool_t *a) apr_status_t apr_queue_push group___a_p_r___util___f_i_f_o.html g220fffb8eb2f23aa2fe626b64076df88 (apr_queue_t *queue, void *data) apr_status_t apr_queue_pop group___a_p_r___util___f_i_f_o.html g302387f5afb71d3c771b76448088bd34 (apr_queue_t *queue, void **data) apr_status_t apr_queue_trypush group___a_p_r___util___f_i_f_o.html gba8216476d7e5abc3a5ec8a47adf96d5 (apr_queue_t *queue, void *data) apr_status_t apr_queue_trypop group___a_p_r___util___f_i_f_o.html g128207222433384f286f61ec806f4af8 (apr_queue_t *queue, void **data) unsigned int apr_queue_size group___a_p_r___util___f_i_f_o.html gf342a2e2ec195a30d6d8c9d95fbfbc30 (apr_queue_t *queue) apr_status_t apr_queue_interrupt_all group___a_p_r___util___f_i_f_o.html g8757c7f87105e6ff4cf1ea5ac28dd26f (apr_queue_t *queue) apr_status_t apr_queue_term group___a_p_r___util___f_i_f_o.html gbb8115bceb96a41df3e21544ce79bc68 (apr_queue_t *queue) apr_reslist.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__reslist_8h struct apr_reslist_t apr_reslist_t group___a_p_r___util___r_l.html g670f6719dfeffe1037e063eaab7b82ac apr_status_t(* apr_reslist_constructor group___a_p_r___util___r_l.html gb43e73c2fb526476d3e56d51f5aa214c )(void **resource, void *params, apr_pool_t *pool) apr_status_t(* apr_reslist_destructor group___a_p_r___util___r_l.html g60813240d319787f0430ae3171af838a )(void *resource, void *params, apr_pool_t *pool) apr_status_t apr_reslist_create group___a_p_r___util___r_l.html g608ebcddce542603a7f1d3cf51ae8d3c (apr_reslist_t **reslist, int min, int smax, int hmax, apr_interval_time_t ttl, apr_reslist_constructor con, apr_reslist_destructor de, void *params, apr_pool_t *pool) apr_status_t apr_reslist_destroy group___a_p_r___util___r_l.html g103e0cbac6c5da7cb93d4e52799233cb (apr_reslist_t *reslist) apr_status_t apr_reslist_acquire group___a_p_r___util___r_l.html gdfbb592b31ff9215f45d3280636e41d7 (apr_reslist_t *reslist, void **resource) apr_status_t apr_reslist_release group___a_p_r___util___r_l.html gf65ca1701994a0323df639cdb4a8d8b2 (apr_reslist_t *reslist, void *resource) void apr_reslist_timeout_set group___a_p_r___util___r_l.html gfe06c964d04a568f2625fb5a9ba7bad6 (apr_reslist_t *reslist, apr_interval_time_t timeout) apr_uint32_t apr_reslist_acquired_count group___a_p_r___util___r_l.html gc37fbbcbc8a98ba9ed017638a2c6c1b7 (apr_reslist_t *reslist) apr_status_t apr_reslist_invalidate group___a_p_r___util___r_l.html g346c0604115a9659cf23ed0cc781f7a9 (apr_reslist_t *reslist, void *resource) apr_rmm.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__rmm_8h apr_anylock.h struct apr_rmm_t apr_rmm_t group___a_p_r___util___r_m_m.html gdb4d418c417ece33c4430ba9df59070a apr_size_t apr_rmm_off_t group___a_p_r___util___r_m_m.html g70b508c81a0bc75350efdefb3410af12 apr_status_t apr_rmm_init group___a_p_r___util___r_m_m.html g65ebaca1a86f0667156592f40b81b681 (apr_rmm_t **rmm, apr_anylock_t *lock, void *membuf, apr_size_t memsize, apr_pool_t *cont) apr_status_t apr_rmm_destroy group___a_p_r___util___r_m_m.html g8ccae93038489f2acb7588292df5d80a (apr_rmm_t *rmm) apr_status_t apr_rmm_attach group___a_p_r___util___r_m_m.html gdf144b4071c5c4d85cded37ca0e58dff (apr_rmm_t **rmm, apr_anylock_t *lock, void *membuf, apr_pool_t *cont) apr_status_t apr_rmm_detach group___a_p_r___util___r_m_m.html g2171746dcfa1e0f07717224ad106091e (apr_rmm_t *rmm) apr_rmm_off_t apr_rmm_malloc group___a_p_r___util___r_m_m.html g31e42a7c40bbd3f7f132eaf347a79d32 (apr_rmm_t *rmm, apr_size_t reqsize) apr_rmm_off_t apr_rmm_realloc group___a_p_r___util___r_m_m.html g78561452a8fb3fef18f1203efaa0b92f (apr_rmm_t *rmm, void *entity, apr_size_t reqsize) apr_rmm_off_t apr_rmm_calloc group___a_p_r___util___r_m_m.html g12ff2a4c23548e2f1616a17734defaf8 (apr_rmm_t *rmm, apr_size_t reqsize) apr_status_t apr_rmm_free group___a_p_r___util___r_m_m.html gd22b65c95d0964e37aecd4134294b016 (apr_rmm_t *rmm, apr_rmm_off_t entity) void * apr_rmm_addr_get group___a_p_r___util___r_m_m.html g6bf67e9f2d08f9f36d2c420648d8d3a0 (apr_rmm_t *rmm, apr_rmm_off_t entity) apr_rmm_off_t apr_rmm_offset_get group___a_p_r___util___r_m_m.html g3ed2e880ebc695aa8dd241e21b5a666e (apr_rmm_t *rmm, void *entity) apr_size_t apr_rmm_overhead_get group___a_p_r___util___r_m_m.html ge638ec990cb1600f6f70a8b3a1e07ff8 (int n) apr_sdbm.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__sdbm_8h apr_sdbm_datum_t #define APR_SDBM_DIRFEXT group___a_p_r___util___d_b_m___s_d_b_m.html gfabaf97932efa0eebfb1cc6b692a111f #define APR_SDBM_PAGFEXT group___a_p_r___util___d_b_m___s_d_b_m.html ga03fa1d1183240ca0845c54cc07df557 #define APR_SDBM_INSERT group___a_p_r___util___d_b_m___s_d_b_m.html gd42d896bab08b5e210f489fa59656807 #define APR_SDBM_REPLACE group___a_p_r___util___d_b_m___s_d_b_m.html g84e2252c9ddf5e6c64ed1be43d2d0e53 #define APR_SDBM_INSERTDUP group___a_p_r___util___d_b_m___s_d_b_m.html g64cd385609059cf151e54c7046d92ec3 struct apr_sdbm_t apr_sdbm_t group___a_p_r___util___d_b_m___s_d_b_m.html gf24cdea6e4884036a40484259efa68c6 apr_status_t apr_sdbm_open group___a_p_r___util___d_b_m___s_d_b_m.html g08c6121b4159ae86cec6e915e1e5d758 (apr_sdbm_t **db, const char *name, apr_int32_t mode, apr_fileperms_t perms, apr_pool_t *p) apr_status_t apr_sdbm_close group___a_p_r___util___d_b_m___s_d_b_m.html gf684c3a70d2c9ebe02bb1e2fffe23e1e (apr_sdbm_t *db) apr_status_t apr_sdbm_lock group___a_p_r___util___d_b_m___s_d_b_m.html g2c2edd6a123d8ca2a6334fa8874b724d (apr_sdbm_t *db, int type) apr_status_t apr_sdbm_unlock group___a_p_r___util___d_b_m___s_d_b_m.html gb96a7e08ddac3cb6bff97a822b68de14 (apr_sdbm_t *db) apr_status_t apr_sdbm_fetch group___a_p_r___util___d_b_m___s_d_b_m.html g7d9eae450e9f9a2f1bcf626a3f8ca43f (apr_sdbm_t *db, apr_sdbm_datum_t *value, apr_sdbm_datum_t key) apr_status_t apr_sdbm_store group___a_p_r___util___d_b_m___s_d_b_m.html gc12993b882c50afa0777945ea4a88572 (apr_sdbm_t *db, apr_sdbm_datum_t key, apr_sdbm_datum_t value, int opt) apr_status_t apr_sdbm_delete group___a_p_r___util___d_b_m___s_d_b_m.html g5744462c07c40d26c275beaeb902ff9c (apr_sdbm_t *db, const apr_sdbm_datum_t key) apr_status_t apr_sdbm_firstkey group___a_p_r___util___d_b_m___s_d_b_m.html ge5410d9dc681393e597f492f30c6447f (apr_sdbm_t *db, apr_sdbm_datum_t *key) apr_status_t apr_sdbm_nextkey group___a_p_r___util___d_b_m___s_d_b_m.html g77d7f848ccb68e9f465a988d0af80911 (apr_sdbm_t *db, apr_sdbm_datum_t *key) int apr_sdbm_rdonly group___a_p_r___util___d_b_m___s_d_b_m.html gbad67008f83fd219173acc5abdd0b42d (apr_sdbm_t *db) apr_sha1.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__sha1_8h apr_sha1_ctx_t #define APR_SHA1_DIGESTSIZE apr__sha1_8h.html f4ce94a96702e0d9fe96e1d861168af9 #define APR_SHA1PW_ID apr__sha1_8h.html fec390451cd4f502babb1f982a78690b #define APR_SHA1PW_IDLEN apr__sha1_8h.html 6e6ab60388eea5f855f1613425f8e34c struct apr_sha1_ctx_t apr_sha1_ctx_t apr__sha1_8h.html 1acfd1f91495d6d22a188308b0b2d2b5 void apr_sha1_base64 apr__sha1_8h.html 38a5ac487992a24e941b7501273829e8 (const char *clear, int len, char *out) void apr_sha1_init apr__sha1_8h.html 79220a1d610128cca63a6c363ea27d01 (apr_sha1_ctx_t *context) void apr_sha1_update apr__sha1_8h.html d85fb14e7e8d1c26e6591eb681b047b0 (apr_sha1_ctx_t *context, const char *input, unsigned int inputLen) void apr_sha1_update_binary apr__sha1_8h.html 3db65581e6cd2f029735c8689485b11a (apr_sha1_ctx_t *context, const unsigned char *input, unsigned int inputLen) void apr_sha1_final apr__sha1_8h.html 037d3697f6604bdaa2f46c0f381a2bba (unsigned char digest[APR_SHA1_DIGESTSIZE], apr_sha1_ctx_t *context) apr_strmatch.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__strmatch_8h apr_strmatch_pattern struct apr_strmatch_pattern apr_strmatch_pattern group___a_p_r___util___str_match.html gb7fc6f6d1b15c8d8750b4637b8ac5679 const char * apr_strmatch group___a_p_r___util___str_match.html gda0fdf0c9dcb92083159bb4f8bfb9158 (const apr_strmatch_pattern *pattern, const char *s, apr_size_t slen) const apr_strmatch_pattern * apr_strmatch_precompile group___a_p_r___util___str_match.html gf38b738b333c59a3f6439b71f1277dd9 (apr_pool_t *p, const char *s, int case_sensitive) apr_thread_pool.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__thread__pool_8h #define APR_THREAD_TASK_PRIORITY_LOWEST group___a_p_r___util___t_p.html g312691aaa41f45820e13c2566a4c6780 #define APR_THREAD_TASK_PRIORITY_LOW group___a_p_r___util___t_p.html g19879c994e9a71e9954e580a179b62c1 #define APR_THREAD_TASK_PRIORITY_NORMAL group___a_p_r___util___t_p.html g84d2ac8fa8a538661715b0d2e2736cb1 #define APR_THREAD_TASK_PRIORITY_HIGH group___a_p_r___util___t_p.html g289d5e1346b5807b43db9ea7d4ea5c17 #define APR_THREAD_TASK_PRIORITY_HIGHEST group___a_p_r___util___t_p.html g5fa01e4e210270d119382a80aae13d1d struct apr_thread_pool apr_thread_pool_t group___a_p_r___util___t_p.html gb31b68a03a0d5eec3e1879c253d3b620 apr_status_t apr_thread_pool_create group___a_p_r___util___t_p.html g9c4351f2f93d223c159c1f8e5481830e (apr_thread_pool_t **me, apr_size_t init_threads, apr_size_t max_threads, apr_pool_t *pool) apr_status_t apr_thread_pool_destroy group___a_p_r___util___t_p.html gb06b4fdfc684c88781abf201d53a44eb (apr_thread_pool_t *me) apr_status_t apr_thread_pool_push group___a_p_r___util___t_p.html gd66fb92679a8f456ff8e8ea1629eb041 (apr_thread_pool_t *me, apr_thread_start_t func, void *param, apr_byte_t priority, void *owner) apr_status_t apr_thread_pool_schedule group___a_p_r___util___t_p.html ga79df50c650442b8d39e169f4e422d3b (apr_thread_pool_t *me, apr_thread_start_t func, void *param, apr_interval_time_t time, void *owner) apr_status_t apr_thread_pool_top group___a_p_r___util___t_p.html g9acb6218820184f0617eecf56f0d3d84 (apr_thread_pool_t *me, apr_thread_start_t func, void *param, apr_byte_t priority, void *owner) apr_status_t apr_thread_pool_tasks_cancel group___a_p_r___util___t_p.html gee3d7332cf2591f42472e8be0bcbff87 (apr_thread_pool_t *me, void *owner) apr_size_t apr_thread_pool_tasks_count group___a_p_r___util___t_p.html g4f628cbec0365bb39be715a3c7ff0ec3 (apr_thread_pool_t *me) apr_size_t apr_thread_pool_scheduled_tasks_count group___a_p_r___util___t_p.html gc0324b95f6b61dbfb184cbe84c541b42 (apr_thread_pool_t *me) apr_size_t apr_thread_pool_threads_count group___a_p_r___util___t_p.html g9a2642a5a61df9560da438e818d5fad3 (apr_thread_pool_t *me) apr_size_t apr_thread_pool_busy_count group___a_p_r___util___t_p.html gf839cda931928964f450e3a17d153b24 (apr_thread_pool_t *me) apr_size_t apr_thread_pool_idle_count group___a_p_r___util___t_p.html ge6c5b87d1fee7150f74baa1008cb00c0 (apr_thread_pool_t *me) apr_size_t apr_thread_pool_idle_max_set group___a_p_r___util___t_p.html g07c5e4dca589ff024e9adfc8f818c481 (apr_thread_pool_t *me, apr_size_t cnt) apr_size_t apr_thread_pool_tasks_run_count group___a_p_r___util___t_p.html gab5c9c8afc46793ea5c413edfc9ef46e (apr_thread_pool_t *me) apr_size_t apr_thread_pool_tasks_high_count group___a_p_r___util___t_p.html g5eda07fb7fac1b4c4165137f34c5c31c (apr_thread_pool_t *me) apr_size_t apr_thread_pool_threads_high_count group___a_p_r___util___t_p.html gb6dcdaa6129caf35fa370e694a67ff08 (apr_thread_pool_t *me) apr_size_t apr_thread_pool_threads_idle_timeout_count group___a_p_r___util___t_p.html gfcf0a761a77b2a27fc043d650606c122 (apr_thread_pool_t *me) apr_size_t apr_thread_pool_idle_max_get group___a_p_r___util___t_p.html g6dd7fdcaac5cb2848aecd2ee1426d41e (apr_thread_pool_t *me) apr_size_t apr_thread_pool_thread_max_set group___a_p_r___util___t_p.html ga352b6337b31ebab796b604240a907e9 (apr_thread_pool_t *me, apr_size_t cnt) apr_interval_time_t apr_thread_pool_idle_wait_set group___a_p_r___util___t_p.html g382b90c482d39184b2a80157f64166ec (apr_thread_pool_t *me, apr_interval_time_t timeout) apr_interval_time_t apr_thread_pool_idle_wait_get group___a_p_r___util___t_p.html g6ef255c2d556fa757e9b78c2745c9bac (apr_thread_pool_t *me) apr_size_t apr_thread_pool_thread_max_get group___a_p_r___util___t_p.html gca755ea05976c5e1b782dcf40a1ef443 (apr_thread_pool_t *me) apr_size_t apr_thread_pool_threshold_set group___a_p_r___util___t_p.html g1c35f1bd809dde4300f4a3f77026f446 (apr_thread_pool_t *me, apr_size_t val) apr_size_t apr_thread_pool_threshold_get group___a_p_r___util___t_p.html g38f4ad8e384cde0e9d32867031c7a935 (apr_thread_pool_t *me) apr_status_t apr_thread_pool_task_owner_get group___a_p_r___util___t_p.html gefbaa0f765567e8e5a79adaaf346755f (apr_thread_t *thd, void **owner) apr_uri.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__uri_8h apr_uri_t #define APR_URI_FTP_DEFAULT_PORT group___a_p_r___util___u_r_i.html g0134a6dcaf62796e014c592ac4b2c09c #define APR_URI_SSH_DEFAULT_PORT group___a_p_r___util___u_r_i.html g4f4161d54207cf302b3c91cdda428be1 #define APR_URI_TELNET_DEFAULT_PORT group___a_p_r___util___u_r_i.html g0b6bcdfb9754edd6c160c9d6755df085 #define APR_URI_GOPHER_DEFAULT_PORT group___a_p_r___util___u_r_i.html gaf5bb1e53b22fa7ac4e88f415e7c2476 #define APR_URI_HTTP_DEFAULT_PORT group___a_p_r___util___u_r_i.html g7a9fa7be10430864617b3a0a58dd5d12 #define APR_URI_POP_DEFAULT_PORT group___a_p_r___util___u_r_i.html gf9408c6288a8580b285d7af58f836856 #define APR_URI_NNTP_DEFAULT_PORT group___a_p_r___util___u_r_i.html g86ac4da6cabda295f87042fb258fc36b #define APR_URI_IMAP_DEFAULT_PORT group___a_p_r___util___u_r_i.html g6e8aade3786adb75dc63b9d0bd3bfbb9 #define APR_URI_PROSPERO_DEFAULT_PORT group___a_p_r___util___u_r_i.html g329c26e04dd9449fd565f8ba76e8666c #define APR_URI_WAIS_DEFAULT_PORT group___a_p_r___util___u_r_i.html g0807570c6ef5c3813f65915fb0c19ff2 #define APR_URI_LDAP_DEFAULT_PORT group___a_p_r___util___u_r_i.html g5c648234ed92d19a09232080779a0185 #define APR_URI_HTTPS_DEFAULT_PORT group___a_p_r___util___u_r_i.html g9b319ff3bda42c0384fcfe0a2bc53254 #define APR_URI_RTSP_DEFAULT_PORT group___a_p_r___util___u_r_i.html gb2aac3d460462c664e848203e8046c3b #define APR_URI_SNEWS_DEFAULT_PORT group___a_p_r___util___u_r_i.html g6333715b343024de16e20b645beb7634 #define APR_URI_ACAP_DEFAULT_PORT group___a_p_r___util___u_r_i.html gf5b775cba93ca7f1778320c33c5a3078 #define APR_URI_NFS_DEFAULT_PORT group___a_p_r___util___u_r_i.html g94dc176de94e729cf565c87cd6db5ffd #define APR_URI_TIP_DEFAULT_PORT group___a_p_r___util___u_r_i.html g04b234524306cac26f954abad9a15b46 #define APR_URI_SIP_DEFAULT_PORT group___a_p_r___util___u_r_i.html g9d9ca5a25b37ad3c41355d902a002622 #define APR_URI_UNP_OMITSITEPART group___a_p_r___util___u_r_i.html gef80da6212c6838ac15bbcafa1e9745b #define APR_URI_UNP_OMITUSER group___a_p_r___util___u_r_i.html g93a8095f746bb8d4f4e5d8d6ca102ebc #define APR_URI_UNP_OMITPASSWORD group___a_p_r___util___u_r_i.html ged3be741b9a68eb4ee156c6a35b137ff #define APR_URI_UNP_OMITUSERINFO group___a_p_r___util___u_r_i.html gd573c75c47cc369ffc0a5776c3613494 #define APR_URI_UNP_REVEALPASSWORD group___a_p_r___util___u_r_i.html g527cd70521f12a7962df9976068dda29 #define APR_URI_UNP_OMITPATHINFO group___a_p_r___util___u_r_i.html g95d614636f08ee93fbfc341f2ac664c2 #define APR_URI_UNP_OMITQUERY group___a_p_r___util___u_r_i.html g41a4ebcf1930bcbd81aada6e3a06008b struct apr_uri_t apr_uri_t group___a_p_r___util___u_r_i.html g44e5978712bd6ff4fb65314346c01392 apr_port_t apr_uri_port_of_scheme group___a_p_r___util___u_r_i.html gd3b7b49b802a674badfb3322c31662c7 (const char *scheme_str) char * apr_uri_unparse group___a_p_r___util___u_r_i.html g78b4562bbe4225a0d3087543690394a0 (apr_pool_t *p, const apr_uri_t *uptr, unsigned flags) apr_status_t apr_uri_parse group___a_p_r___util___u_r_i.html gbbef816426a66595caae8b60e92ee43c (apr_pool_t *p, const char *uri, apr_uri_t *uptr) apr_status_t apr_uri_parse_hostinfo group___a_p_r___util___u_r_i.html gb3028922e6d1d1e038062bc5b0270f31 (apr_pool_t *p, const char *hostinfo, apr_uri_t *uptr) apr_uuid.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__uuid_8h apr_uuid_t #define APR_UUID_FORMATTED_LENGTH group___a_p_r___u_u_i_d.html g295b64f854c9dff02bb0c44e4be917a3 void apr_uuid_get group___a_p_r___u_u_i_d.html g129830a7a3c6b77047d2e74e261a7364 (apr_uuid_t *uuid) void apr_uuid_format group___a_p_r___u_u_i_d.html g539a9fee8522a416634194b648ca9790 (char *buffer, const apr_uuid_t *uuid) apr_status_t apr_uuid_parse group___a_p_r___u_u_i_d.html g66d90e0c926ef51a8d607d164e2d7ae7 (apr_uuid_t *uuid, const char *uuid_str) apr_xlate.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__xlate_8h #define APR_DEFAULT_CHARSET group___a_p_r___x_l_a_t_e.html g3276c680eb0917ff51ff22c9b9959fa9 #define APR_LOCALE_CHARSET group___a_p_r___x_l_a_t_e.html g0e46c333fb1c900f0dd4a78664f5a0de struct apr_xlate_t apr_xlate_t group___a_p_r___x_l_a_t_e.html g069dabbadc30e3a4157c38104a250e77 apr_status_t apr_xlate_open group___a_p_r___x_l_a_t_e.html gb7d55348056d7e4cadbc35cfb8e1e624 (apr_xlate_t **convset, const char *topage, const char *frompage, apr_pool_t *pool) apr_status_t apr_xlate_sb_get group___a_p_r___x_l_a_t_e.html g578875b2e6b2a19f8466b80e0768792e (apr_xlate_t *convset, int *onoff) apr_status_t apr_xlate_conv_buffer group___a_p_r___x_l_a_t_e.html gb92a20b644aa78ca94c6147b254a54f1 (apr_xlate_t *convset, const char *inbuf, apr_size_t *inbytes_left, char *outbuf, apr_size_t *outbytes_left) apr_int32_t apr_xlate_conv_byte group___a_p_r___x_l_a_t_e.html g90173cefe2dee6e5032ff17b15fea14b (apr_xlate_t *convset, unsigned char inchar) apr_status_t apr_xlate_close group___a_p_r___x_l_a_t_e.html g2f88b0f72cd2512b8002344308480a8f (apr_xlate_t *convset) apr_xml.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apr__xml_8h Apache apr_text apr_text_header apr_xml_attr apr_xml_elem apr_xml_doc #define APR_XML_NS_DAV_ID group___a_p_r___util___x_m_l.html gd856851edabebf42e4150597c6f9d2c2 #define APR_XML_NS_NONE group___a_p_r___util___x_m_l.html g2eed42f7f5e2b1932141f6bb5594b042 #define APR_XML_NS_ERROR_BASE group___a_p_r___util___x_m_l.html g949c1a93de86c67576a0f2f225208447 #define APR_XML_NS_IS_ERROR group___a_p_r___util___x_m_l.html g65029fb8740ec9eb85562df1300d125f (e) #define APR_XML_ELEM_IS_EMPTY group___a_p_r___util___x_m_l.html ga5792e7a2aa38dc98a93b0762c98441f (e) #define APR_XML_X2T_FULL group___a_p_r___util___x_m_l.html geb48abf8de020df9bad57cfc7ca35747 #define APR_XML_X2T_INNER group___a_p_r___util___x_m_l.html g715a5e536efbfa24854531008cf4bdce #define APR_XML_X2T_LANG_INNER group___a_p_r___util___x_m_l.html g4cd40106902732169b8fe7579ba2e67c #define APR_XML_X2T_FULL_NS_LANG group___a_p_r___util___x_m_l.html g7b2cd4c48940cd95a56ace294a94d938 #define APR_XML_GET_URI_ITEM group___a_p_r___util___x_m_l.html gf31ae94be9e1db1ee0175f7c0c40e3a7 (ary, i) struct apr_text apr_text group___a_p_r___util___x_m_l.html gfddd251818de0015559bc174f81fd743 struct apr_text_header apr_text_header group___a_p_r___util___x_m_l.html gafc6d5ebd59b64a27146cf938a4086e0 struct apr_xml_attr apr_xml_attr group___a_p_r___util___x_m_l.html g4889d4d353f0ea0dabae2d5ae58dd07e struct apr_xml_elem apr_xml_elem group___a_p_r___util___x_m_l.html g31390d11ec04137c925ddf43c2223270 struct apr_xml_doc apr_xml_doc group___a_p_r___util___x_m_l.html g98eba70878b9460f2530e7a21bb6ae74 struct apr_xml_parser apr_xml_parser group___a_p_r___util___x_m_l.html gb08a1c255615afda782318811a5053d9 void apr_text_append group___a_p_r___util___x_m_l.html gf63dcaeeda623045860396304007aa49 (apr_pool_t *p, apr_text_header *hdr, const char *text) apr_xml_parser * apr_xml_parser_create group___a_p_r___util___x_m_l.html g438b6b9f15ecd8c22a602c9d5f87bd5c (apr_pool_t *pool) apr_status_t apr_xml_parse_file group___a_p_r___util___x_m_l.html gd65e09202d9f2eb46cb1d681d7005076 (apr_pool_t *p, apr_xml_parser **parser, apr_xml_doc **ppdoc, apr_file_t *xmlfd, apr_size_t buffer_length) apr_status_t apr_xml_parser_feed group___a_p_r___util___x_m_l.html g8b1f79c70267b30bc56a69df0b7d05ca (apr_xml_parser *parser, const char *data, apr_size_t len) apr_status_t apr_xml_parser_done group___a_p_r___util___x_m_l.html g69d883e7fcaf0f98d6df69d7ff3ba523 (apr_xml_parser *parser, apr_xml_doc **pdoc) char * apr_xml_parser_geterror group___a_p_r___util___x_m_l.html gde6ff47b3d0b714e2b61bc1845b47743 (apr_xml_parser *parser, char *errbuf, apr_size_t errbufsize) void apr_xml_to_text group___a_p_r___util___x_m_l.html g4485edce130dc1e9a3da3a633a75ffb3 (apr_pool_t *p, const apr_xml_elem *elem, int style, apr_array_header_t *namespaces, int *ns_map, const char **pbuf, apr_size_t *psize) const char * apr_xml_empty_elem group___a_p_r___util___x_m_l.html gbb75f025859b605f28394f82154f7847 (apr_pool_t *p, const apr_xml_elem *elem) const char * apr_xml_quote_string group___a_p_r___util___x_m_l.html g084970837d60613476e8ac1abd7651f0 (apr_pool_t *p, const char *s, int quotes) void apr_xml_quote_elem group___a_p_r___util___x_m_l.html g709c6294a67b450459669e3be45a9aba (apr_pool_t *p, apr_xml_elem *elem) int apr_xml_insert_uri group___a_p_r___util___x_m_l.html g25a4f0e204fc99ce5000221befc55847 (apr_array_header_t *uri_array, const char *uri) apu_version.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apu__version_8h #define APU_MAJOR_VERSION apu__version_8h.html c6ad13b6f97cfe3b3d9008ff34f0bb35 #define APU_MINOR_VERSION apu__version_8h.html 28a5f6fb38453905a840885a8c00152a #define APU_PATCH_VERSION apu__version_8h.html 44b4590b3763f9c92f9d429fb9ce119b #define APU_IS_DEV_STRING apu__version_8h.html b47617bb2faf080300b78620a4a53a6c #define APU_STRINGIFY apu__version_8h.html 18a778c91b4b029e21691b9f0fa85284 (n) #define APU_STRINGIFY_HELPER apu__version_8h.html a2936265eef0c753fe6fe8ea9c81eec2 (n) #define APU_VERSION_STRING apu__version_8h.html 10c7d040b89f2aa014a57d574e5db3d1 #define APU_VERSION_STRING_CSV apu__version_8h.html 0442a908106268fe88603f2c56388302 void apu_version apu__version_8h.html 14cce37b5ee21096fc4307e7374a4970 (apr_version_t *pvsn) const char * apu_version_string apu__version_8h.html 50777ba300ca00840f7fce3bf6c1e917 (void) apu_want.h /home/issac/asf/build/httpd-2.2.10/srclib/apr-util/include/ apu__want_8h APR_Util_Base64 Base64 Encoding group___a_p_r___util___base64.html int apr_base64_encode_len group___a_p_r___util___base64.html g5dad9df13a7018e3946a54c8d2c27ae9 (int len) int apr_base64_encode group___a_p_r___util___base64.html g6176124b05512773de40cc5e899058b9 (char *coded_dst, const char *plain_src, int len_plain_src) int apr_base64_encode_binary group___a_p_r___util___base64.html ge7480ce6b723e71cf91583217d96f1d7 (char *coded_dst, const unsigned char *plain_src, int len_plain_src) int apr_base64_decode_len group___a_p_r___util___base64.html gd1ba714a6708376e6a21722a40a698a2 (const char *coded_src) int apr_base64_decode group___a_p_r___util___base64.html g1f717903883e7405c2a0d0ec5814f865 (char *plain_dst, const char *coded_src) int apr_base64_decode_binary group___a_p_r___util___base64.html g3d8f1517351d8b7a18b8396642b98975 (unsigned char *plain_dst, const char *coded_src) APR_Util_Bucket_Brigades Bucket Brigades group___a_p_r___util___bucket___brigades.html apr_bucket_type_t apr_bucket apr_bucket_brigade apr_bucket_refcount apr_bucket_heap apr_bucket_pool apr_bucket_mmap apr_bucket_file apr_bucket_structs #define APR_BUCKET_BUFF_SIZE group___a_p_r___util___bucket___brigades.html g82bf404af30875135c65e2c13ad035e5 #define APR_BRIGADE_CHECK_CONSISTENCY group___a_p_r___util___bucket___brigades.html ge1dfe8bf117d10e7dc5b8e0c08f0ebb2 (b) #define APR_BUCKET_CHECK_CONSISTENCY group___a_p_r___util___bucket___brigades.html gedaeb3fbe71aac408377471b8a54dc08 (e) #define APR_BRIGADE_SENTINEL group___a_p_r___util___bucket___brigades.html g858da66dccab1e063415678bb115788a (b) #define APR_BRIGADE_EMPTY group___a_p_r___util___bucket___brigades.html g836f61da6cce15074eff257ce4b6fc0f (b) #define APR_BRIGADE_FIRST group___a_p_r___util___bucket___brigades.html gb5826a11eb6ba90786a94282f806c230 (b) #define APR_BRIGADE_LAST group___a_p_r___util___bucket___brigades.html g40e0ef2a904aa519ca9d63288dee0b4d (b) #define APR_BRIGADE_INSERT_HEAD group___a_p_r___util___bucket___brigades.html g6dc39d8757e18941a6fb069b0c18fbd3 (b, e) #define APR_BRIGADE_INSERT_TAIL group___a_p_r___util___bucket___brigades.html g5447595f8374296c5ffe208db39b2f5d (b, e) #define APR_BRIGADE_CONCAT group___a_p_r___util___bucket___brigades.html g7cecbc89be912ce9ab24c889eb8f955b (a, b) #define APR_BRIGADE_PREPEND group___a_p_r___util___bucket___brigades.html g52ba212f76507a79ccae213875150ad1 (a, b) #define APR_BUCKET_INSERT_BEFORE group___a_p_r___util___bucket___brigades.html ge012adeccda754eabc42b7855bec081e (a, b) #define APR_BUCKET_INSERT_AFTER group___a_p_r___util___bucket___brigades.html g1f8114b7316d1fef1deb95abc8f02341 (a, b) #define APR_BUCKET_NEXT group___a_p_r___util___bucket___brigades.html g7171f690b203d548a5b6ae0b079068d8 (e) #define APR_BUCKET_PREV group___a_p_r___util___bucket___brigades.html gf229fecd4174efd4d6a9774e3048ae28 (e) #define APR_BUCKET_REMOVE group___a_p_r___util___bucket___brigades.html g2c46a1b717a87b68bd98b425e0c64977 (e) #define APR_BUCKET_INIT group___a_p_r___util___bucket___brigades.html g00c2e104125f124c3a52627863432de9 (e) #define APR_BUCKET_IS_METADATA group___a_p_r___util___bucket___brigades.html g506cb29cc1ec1abeb487e01b122bd4d9 (e) #define APR_BUCKET_IS_FLUSH group___a_p_r___util___bucket___brigades.html g24105da0bb755a775c4b2a519d7c25f9 (e) #define APR_BUCKET_IS_EOS group___a_p_r___util___bucket___brigades.html g89b225e1c08473766eec719b985ca0d6 (e) #define APR_BUCKET_IS_FILE group___a_p_r___util___bucket___brigades.html g1d54037bb6953c73d5c61f64c311d470 (e) #define APR_BUCKET_IS_PIPE group___a_p_r___util___bucket___brigades.html g03e62d86c994d1d1cc9be3eb8b8f6ac6 (e) #define APR_BUCKET_IS_SOCKET group___a_p_r___util___bucket___brigades.html g4b8315b498e4eb67efde1c83bdbe8b87 (e) #define APR_BUCKET_IS_HEAP group___a_p_r___util___bucket___brigades.html g3dee4fbd5b4e16e5188a6cfec40b6961 (e) #define APR_BUCKET_IS_TRANSIENT group___a_p_r___util___bucket___brigades.html g1a7e7ac5fddbab4ce189e8d3007446ff (e) #define APR_BUCKET_IS_IMMORTAL group___a_p_r___util___bucket___brigades.html g53f1188c168acf7dcfabfa1ac5a08655 (e) #define APR_BUCKET_IS_MMAP group___a_p_r___util___bucket___brigades.html g1693d49aeb0287e3b171c922c6b633d2 (e) #define APR_BUCKET_IS_POOL group___a_p_r___util___bucket___brigades.html gdbe80a9016da6a06ab414ba61d6625d0 (e) #define APR_BUCKET_ALLOC_SIZE group___a_p_r___util___bucket___brigades.html ge3ccf4c383c9e7fea28354cc8e029626 #define apr_bucket_destroy group___a_p_r___util___bucket___brigades.html gfc0dae1e90a798284ed777a0c9e90ec6 (e) #define apr_bucket_delete group___a_p_r___util___bucket___brigades.html g8925c02a7f95e8c1c3986294d4678797 (e) #define apr_bucket_read group___a_p_r___util___bucket___brigades.html ge44ae938c6c60e148430fdb098dcf28f (e, str, len, block) #define apr_bucket_setaside group___a_p_r___util___bucket___brigades.html gb00941ffd472982693eb415a964de7af (e, p) #define apr_bucket_split group___a_p_r___util___bucket___brigades.html g5bb8827a8dd1baa6ac32682e13e9d8c2 (e, point) #define apr_bucket_copy group___a_p_r___util___bucket___brigades.html gb33cc08b7f064d06397f312e427279c3 (e, c) struct apr_bucket_brigade apr_bucket_brigade group___a_p_r___util___bucket___brigades.html g9f50254e85c7aad79ca289a0ba069025 struct apr_bucket apr_bucket group___a_p_r___util___bucket___brigades.html ga17a456120961b1c5af0525f4900a457 struct apr_bucket_alloc_t apr_bucket_alloc_t group___a_p_r___util___bucket___brigades.html g9a30babfeb6e290db124d8f9b69e49e4 struct apr_bucket_type_t apr_bucket_type_t group___a_p_r___util___bucket___brigades.html g4a152aaf7d851c81af73b7e84dc1a8a2 apr_status_t(* apr_brigade_flush group___a_p_r___util___bucket___brigades.html gcdf6dc9d4c81c64834e5e509281f7f16 )(apr_bucket_brigade *bb, void *ctx) struct apr_bucket_refcount apr_bucket_refcount group___a_p_r___util___bucket___brigades.html g785fd3402961b30315975b0c87c87706 struct apr_bucket_heap apr_bucket_heap group___a_p_r___util___bucket___brigades.html gede6e77d621d0f3f7d2685d489d01283 struct apr_bucket_pool apr_bucket_pool group___a_p_r___util___bucket___brigades.html g211e00d871029de148116cd24b070aed struct apr_bucket_mmap apr_bucket_mmap group___a_p_r___util___bucket___brigades.html g27ede7c3a29627c7d184dc7cfbc4f767 struct apr_bucket_file apr_bucket_file group___a_p_r___util___bucket___brigades.html g1a786f7edac4d7a2c212f0fe74457b3d union apr_bucket_structs apr_bucket_structs group___a_p_r___util___bucket___brigades.html g3c0929c971f94de4521fb0fea6fd3209 apr_read_type_e group___a_p_r___util___bucket___brigades.html g756973fb6392bd1026c3d96b4519776d APR_BLOCK_READ group___a_p_r___util___bucket___brigades.html gg756973fb6392bd1026c3d96b4519776d2d983f5b7fd996434e0dded171c261d8 APR_NONBLOCK_READ group___a_p_r___util___bucket___brigades.html gg756973fb6392bd1026c3d96b4519776d42b97663ca71fbbf2e2af7c8192e5dd8 apr_bucket_brigade * apr_brigade_create group___a_p_r___util___bucket___brigades.html geb422371006699c68f0ed3b496cc12a2 (apr_pool_t *p, apr_bucket_alloc_t *list) apr_status_t apr_brigade_destroy group___a_p_r___util___bucket___brigades.html g2eba1e262dece0d4444ddd25ae7b250a (apr_bucket_brigade *b) apr_status_t apr_brigade_cleanup group___a_p_r___util___bucket___brigades.html gfd6a8378a15e8b42a57a5923a03de7f2 (void *data) apr_bucket_brigade * apr_brigade_split_ex group___a_p_r___util___bucket___brigades.html g36448fa89ab3239fd46591fbc82624e6 (apr_bucket_brigade *b, apr_bucket *e, apr_bucket_brigade *a) apr_bucket_brigade * apr_brigade_split group___a_p_r___util___bucket___brigades.html gcaf2929f951920a464e170baf2b4c345 (apr_bucket_brigade *b, apr_bucket *e) apr_status_t apr_brigade_partition group___a_p_r___util___bucket___brigades.html g4b2f22ba70ac9f65788014c61d4f5b76 (apr_bucket_brigade *b, apr_off_t point, apr_bucket **after_point) apr_status_t apr_brigade_length group___a_p_r___util___bucket___brigades.html g65075839e31fd85e2c80717f4e9e0461 (apr_bucket_brigade *bb, int read_all, apr_off_t *length) apr_status_t apr_brigade_flatten group___a_p_r___util___bucket___brigades.html g301aeb943e68ef4b99c1ae6a18dcf78e (apr_bucket_brigade *bb, char *c, apr_size_t *len) apr_status_t apr_brigade_pflatten group___a_p_r___util___bucket___brigades.html ga5da970af09d1a87e020db054f2d1c94 (apr_bucket_brigade *bb, char **c, apr_size_t *len, apr_pool_t *pool) apr_status_t apr_brigade_split_line group___a_p_r___util___bucket___brigades.html g257dece60dbdc910bc09e1fc0d7db622 (apr_bucket_brigade *bbOut, apr_bucket_brigade *bbIn, apr_read_type_e block, apr_off_t maxbytes) apr_status_t apr_brigade_to_iovec group___a_p_r___util___bucket___brigades.html g904bdc4a9a9c800d2d2b20b4ddefa6f7 (apr_bucket_brigade *b, struct iovec *vec, int *nvec) apr_status_t apr_brigade_vputstrs group___a_p_r___util___bucket___brigades.html g382871c1aec5cf9fbbcf19d67cff6b43 (apr_bucket_brigade *b, apr_brigade_flush flush, void *ctx, va_list va) apr_status_t apr_brigade_write group___a_p_r___util___bucket___brigades.html g7242dae50995fc1a9174476ca3053d99 (apr_bucket_brigade *b, apr_brigade_flush flush, void *ctx, const char *str, apr_size_t nbyte) apr_status_t apr_brigade_writev group___a_p_r___util___bucket___brigades.html gfc116a4359b717cd3a78a19ddf169486 (apr_bucket_brigade *b, apr_brigade_flush flush, void *ctx, const struct iovec *vec, apr_size_t nvec) apr_status_t apr_brigade_puts group___a_p_r___util___bucket___brigades.html g2d1fed26db94e3006223098737a06f5a (apr_bucket_brigade *bb, apr_brigade_flush flush, void *ctx, const char *str) apr_status_t apr_brigade_putc group___a_p_r___util___bucket___brigades.html g362999cb255297fd0fd433f03236302d (apr_bucket_brigade *b, apr_brigade_flush flush, void *ctx, const char c) apr_status_t apr_brigade_putstrs group___a_p_r___util___bucket___brigades.html g1f27949d92196cbf150b7d6256cbf4b7 (apr_bucket_brigade *b, apr_brigade_flush flush, void *ctx,...) apr_status_t apr_brigade_printf group___a_p_r___util___bucket___brigades.html g4120ba3834c545db3b9229d858e33b47 (apr_bucket_brigade *b, apr_brigade_flush flush, void *ctx, const char *fmt,...) apr_status_t apr_brigade_vprintf group___a_p_r___util___bucket___brigades.html g9e1af8c10946264e1bb37a3f56e4bfd8 (apr_bucket_brigade *b, apr_brigade_flush flush, void *ctx, const char *fmt, va_list va) apr_bucket * apr_brigade_insert_file group___a_p_r___util___bucket___brigades.html g7c4981f7050333a181e440e753c20555 (apr_bucket_brigade *bb, apr_file_t *f, apr_off_t start, apr_off_t len, apr_pool_t *p) apr_bucket_alloc_t * apr_bucket_alloc_create group___a_p_r___util___bucket___brigades.html g2d96fa729a17a86dc5221958e8c13c96 (apr_pool_t *p) apr_bucket_alloc_t * apr_bucket_alloc_create_ex group___a_p_r___util___bucket___brigades.html g252642139099350d0b987889d5c0868c (apr_allocator_t *allocator) void apr_bucket_alloc_destroy group___a_p_r___util___bucket___brigades.html gf5eb58cc232851c8449ba1d98d049a0a (apr_bucket_alloc_t *list) void * apr_bucket_alloc group___a_p_r___util___bucket___brigades.html ge47c2235a3740432f4a0990fccfe4102 (apr_size_t size, apr_bucket_alloc_t *list) void apr_bucket_free group___a_p_r___util___bucket___brigades.html g951beb3a8249648214e130ab06275a3a (void *block) apr_status_t apr_bucket_setaside_noop group___a_p_r___util___bucket___brigades.html ge6135b83d9f7bd7e1b60dbc761a3ca5f (apr_bucket *data, apr_pool_t *pool) apr_status_t apr_bucket_setaside_notimpl group___a_p_r___util___bucket___brigades.html gde52b057161f657a6b298d9c6a78b339 (apr_bucket *data, apr_pool_t *pool) apr_status_t apr_bucket_split_notimpl group___a_p_r___util___bucket___brigades.html g305766ff39440711da93e72f5b348a3a (apr_bucket *data, apr_size_t point) apr_status_t apr_bucket_copy_notimpl group___a_p_r___util___bucket___brigades.html g5fc17c10cee2abf02557669f6f507e89 (apr_bucket *e, apr_bucket **c) void apr_bucket_destroy_noop group___a_p_r___util___bucket___brigades.html g09221bea9541ca2340a4e8b5e1e7ac56 (void *data) apr_status_t apr_bucket_simple_split group___a_p_r___util___bucket___brigades.html g9fd8c7d9e42dd04b8f153072655e875c (apr_bucket *b, apr_size_t point) apr_status_t apr_bucket_simple_copy group___a_p_r___util___bucket___brigades.html g123c95e832734f92e6f1139b6a68cfa6 (apr_bucket *a, apr_bucket **b) apr_bucket * apr_bucket_shared_make group___a_p_r___util___bucket___brigades.html g562251ac5776e88f7384158b85e74be8 (apr_bucket *b, void *data, apr_off_t start, apr_size_t length) int apr_bucket_shared_destroy group___a_p_r___util___bucket___brigades.html g43c7dc7e3eb961a91bbc0b69a47e503c (void *data) apr_status_t apr_bucket_shared_split group___a_p_r___util___bucket___brigades.html g871e54ba20487a2085a73a673ffa4110 (apr_bucket *b, apr_size_t point) apr_status_t apr_bucket_shared_copy group___a_p_r___util___bucket___brigades.html g2e9a035d340ef6b4279b178eff614670 (apr_bucket *a, apr_bucket **b) apr_bucket * apr_bucket_eos_create group___a_p_r___util___bucket___brigades.html gac308b459ecdab87e94b12adad1b8760 (apr_bucket_alloc_t *list) apr_bucket * apr_bucket_eos_make group___a_p_r___util___bucket___brigades.html g06312ba339cb0ec1844b698d30e754c4 (apr_bucket *b) apr_bucket * apr_bucket_flush_create group___a_p_r___util___bucket___brigades.html g48347f3f7d5738cdb61fe35c25c09666 (apr_bucket_alloc_t *list) apr_bucket * apr_bucket_flush_make group___a_p_r___util___bucket___brigades.html gee543b95249a320a27ae9bb03e2c4f23 (apr_bucket *b) apr_bucket * apr_bucket_immortal_create group___a_p_r___util___bucket___brigades.html gd81543da24b144c0e100dd1e6d843adb (const char *buf, apr_size_t nbyte, apr_bucket_alloc_t *list) apr_bucket * apr_bucket_immortal_make group___a_p_r___util___bucket___brigades.html g33b21eb55cad9d28b5cdd40ad4181774 (apr_bucket *b, const char *buf, apr_size_t nbyte) apr_bucket * apr_bucket_transient_create group___a_p_r___util___bucket___brigades.html g554f2d87c718f30a9259d52c6f81a405 (const char *buf, apr_size_t nbyte, apr_bucket_alloc_t *list) apr_bucket * apr_bucket_transient_make group___a_p_r___util___bucket___brigades.html g7e1f9a0ae64781ff4430d08c25e6e831 (apr_bucket *b, const char *buf, apr_size_t nbyte) apr_bucket * apr_bucket_heap_create group___a_p_r___util___bucket___brigades.html gdde6843cfe311a60d290adc1d6635cac (const char *buf, apr_size_t nbyte, void(*free_func)(void *data), apr_bucket_alloc_t *list) apr_bucket * apr_bucket_heap_make group___a_p_r___util___bucket___brigades.html g71de285204d21507420068f05b12a541 (apr_bucket *b, const char *buf, apr_size_t nbyte, void(*free_func)(void *data)) apr_bucket * apr_bucket_pool_create group___a_p_r___util___bucket___brigades.html g154ea763ee9de4ccb8692b9e3b60ebb2 (const char *buf, apr_size_t length, apr_pool_t *pool, apr_bucket_alloc_t *list) apr_bucket * apr_bucket_pool_make group___a_p_r___util___bucket___brigades.html g01197c5b2cda6382354628cecdeae145 (apr_bucket *b, const char *buf, apr_size_t length, apr_pool_t *pool) apr_bucket * apr_bucket_mmap_create group___a_p_r___util___bucket___brigades.html gee338c7d218ce1fbbf8c1aefedcc0632 (apr_mmap_t *mm, apr_off_t start, apr_size_t length, apr_bucket_alloc_t *list) apr_bucket * apr_bucket_mmap_make group___a_p_r___util___bucket___brigades.html gb561ac92d1811e5a2589783536e64a1a (apr_bucket *b, apr_mmap_t *mm, apr_off_t start, apr_size_t length) apr_bucket * apr_bucket_socket_create group___a_p_r___util___bucket___brigades.html gcd9f08b40eb2204cd93b42e58338aeb2 (apr_socket_t *thissock, apr_bucket_alloc_t *list) apr_bucket * apr_bucket_socket_make group___a_p_r___util___bucket___brigades.html g2fffd4c4701ad55c6df27cdee0c47200 (apr_bucket *b, apr_socket_t *thissock) apr_bucket * apr_bucket_pipe_create group___a_p_r___util___bucket___brigades.html gb9ea07d5f9246e06c1bb3e76ee90cd71 (apr_file_t *thispipe, apr_bucket_alloc_t *list) apr_bucket * apr_bucket_pipe_make group___a_p_r___util___bucket___brigades.html ge7b4daa1318226beda4bf0eead2f5582 (apr_bucket *b, apr_file_t *thispipe) apr_bucket * apr_bucket_file_create group___a_p_r___util___bucket___brigades.html g421f96e8e9387a9c27fe010ebdee0202 (apr_file_t *fd, apr_off_t offset, apr_size_t len, apr_pool_t *p, apr_bucket_alloc_t *list) apr_bucket * apr_bucket_file_make group___a_p_r___util___bucket___brigades.html gcb716dea400092f2f8c84a3f0f6d3a10 (apr_bucket *b, apr_file_t *fd, apr_off_t offset, apr_size_t len, apr_pool_t *p) apr_status_t apr_bucket_file_enable_mmap group___a_p_r___util___bucket___brigades.html gb18ee46f66634c35ad79b6a74559cbb8 (apr_bucket *b, int enabled) const apr_bucket_type_t apr_bucket_type_flush group___a_p_r___util___bucket___brigades.html gecc113cfcc7751dfe70876437a2f51d7 const apr_bucket_type_t apr_bucket_type_eos group___a_p_r___util___bucket___brigades.html g829cac9b4843b85a902ddd64dffbfb12 const apr_bucket_type_t apr_bucket_type_file group___a_p_r___util___bucket___brigades.html g5f17aa7e616179411a06475ec09626e9 const apr_bucket_type_t apr_bucket_type_heap group___a_p_r___util___bucket___brigades.html g2c5608267ed7b860657f5a1c89c2f40d const apr_bucket_type_t apr_bucket_type_mmap group___a_p_r___util___bucket___brigades.html g63f9ce8e4d6e796921aad14a218a3b23 const apr_bucket_type_t apr_bucket_type_pool group___a_p_r___util___bucket___brigades.html g87bace819fdbf07c12497a8289b3567b const apr_bucket_type_t apr_bucket_type_pipe group___a_p_r___util___bucket___brigades.html g334a875abb2908364a40abbfa80c401f const apr_bucket_type_t apr_bucket_type_immortal group___a_p_r___util___bucket___brigades.html g391ac24b2c85969e8efa504588b364bb const apr_bucket_type_t apr_bucket_type_transient group___a_p_r___util___bucket___brigades.html g1692ced61c1966e67adc05ec2a69ce9b const apr_bucket_type_t apr_bucket_type_socket group___a_p_r___util___bucket___brigades.html ga6d9978cc10895bdf0a4686728822a84 APR_Util_Date Date routines group___a_p_r___util___date.html #define APR_DATE_BAD group___a_p_r___util___date.html g8be88b25f4b477ad13c4067c959411b0 int apr_date_checkmask group___a_p_r___util___date.html g6576e5747a46f262c54dc4286f65d6f8 (const char *data, const char *mask) apr_time_t apr_date_parse_http group___a_p_r___util___date.html gbd0ad0c1000ed8c95fb6a9660aed27c6 (const char *date) apr_time_t apr_date_parse_rfc group___a_p_r___util___date.html ga6d4a18ff9f40c37c0f145d063c50e96 (const char *date) APR_Util_DBD DBD routines group___a_p_r___util___d_b_d.html #define APR_DBD_TRANSACTION_COMMIT group___a_p_r___util___d_b_d.html gff6a26fb3b384bcb3a9172676c53590b #define APR_DBD_TRANSACTION_ROLLBACK group___a_p_r___util___d_b_d.html g60a8749e5172b692fd2e356b48ec922b #define APR_DBD_TRANSACTION_IGNORE_ERRORS group___a_p_r___util___d_b_d.html gd9dc523b0a3b8dea5b8c9b7b0c281ea2 struct apr_dbd_driver_t apr_dbd_driver_t group___a_p_r___util___d_b_d.html g91778287e3cd1b8ef8719ca2655e2bc8 struct apr_dbd_t apr_dbd_t group___a_p_r___util___d_b_d.html g4738c1f6340184987fc7806522c18ab8 struct apr_dbd_transaction_t apr_dbd_transaction_t group___a_p_r___util___d_b_d.html g92eb10d7ec8fdb3a39a7d6fdfffdf8fb struct apr_dbd_results_t apr_dbd_results_t group___a_p_r___util___d_b_d.html g6765891011818912e1b52fef773bfce6 struct apr_dbd_row_t apr_dbd_row_t group___a_p_r___util___d_b_d.html gb890e4650a1de51725142318825103a5 struct apr_dbd_prepared_t apr_dbd_prepared_t group___a_p_r___util___d_b_d.html g1f1179c6480a2ee0134f2cb881106cd3 apr_dbd_type_e group___a_p_r___util___d_b_d.html g19608fa5d518a5121bee23daacc5c230 APR_DBD_TYPE_TINY group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c230cc06ee0f3fe0c65b9f8265053550e4ee APR_DBD_TYPE_UTINY group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c230aa4f167bb26fa3e85b0d61f34713ebb6 APR_DBD_TYPE_SHORT group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c2300c38d32785a3cbddbe4ba692fdde16ee APR_DBD_TYPE_USHORT group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c230f3518efb67af10100b92578b5c867c9c APR_DBD_TYPE_INT group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c2304df919bac6f5b56257bfe63ed3e5968c APR_DBD_TYPE_UINT group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c23058b37a24a35ddf144a9132a9837ed3d3 APR_DBD_TYPE_LONG group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c230dd86aa288504ec2d4194f35a3a8ac55a APR_DBD_TYPE_ULONG group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c2304186d52d5ce586cd7559a0ae8737cbb7 APR_DBD_TYPE_LONGLONG group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c2308821461a3390bd0a001e714d2180ae6c APR_DBD_TYPE_ULONGLONG group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c230d1907d3eb1235acfa8a971fce43711c5 APR_DBD_TYPE_FLOAT group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c23014281587071981d4e6b25de5bb747e98 APR_DBD_TYPE_DOUBLE group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c23077c20702c7c6566369d3ccc894eb9cd8 APR_DBD_TYPE_STRING group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c2304c9490a29ed882c46fa738e7cddede44 APR_DBD_TYPE_TEXT group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c230e06c20e9edcd46964dc26bb43134e0e6 APR_DBD_TYPE_TIME group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c2302ad65674a89072f4582e97d0a4fad61d APR_DBD_TYPE_DATE group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c230b96a2b4b2b1fb94a7faeb01065d77835 APR_DBD_TYPE_DATETIME group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c23077bb0dd82ed396f7056ba2aaddd44265 APR_DBD_TYPE_TIMESTAMP group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c2305cffb0a0cc618ab3d0c187ca176d61ad APR_DBD_TYPE_ZTIMESTAMP group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c230e4db1948f1f1ef7651c5f01c12d1e56a APR_DBD_TYPE_BLOB group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c23060d6a6ab49b20a306443b7a9ad8c6f11 APR_DBD_TYPE_CLOB group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c230df428a7365d71eacdf24a89c202c1f72 APR_DBD_TYPE_NULL group___a_p_r___util___d_b_d.html gg19608fa5d518a5121bee23daacc5c230706a286af4fe4a9b97ee68adc11cd6cc apr_status_t apr_dbd_init group___a_p_r___util___d_b_d.html g7969f50d38bda792cbef72136300a574 (apr_pool_t *pool) apr_status_t apr_dbd_get_driver group___a_p_r___util___d_b_d.html g8ba85faccf7e8eea525812f8f2dfed25 (apr_pool_t *pool, const char *name, const apr_dbd_driver_t **driver) apr_status_t apr_dbd_open_ex group___a_p_r___util___d_b_d.html gbddb1fdcb2f8a5f5b83127485c78e8ae (const apr_dbd_driver_t *driver, apr_pool_t *pool, const char *params, apr_dbd_t **handle, const char **error) apr_status_t apr_dbd_open group___a_p_r___util___d_b_d.html geff12b01f78ac78721acc4a0a318e673 (const apr_dbd_driver_t *driver, apr_pool_t *pool, const char *params, apr_dbd_t **handle) apr_status_t apr_dbd_close group___a_p_r___util___d_b_d.html g4abe00d844cd547cc69880fe14af4aca (const apr_dbd_driver_t *driver, apr_dbd_t *handle) const char * apr_dbd_name group___a_p_r___util___d_b_d.html g7a14e0073a36bd97dd82baa5f20e874c (const apr_dbd_driver_t *driver) void * apr_dbd_native_handle group___a_p_r___util___d_b_d.html gb2a238e15942e66a2b92836c392d5334 (const apr_dbd_driver_t *driver, apr_dbd_t *handle) int apr_dbd_check_conn group___a_p_r___util___d_b_d.html ge3fca3b3c05f835f9849668a338d82d1 (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle) int apr_dbd_set_dbname group___a_p_r___util___d_b_d.html gfecb22f98684f29e579fd73eb58b1e86 (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, const char *name) int apr_dbd_transaction_start group___a_p_r___util___d_b_d.html g1c401df12087d3bf1f15a9b80a8f572d (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_transaction_t **trans) int apr_dbd_transaction_end group___a_p_r___util___d_b_d.html g6f3a5d6b351cd05646c9399a64eafeb5 (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_transaction_t *trans) int apr_dbd_transaction_mode_get group___a_p_r___util___d_b_d.html g2a54cfffc3a348a424002eba937b5853 (const apr_dbd_driver_t *driver, apr_dbd_transaction_t *trans) int apr_dbd_transaction_mode_set group___a_p_r___util___d_b_d.html gb78c0464926311ef64882adfee2f0f42 (const apr_dbd_driver_t *driver, apr_dbd_transaction_t *trans, int mode) int apr_dbd_query group___a_p_r___util___d_b_d.html g40dbb6bb3f3f171f3443d21f3594a66a (const apr_dbd_driver_t *driver, apr_dbd_t *handle, int *nrows, const char *statement) int apr_dbd_select group___a_p_r___util___d_b_d.html g144d354a36140fade933c1ef72661004 (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_results_t **res, const char *statement, int random) int apr_dbd_num_cols group___a_p_r___util___d_b_d.html g77d1bccedee2c61dc96de6852f3a7cc4 (const apr_dbd_driver_t *driver, apr_dbd_results_t *res) int apr_dbd_num_tuples group___a_p_r___util___d_b_d.html g2c9f511aba325f8904e69158eacd3987 (const apr_dbd_driver_t *driver, apr_dbd_results_t *res) int apr_dbd_get_row group___a_p_r___util___d_b_d.html gd4cdc5f4e8981b93f5a467a8c8a768f1 (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_results_t *res, apr_dbd_row_t **row, int rownum) const char * apr_dbd_get_entry group___a_p_r___util___d_b_d.html g1d6d3b38a0d677e3d65501074832a5b8 (const apr_dbd_driver_t *driver, apr_dbd_row_t *row, int col) const char * apr_dbd_get_name group___a_p_r___util___d_b_d.html g8eac8897bd1211564166b08492f458d7 (const apr_dbd_driver_t *driver, apr_dbd_results_t *res, int col) const char * apr_dbd_error group___a_p_r___util___d_b_d.html gffa947c657862c2996707da339482287 (const apr_dbd_driver_t *driver, apr_dbd_t *handle, int errnum) const char * apr_dbd_escape group___a_p_r___util___d_b_d.html gb5806cd6535aaeafe8e9f79ef2cc90c9 (const apr_dbd_driver_t *driver, apr_pool_t *pool, const char *string, apr_dbd_t *handle) int apr_dbd_prepare group___a_p_r___util___d_b_d.html gcf21412447c4357c64d1e9200a0f5eec (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, const char *query, const char *label, apr_dbd_prepared_t **statement) int apr_dbd_pquery group___a_p_r___util___d_b_d.html g1c4b005abda896011ca414679edfe112 (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, int *nrows, apr_dbd_prepared_t *statement, int nargs, const char **args) int apr_dbd_pselect group___a_p_r___util___d_b_d.html g9f9ee377c2d335f8f1a9bffe4bf7194f (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_results_t **res, apr_dbd_prepared_t *statement, int random, int nargs, const char **args) int apr_dbd_pvquery group___a_p_r___util___d_b_d.html g52ad74205d0afa92098e546303b9ee4c (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, int *nrows, apr_dbd_prepared_t *statement,...) int apr_dbd_pvselect group___a_p_r___util___d_b_d.html gfbd4dbbddfa76586f172ec0832d4fd37 (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_results_t **res, apr_dbd_prepared_t *statement, int random,...) int apr_dbd_pbquery group___a_p_r___util___d_b_d.html g7933396b01b4676ae2835d1f09d9a1be (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, int *nrows, apr_dbd_prepared_t *statement, const void **args) int apr_dbd_pbselect group___a_p_r___util___d_b_d.html g19b88ed11097a2d07bef1e31619fff0a (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_results_t **res, apr_dbd_prepared_t *statement, int random, const void **args) int apr_dbd_pvbquery group___a_p_r___util___d_b_d.html g27d1ca34ce4064bb14ac3cb315ba8d14 (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, int *nrows, apr_dbd_prepared_t *statement,...) int apr_dbd_pvbselect group___a_p_r___util___d_b_d.html gcfe85d56d78d5e4767684238287b700b (const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_results_t **res, apr_dbd_prepared_t *statement, int random,...) apr_status_t apr_dbd_datum_get group___a_p_r___util___d_b_d.html g67e57ef4eb7952df79ceaa6e92767d41 (const apr_dbd_driver_t *driver, apr_dbd_row_t *row, int col, apr_dbd_type_e type, void *data) APR_Util_DBM DBM routines group___a_p_r___util___d_b_m.html APR_Util_DBM_SDBM apr_datum_t #define APR_DBM_READONLY group___a_p_r___util___d_b_m.html gcd6e9c0783bd0c232bdd02b14655b6b1 #define APR_DBM_READWRITE group___a_p_r___util___d_b_m.html gf693166e76d6f84b12a0d75307687053 #define APR_DBM_RWCREATE group___a_p_r___util___d_b_m.html gbf461a27dab1f4cc7405e891d2ad6522 #define APR_DBM_RWTRUNC group___a_p_r___util___d_b_m.html g8bffe207158704162c24fa74dc1b9264 struct apr_dbm_t apr_dbm_t group___a_p_r___util___d_b_m.html g47f6ff771143ed7b7987c686c20c8536 apr_status_t apr_dbm_open_ex group___a_p_r___util___d_b_m.html gf7295ba8157f487b78319e168e1344b4 (apr_dbm_t **dbm, const char *type, const char *name, apr_int32_t mode, apr_fileperms_t perm, apr_pool_t *cntxt) apr_status_t apr_dbm_open group___a_p_r___util___d_b_m.html gb2d9cc87f4922ae11a175556ec66e390 (apr_dbm_t **dbm, const char *name, apr_int32_t mode, apr_fileperms_t perm, apr_pool_t *cntxt) void apr_dbm_close group___a_p_r___util___d_b_m.html gad1e796c7436bf855ce6ec3c567eb3eb (apr_dbm_t *dbm) apr_status_t apr_dbm_fetch group___a_p_r___util___d_b_m.html gc990e695db20e3fa6998089081685196 (apr_dbm_t *dbm, apr_datum_t key, apr_datum_t *pvalue) apr_status_t apr_dbm_store group___a_p_r___util___d_b_m.html g014a6acf6f86aaac5fc44af5b8951051 (apr_dbm_t *dbm, apr_datum_t key, apr_datum_t value) apr_status_t apr_dbm_delete group___a_p_r___util___d_b_m.html g3b218881f3bb9f8e909f32d99ae2ad34 (apr_dbm_t *dbm, apr_datum_t key) int apr_dbm_exists group___a_p_r___util___d_b_m.html g20379004362aeeef11166bdaa8c47d1e (apr_dbm_t *dbm, apr_datum_t key) apr_status_t apr_dbm_firstkey group___a_p_r___util___d_b_m.html ge5428eaa8df9a036212c8fad60e95e3c (apr_dbm_t *dbm, apr_datum_t *pkey) apr_status_t apr_dbm_nextkey group___a_p_r___util___d_b_m.html g92b8233ccf421b89d2144f834dd6f9a6 (apr_dbm_t *dbm, apr_datum_t *pkey) void apr_dbm_freedatum group___a_p_r___util___d_b_m.html gcd9f6bc4a633720ac882daba9e0d9873 (apr_dbm_t *dbm, apr_datum_t data) char * apr_dbm_geterror group___a_p_r___util___d_b_m.html g597bd9e35de9575afb55b3326789c0f3 (apr_dbm_t *dbm, int *errcode, char *errbuf, apr_size_t errbufsize) apr_status_t apr_dbm_get_usednames_ex group___a_p_r___util___d_b_m.html g7a3a1bd1ece38d90739ecb7cf72bf4fb (apr_pool_t *pool, const char *type, const char *pathname, const char **used1, const char **used2) void apr_dbm_get_usednames group___a_p_r___util___d_b_m.html g1ee45897c5e1b0718dfa4bd35a75dbe1 (apr_pool_t *pool, const char *pathname, const char **used1, const char **used2) APR_Util_Hook Hook Functions group___a_p_r___util___hook.html APR_Util_OPT_HOOK #define APR_IMPLEMENT_HOOK_GET_PROTO group___a_p_r___util___hook.html g832a6d3b73a43b3f7c58c5702ddccce9 (ns, link, name) #define APR_DECLARE_EXTERNAL_HOOK group___a_p_r___util___hook.html g69298243d3c4ffb4627fd3d04b522f44 (ns, link, ret, name, args) #define APR_HOOK_STRUCT group___a_p_r___util___hook.html ga936f5a0d1164d301aa157de6023fae5 (members) #define APR_HOOK_LINK group___a_p_r___util___hook.html g5699f73166bae88b6f6ac0bf7618b0f6 (name) #define APR_IMPLEMENT_EXTERNAL_HOOK_BASE group___a_p_r___util___hook.html g2500abadaa54b3a9d6ec25ff33a6b0cc (ns, link, name) #define APR_IMPLEMENT_EXTERNAL_HOOK_VOID group___a_p_r___util___hook.html g2d11a43b6431ec568cc1647da4a2079c (ns, link, name, args_decl, args_use) #define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL group___a_p_r___util___hook.html gb466280bdabe0cc2ee5880cbb512fa3d (ns, link, ret, name, args_decl, args_use, ok, decline) #define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST group___a_p_r___util___hook.html g0420a2aa9ca6b3c1638bdb76025ecc57 (ns, link, ret, name, args_decl, args_use, decline) #define APR_HOOK_REALLY_FIRST group___a_p_r___util___hook.html gb004dcbfff32997deb15040e48f07e92 #define APR_HOOK_FIRST group___a_p_r___util___hook.html g564dea4803813674cb6b742f65a3d2b2 #define APR_HOOK_MIDDLE group___a_p_r___util___hook.html gb9a5d50c3478c4d640deccec6b0ce879 #define APR_HOOK_LAST group___a_p_r___util___hook.html ga610a95f03d7b4aee922c28b0919f028 #define APR_HOOK_REALLY_LAST group___a_p_r___util___hook.html ge3c7d2cf35e8c89828dfff7a85b0ed77 void apr_hook_sort_register group___a_p_r___util___hook.html g04843fe00dc3c08c23130fef3ba1260c (const char *szHookName, apr_array_header_t **aHooks) void apr_hook_sort_all group___a_p_r___util___hook.html g1e0b6cf91dac5417c1b9cbd1b46b8991 (void) void apr_hook_debug_show group___a_p_r___util___hook.html g1de31557683f53c2a07f73990962c585 (const char *szName, const char *const *aszPre, const char *const *aszSucc) void apr_hook_deregister_all group___a_p_r___util___hook.html g5d20451da75574c8433feb1bd5b2ce10 (void) apr_pool_t * apr_hook_global_pool group___a_p_r___util___hook.html g8911bb699a5f03ad3c36d579ca0eca23 int apr_hook_debug_enabled group___a_p_r___util___hook.html g59309caeb9b47d921727530494f264be const char * apr_hook_debug_current group___a_p_r___util___hook.html g37be3c217439ceddbda16054b020a658 APR_Util_LDAP LDAP group___a_p_r___util___l_d_a_p.html #define APR_HAS_LDAP group___a_p_r___util___l_d_a_p.html gf8d199208a26c4ee4c6db46764675f01 #define APR_HAS_NETSCAPE_LDAPSDK group___a_p_r___util___l_d_a_p.html g5ee3703cda47ea3fa8bb82b94341742c #define APR_HAS_SOLARIS_LDAPSDK group___a_p_r___util___l_d_a_p.html gdfd79510be01b585d07d3a0cf517377a #define APR_HAS_NOVELL_LDAPSDK group___a_p_r___util___l_d_a_p.html g61438dcd7b6c386fab3b3da59c884f2c #define APR_HAS_MOZILLA_LDAPSDK group___a_p_r___util___l_d_a_p.html g6e9f26af3e9801f4f3dfb6ccb51ab4fe #define APR_HAS_OPENLDAP_LDAPSDK group___a_p_r___util___l_d_a_p.html g53eb8a677574757eab3aeef411c79e82 #define APR_HAS_MICROSOFT_LDAPSDK group___a_p_r___util___l_d_a_p.html g4d353111e4fc3f79a7a9a4d9a37b4099 #define APR_HAS_TIVOLI_LDAPSDK group___a_p_r___util___l_d_a_p.html gd46b9586b73ac6e51a02831275f8b04e #define APR_HAS_ZOS_LDAPSDK group___a_p_r___util___l_d_a_p.html gaf7c4fb35087815ead3905b61df10791 #define APR_HAS_OTHER_LDAPSDK group___a_p_r___util___l_d_a_p.html g23badc30790c00670f7d32485aef644f APR_Util_MD4 MD4 Library group___a_p_r___util___m_d4.html apr_md4_ctx_t #define APR_MD4_DIGESTSIZE group___a_p_r___util___m_d4.html g84489272090a11902d831c288c81c20f struct apr_md4_ctx_t apr_md4_ctx_t group___a_p_r___util___m_d4.html g273e0d8ad064dba908e46bde074af0d8 apr_status_t apr_md4_init group___a_p_r___util___m_d4.html g3f2ae0d6d93b1dd7a5efe11c241aee4b (apr_md4_ctx_t *context) apr_status_t apr_md4_set_xlate group___a_p_r___util___m_d4.html g86138845d199bf164093670fb2a803c3 (apr_md4_ctx_t *context, apr_xlate_t *xlate) apr_status_t apr_md4_update group___a_p_r___util___m_d4.html gcbdaec9b84aa725c29fcaac196065556 (apr_md4_ctx_t *context, const unsigned char *input, apr_size_t inputLen) apr_status_t apr_md4_final group___a_p_r___util___m_d4.html g292ac23cbfedc3ff227ced262ec09b30 (unsigned char digest[APR_MD4_DIGESTSIZE], apr_md4_ctx_t *context) apr_status_t apr_md4 group___a_p_r___util___m_d4.html g8f11756aee7a293e2b05f9b1ed112431 (unsigned char digest[APR_MD4_DIGESTSIZE], const unsigned char *input, apr_size_t inputLen) APR_MD5 MD5 Routines group___a_p_r___m_d5.html apr_md5_ctx_t #define APR_MD5_DIGESTSIZE group___a_p_r___m_d5.html g0bb65e74ccdddca6ef75e886084e52dc struct apr_md5_ctx_t apr_md5_ctx_t group___a_p_r___m_d5.html gcb4d6bf2cf0a29553a63273ff0a6fe69 apr_status_t apr_md5_init group___a_p_r___m_d5.html g7a0502bfc466821beabe4876987fbcb5 (apr_md5_ctx_t *context) apr_status_t apr_md5_set_xlate group___a_p_r___m_d5.html gd80cbd97ca3197a237bbed006c033a57 (apr_md5_ctx_t *context, apr_xlate_t *xlate) apr_status_t apr_md5_update group___a_p_r___m_d5.html g1ae4e5c171ae98953e716ac02f026ed2 (apr_md5_ctx_t *context, const void *input, apr_size_t inputLen) apr_status_t apr_md5_final group___a_p_r___m_d5.html g245fb83991257b096ebadd2b1b8cef62 (unsigned char digest[APR_MD5_DIGESTSIZE], apr_md5_ctx_t *context) apr_status_t apr_md5 group___a_p_r___m_d5.html gc98c04b75053ae04907ca325f46df955 (unsigned char digest[APR_MD5_DIGESTSIZE], const void *input, apr_size_t inputLen) apr_status_t apr_md5_encode group___a_p_r___m_d5.html gf902e64b62e4056c6dcc1594b2dca645 (const char *password, const char *salt, char *result, apr_size_t nbytes) apr_status_t apr_password_validate group___a_p_r___m_d5.html g9ea1aa7e468de57e603d6e1d1b1516f2 (const char *passwd, const char *hash) APR_Util_MC Memcached Client Routines group___a_p_r___util___m_c.html apr_memcache_server_t apr_memcache_t apr_memcache_value_t apr_memcache_stats_t struct apr_memcache_conn_t apr_memcache_conn_t group___a_p_r___util___m_c.html gc4fabf6e3b3efb959eca48f473b73825 struct apr_memcache_server_t apr_memcache_server_t group___a_p_r___util___m_c.html ga7b43f2275de0fc700cc05e2467bbc4b apr_uint32_t(* apr_memcache_hash_func group___a_p_r___util___m_c.html g27f0376041ada9a7a8efc657b543cd24 )(void *baton, const char *data, const apr_size_t data_len) struct apr_memcache_t apr_memcache_t group___a_p_r___util___m_c.html g5bec59e17d9a29de2ffb38afae165371 apr_memcache_server_t *(* apr_memcache_server_func group___a_p_r___util___m_c.html ge9144ffbb456332c7edbe0dd09759bba )(void *baton, apr_memcache_t *mc, const apr_uint32_t hash) apr_memcache_server_status_t group___a_p_r___util___m_c.html g3b18c7c3f0ecabb930b78aa549c2e2e8 APR_MC_SERVER_LIVE group___a_p_r___util___m_c.html gg3b18c7c3f0ecabb930b78aa549c2e2e8211c8d3d7a4a187b5c8f936a6929d007 APR_MC_SERVER_DEAD group___a_p_r___util___m_c.html gg3b18c7c3f0ecabb930b78aa549c2e2e86dffa918006f926e0fdf0074f4bdac28 apr_uint32_t apr_memcache_hash group___a_p_r___util___m_c.html g945a83f7f56800b18243ec5933c16593 (apr_memcache_t *mc, const char *data, const apr_size_t data_len) apr_uint32_t apr_memcache_hash_crc32 group___a_p_r___util___m_c.html g103ab58d59ca8e4668d31631ee0d3222 (void *baton, const char *data, const apr_size_t data_len) apr_uint32_t apr_memcache_hash_default group___a_p_r___util___m_c.html g6e2fa2e270332d2cdb44abf775f8022e (void *baton, const char *data, const apr_size_t data_len) apr_memcache_server_t * apr_memcache_find_server_hash group___a_p_r___util___m_c.html g22fe48405f08eaded915f5205d9fc221 (apr_memcache_t *mc, const apr_uint32_t hash) apr_memcache_server_t * apr_memcache_find_server_hash_default group___a_p_r___util___m_c.html g0c1f483d299b083e0c06e9ec1c9eb316 (void *baton, apr_memcache_t *mc, const apr_uint32_t hash) apr_status_t apr_memcache_add_server group___a_p_r___util___m_c.html g9d6381d9d9f8f83f4fa5450cc8066590 (apr_memcache_t *mc, apr_memcache_server_t *server) apr_memcache_server_t * apr_memcache_find_server group___a_p_r___util___m_c.html g76b77e042ced1bae3b23f71696482a7e (apr_memcache_t *mc, const char *host, apr_port_t port) apr_status_t apr_memcache_enable_server group___a_p_r___util___m_c.html gfe4824659cbe261409b57a48d85c34e3 (apr_memcache_t *mc, apr_memcache_server_t *ms) apr_status_t apr_memcache_disable_server group___a_p_r___util___m_c.html ge8a982e8794a08a78264ec3a966797fc (apr_memcache_t *mc, apr_memcache_server_t *ms) apr_status_t apr_memcache_server_create group___a_p_r___util___m_c.html g18ddd72bc1ab5edb0a08a8f26f193bd3 (apr_pool_t *p, const char *host, apr_port_t port, apr_uint32_t min, apr_uint32_t smax, apr_uint32_t max, apr_uint32_t ttl, apr_memcache_server_t **ns) apr_status_t apr_memcache_create group___a_p_r___util___m_c.html g5a510d8ac3f5bf12cf2da1a445f4854b (apr_pool_t *p, apr_uint16_t max_servers, apr_uint32_t flags, apr_memcache_t **mc) apr_status_t apr_memcache_getp group___a_p_r___util___m_c.html gc41597ff979e7a181da459398196196f (apr_memcache_t *mc, apr_pool_t *p, const char *key, char **baton, apr_size_t *len, apr_uint16_t *flags) void apr_memcache_add_multget_key group___a_p_r___util___m_c.html gc94d47eedb9baebe823b2e5eeed54157 (apr_pool_t *data_pool, const char *key, apr_hash_t **values) apr_status_t apr_memcache_multgetp group___a_p_r___util___m_c.html g4a5beadb98954331896e95c35324b0fc (apr_memcache_t *mc, apr_pool_t *temp_pool, apr_pool_t *data_pool, apr_hash_t *values) apr_status_t apr_memcache_set group___a_p_r___util___m_c.html ga5bbe2c60302a689773d6a70da8f99fb (apr_memcache_t *mc, const char *key, char *baton, const apr_size_t data_size, apr_uint32_t timeout, apr_uint16_t flags) apr_status_t apr_memcache_add group___a_p_r___util___m_c.html g3c150706f243bf2b9cd89152d416ee56 (apr_memcache_t *mc, const char *key, char *baton, const apr_size_t data_size, apr_uint32_t timeout, apr_uint16_t flags) apr_status_t apr_memcache_replace group___a_p_r___util___m_c.html g48bf7ec0908e417975fb0330021b65ab (apr_memcache_t *mc, const char *key, char *data, const apr_size_t data_size, apr_uint32_t timeout, apr_uint16_t flags) apr_status_t apr_memcache_delete group___a_p_r___util___m_c.html g97d2c5be42ef773ba82fd8293b219ece (apr_memcache_t *mc, const char *key, apr_uint32_t timeout) apr_status_t apr_memcache_incr group___a_p_r___util___m_c.html g2cfc95fe963f2d4190996153a2ddb748 (apr_memcache_t *mc, const char *key, apr_int32_t n, apr_uint32_t *nv) apr_status_t apr_memcache_decr group___a_p_r___util___m_c.html gcf93837a1fd4c3d230644098f3043a39 (apr_memcache_t *mc, const char *key, apr_int32_t n, apr_uint32_t *new_value) apr_status_t apr_memcache_version group___a_p_r___util___m_c.html g1d1b9478138b907eb9c10576cb1653ff (apr_memcache_server_t *ms, apr_pool_t *p, char **baton) apr_status_t apr_memcache_stats group___a_p_r___util___m_c.html gd81ba4ef97f7dd64e37a0fbb09677859 (apr_memcache_server_t *ms, apr_pool_t *p, apr_memcache_stats_t **stats) APR_Util_Opt Optional Functions group___a_p_r___util___opt.html #define APR_OPTIONAL_FN_TYPE group___a_p_r___util___opt.html g987fcf75505450f1b4ff9d7b3a7ff5d3 (name) #define APR_DECLARE_OPTIONAL_FN group___a_p_r___util___opt.html gf3ff372e28978d4ce0be7517ca2fddbd (ret, name, args) #define APR_REGISTER_OPTIONAL_FN group___a_p_r___util___opt.html gb611deabd6e78b5f666071e8cbdcc736 (name) #define APR_RETRIEVE_OPTIONAL_FN group___a_p_r___util___opt.html g35f2df25ca06248d2fdd3e7463446418 (name) void( apr_opt_fn_t group___a_p_r___util___opt.html g35e08c2dbf593e3dc5a2cb0fdc8cd637 )(void) void apr_dynamic_fn_register group___a_p_r___util___opt.html ga9c7d3cc32128521274543c384e9698d (const char *szName, apr_opt_fn_t *pfn) apr_opt_fn_t * apr_dynamic_fn_retrieve group___a_p_r___util___opt.html g1ecfa6a6ced7332d03b5867735a5e49d (const char *szName) APR_Util_OPT_HOOK Optional Hook Functions group___a_p_r___util___o_p_t___h_o_o_k.html #define APR_OPTIONAL_HOOK group___a_p_r___util___o_p_t___h_o_o_k.html g808d07f9a3e5df6517ba027972c79e4f (ns, name, pfn, aszPre, aszSucc, nOrder) #define APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL group___a_p_r___util___o_p_t___h_o_o_k.html g3e6fa7b8e9ce140b26d8f6ce34e6ae82 (ns, link, ret, name, args_decl, args_use, ok, decline) void apr_optional_hook_add group___a_p_r___util___o_p_t___h_o_o_k.html gff32812046580ae53b0368918374a3b6 (const char *szName, void(*pfn)(void), const char *const *aszPre, const char *const *aszSucc, int nOrder) apr_array_header_t * apr_optional_hook_get group___a_p_r___util___o_p_t___h_o_o_k.html ge7cfa7b32c41fb38eb19f0bba85abfeb (const char *szName) APR_Util_FIFO Thread Safe FIFO bounded queue group___a_p_r___util___f_i_f_o.html struct apr_queue_t apr_queue_t group___a_p_r___util___f_i_f_o.html g8c74c22abf47b63555a2109b06f83abb apr_status_t apr_queue_create group___a_p_r___util___f_i_f_o.html g9c8c5ec3d8779a6c2ffffb8b74f784c7 (apr_queue_t **queue, unsigned int queue_capacity, apr_pool_t *a) apr_status_t apr_queue_push group___a_p_r___util___f_i_f_o.html g220fffb8eb2f23aa2fe626b64076df88 (apr_queue_t *queue, void *data) apr_status_t apr_queue_pop group___a_p_r___util___f_i_f_o.html g302387f5afb71d3c771b76448088bd34 (apr_queue_t *queue, void **data) apr_status_t apr_queue_trypush group___a_p_r___util___f_i_f_o.html gba8216476d7e5abc3a5ec8a47adf96d5 (apr_queue_t *queue, void *data) apr_status_t apr_queue_trypop group___a_p_r___util___f_i_f_o.html g128207222433384f286f61ec806f4af8 (apr_queue_t *queue, void **data) unsigned int apr_queue_size group___a_p_r___util___f_i_f_o.html gf342a2e2ec195a30d6d8c9d95fbfbc30 (apr_queue_t *queue) apr_status_t apr_queue_interrupt_all group___a_p_r___util___f_i_f_o.html g8757c7f87105e6ff4cf1ea5ac28dd26f (apr_queue_t *queue) apr_status_t apr_queue_term group___a_p_r___util___f_i_f_o.html gbb8115bceb96a41df3e21544ce79bc68 (apr_queue_t *queue) APR_Util_RL Resource List Routines group___a_p_r___util___r_l.html struct apr_reslist_t apr_reslist_t group___a_p_r___util___r_l.html g670f6719dfeffe1037e063eaab7b82ac apr_status_t(* apr_reslist_constructor group___a_p_r___util___r_l.html gb43e73c2fb526476d3e56d51f5aa214c )(void **resource, void *params, apr_pool_t *pool) apr_status_t(* apr_reslist_destructor group___a_p_r___util___r_l.html g60813240d319787f0430ae3171af838a )(void *resource, void *params, apr_pool_t *pool) apr_status_t apr_reslist_create group___a_p_r___util___r_l.html g608ebcddce542603a7f1d3cf51ae8d3c (apr_reslist_t **reslist, int min, int smax, int hmax, apr_interval_time_t ttl, apr_reslist_constructor con, apr_reslist_destructor de, void *params, apr_pool_t *pool) apr_status_t apr_reslist_destroy group___a_p_r___util___r_l.html g103e0cbac6c5da7cb93d4e52799233cb (apr_reslist_t *reslist) apr_status_t apr_reslist_acquire group___a_p_r___util___r_l.html gdfbb592b31ff9215f45d3280636e41d7 (apr_reslist_t *reslist, void **resource) apr_status_t apr_reslist_release group___a_p_r___util___r_l.html gf65ca1701994a0323df639cdb4a8d8b2 (apr_reslist_t *reslist, void *resource) void apr_reslist_timeout_set group___a_p_r___util___r_l.html gfe06c964d04a568f2625fb5a9ba7bad6 (apr_reslist_t *reslist, apr_interval_time_t timeout) apr_uint32_t apr_reslist_acquired_count group___a_p_r___util___r_l.html gc37fbbcbc8a98ba9ed017638a2c6c1b7 (apr_reslist_t *reslist) apr_status_t apr_reslist_invalidate group___a_p_r___util___r_l.html g346c0604115a9659cf23ed0cc781f7a9 (apr_reslist_t *reslist, void *resource) APR_Util_RMM Relocatable Memory Management Routines group___a_p_r___util___r_m_m.html struct apr_rmm_t apr_rmm_t group___a_p_r___util___r_m_m.html gdb4d418c417ece33c4430ba9df59070a apr_size_t apr_rmm_off_t group___a_p_r___util___r_m_m.html g70b508c81a0bc75350efdefb3410af12 apr_status_t apr_rmm_init group___a_p_r___util___r_m_m.html g65ebaca1a86f0667156592f40b81b681 (apr_rmm_t **rmm, apr_anylock_t *lock, void *membuf, apr_size_t memsize, apr_pool_t *cont) apr_status_t apr_rmm_destroy group___a_p_r___util___r_m_m.html g8ccae93038489f2acb7588292df5d80a (apr_rmm_t *rmm) apr_status_t apr_rmm_attach group___a_p_r___util___r_m_m.html gdf144b4071c5c4d85cded37ca0e58dff (apr_rmm_t **rmm, apr_anylock_t *lock, void *membuf, apr_pool_t *cont) apr_status_t apr_rmm_detach group___a_p_r___util___r_m_m.html g2171746dcfa1e0f07717224ad106091e (apr_rmm_t *rmm) apr_rmm_off_t apr_rmm_malloc group___a_p_r___util___r_m_m.html g31e42a7c40bbd3f7f132eaf347a79d32 (apr_rmm_t *rmm, apr_size_t reqsize) apr_rmm_off_t apr_rmm_realloc group___a_p_r___util___r_m_m.html g78561452a8fb3fef18f1203efaa0b92f (apr_rmm_t *rmm, void *entity, apr_size_t reqsize) apr_rmm_off_t apr_rmm_calloc group___a_p_r___util___r_m_m.html g12ff2a4c23548e2f1616a17734defaf8 (apr_rmm_t *rmm, apr_size_t reqsize) apr_status_t apr_rmm_free group___a_p_r___util___r_m_m.html gd22b65c95d0964e37aecd4134294b016 (apr_rmm_t *rmm, apr_rmm_off_t entity) void * apr_rmm_addr_get group___a_p_r___util___r_m_m.html g6bf67e9f2d08f9f36d2c420648d8d3a0 (apr_rmm_t *rmm, apr_rmm_off_t entity) apr_rmm_off_t apr_rmm_offset_get group___a_p_r___util___r_m_m.html g3ed2e880ebc695aa8dd241e21b5a666e (apr_rmm_t *rmm, void *entity) apr_size_t apr_rmm_overhead_get group___a_p_r___util___r_m_m.html ge638ec990cb1600f6f70a8b3a1e07ff8 (int n) APR_Util_DBM_SDBM SDBM library group___a_p_r___util___d_b_m___s_d_b_m.html apr_sdbm_datum_t #define APR_SDBM_DIRFEXT group___a_p_r___util___d_b_m___s_d_b_m.html gfabaf97932efa0eebfb1cc6b692a111f #define APR_SDBM_PAGFEXT group___a_p_r___util___d_b_m___s_d_b_m.html ga03fa1d1183240ca0845c54cc07df557 #define APR_SDBM_INSERT group___a_p_r___util___d_b_m___s_d_b_m.html gd42d896bab08b5e210f489fa59656807 #define APR_SDBM_REPLACE group___a_p_r___util___d_b_m___s_d_b_m.html g84e2252c9ddf5e6c64ed1be43d2d0e53 #define APR_SDBM_INSERTDUP group___a_p_r___util___d_b_m___s_d_b_m.html g64cd385609059cf151e54c7046d92ec3 struct apr_sdbm_t apr_sdbm_t group___a_p_r___util___d_b_m___s_d_b_m.html gf24cdea6e4884036a40484259efa68c6 apr_status_t apr_sdbm_open group___a_p_r___util___d_b_m___s_d_b_m.html g08c6121b4159ae86cec6e915e1e5d758 (apr_sdbm_t **db, const char *name, apr_int32_t mode, apr_fileperms_t perms, apr_pool_t *p) apr_status_t apr_sdbm_close group___a_p_r___util___d_b_m___s_d_b_m.html gf684c3a70d2c9ebe02bb1e2fffe23e1e (apr_sdbm_t *db) apr_status_t apr_sdbm_lock group___a_p_r___util___d_b_m___s_d_b_m.html g2c2edd6a123d8ca2a6334fa8874b724d (apr_sdbm_t *db, int type) apr_status_t apr_sdbm_unlock group___a_p_r___util___d_b_m___s_d_b_m.html gb96a7e08ddac3cb6bff97a822b68de14 (apr_sdbm_t *db) apr_status_t apr_sdbm_fetch group___a_p_r___util___d_b_m___s_d_b_m.html g7d9eae450e9f9a2f1bcf626a3f8ca43f (apr_sdbm_t *db, apr_sdbm_datum_t *value, apr_sdbm_datum_t key) apr_status_t apr_sdbm_store group___a_p_r___util___d_b_m___s_d_b_m.html gc12993b882c50afa0777945ea4a88572 (apr_sdbm_t *db, apr_sdbm_datum_t key, apr_sdbm_datum_t value, int opt) apr_status_t apr_sdbm_delete group___a_p_r___util___d_b_m___s_d_b_m.html g5744462c07c40d26c275beaeb902ff9c (apr_sdbm_t *db, const apr_sdbm_datum_t key) apr_status_t apr_sdbm_firstkey group___a_p_r___util___d_b_m___s_d_b_m.html ge5410d9dc681393e597f492f30c6447f (apr_sdbm_t *db, apr_sdbm_datum_t *key) apr_status_t apr_sdbm_nextkey group___a_p_r___util___d_b_m___s_d_b_m.html g77d7f848ccb68e9f465a988d0af80911 (apr_sdbm_t *db, apr_sdbm_datum_t *key) int apr_sdbm_rdonly group___a_p_r___util___d_b_m___s_d_b_m.html gbad67008f83fd219173acc5abdd0b42d (apr_sdbm_t *db) APR_Util_StrMatch String matching routines group___a_p_r___util___str_match.html apr_strmatch_pattern struct apr_strmatch_pattern apr_strmatch_pattern group___a_p_r___util___str_match.html gb7fc6f6d1b15c8d8750b4637b8ac5679 const char * apr_strmatch group___a_p_r___util___str_match.html gda0fdf0c9dcb92083159bb4f8bfb9158 (const apr_strmatch_pattern *pattern, const char *s, apr_size_t slen) const apr_strmatch_pattern * apr_strmatch_precompile group___a_p_r___util___str_match.html gf38b738b333c59a3f6439b71f1277dd9 (apr_pool_t *p, const char *s, int case_sensitive) APR_Util_TP Thread Pool routines group___a_p_r___util___t_p.html #define APR_THREAD_TASK_PRIORITY_LOWEST group___a_p_r___util___t_p.html g312691aaa41f45820e13c2566a4c6780 #define APR_THREAD_TASK_PRIORITY_LOW group___a_p_r___util___t_p.html g19879c994e9a71e9954e580a179b62c1 #define APR_THREAD_TASK_PRIORITY_NORMAL group___a_p_r___util___t_p.html g84d2ac8fa8a538661715b0d2e2736cb1 #define APR_THREAD_TASK_PRIORITY_HIGH group___a_p_r___util___t_p.html g289d5e1346b5807b43db9ea7d4ea5c17 #define APR_THREAD_TASK_PRIORITY_HIGHEST group___a_p_r___util___t_p.html g5fa01e4e210270d119382a80aae13d1d struct apr_thread_pool apr_thread_pool_t group___a_p_r___util___t_p.html gb31b68a03a0d5eec3e1879c253d3b620 apr_status_t apr_thread_pool_create group___a_p_r___util___t_p.html g9c4351f2f93d223c159c1f8e5481830e (apr_thread_pool_t **me, apr_size_t init_threads, apr_size_t max_threads, apr_pool_t *pool) apr_status_t apr_thread_pool_destroy group___a_p_r___util___t_p.html gb06b4fdfc684c88781abf201d53a44eb (apr_thread_pool_t *me) apr_status_t apr_thread_pool_push group___a_p_r___util___t_p.html gd66fb92679a8f456ff8e8ea1629eb041 (apr_thread_pool_t *me, apr_thread_start_t func, void *param, apr_byte_t priority, void *owner) apr_status_t apr_thread_pool_schedule group___a_p_r___util___t_p.html ga79df50c650442b8d39e169f4e422d3b (apr_thread_pool_t *me, apr_thread_start_t func, void *param, apr_interval_time_t time, void *owner) apr_status_t apr_thread_pool_top group___a_p_r___util___t_p.html g9acb6218820184f0617eecf56f0d3d84 (apr_thread_pool_t *me, apr_thread_start_t func, void *param, apr_byte_t priority, void *owner) apr_status_t apr_thread_pool_tasks_cancel group___a_p_r___util___t_p.html gee3d7332cf2591f42472e8be0bcbff87 (apr_thread_pool_t *me, void *owner) apr_size_t apr_thread_pool_tasks_count group___a_p_r___util___t_p.html g4f628cbec0365bb39be715a3c7ff0ec3 (apr_thread_pool_t *me) apr_size_t apr_thread_pool_scheduled_tasks_count group___a_p_r___util___t_p.html gc0324b95f6b61dbfb184cbe84c541b42 (apr_thread_pool_t *me) apr_size_t apr_thread_pool_threads_count group___a_p_r___util___t_p.html g9a2642a5a61df9560da438e818d5fad3 (apr_thread_pool_t *me) apr_size_t apr_thread_pool_busy_count group___a_p_r___util___t_p.html gf839cda931928964f450e3a17d153b24 (apr_thread_pool_t *me) apr_size_t apr_thread_pool_idle_count group___a_p_r___util___t_p.html ge6c5b87d1fee7150f74baa1008cb00c0 (apr_thread_pool_t *me) apr_size_t apr_thread_pool_idle_max_set group___a_p_r___util___t_p.html g07c5e4dca589ff024e9adfc8f818c481 (apr_thread_pool_t *me, apr_size_t cnt) apr_size_t apr_thread_pool_tasks_run_count group___a_p_r___util___t_p.html gab5c9c8afc46793ea5c413edfc9ef46e (apr_thread_pool_t *me) apr_size_t apr_thread_pool_tasks_high_count group___a_p_r___util___t_p.html g5eda07fb7fac1b4c4165137f34c5c31c (apr_thread_pool_t *me) apr_size_t apr_thread_pool_threads_high_count group___a_p_r___util___t_p.html gb6dcdaa6129caf35fa370e694a67ff08 (apr_thread_pool_t *me) apr_size_t apr_thread_pool_threads_idle_timeout_count group___a_p_r___util___t_p.html gfcf0a761a77b2a27fc043d650606c122 (apr_thread_pool_t *me) apr_size_t apr_thread_pool_idle_max_get group___a_p_r___util___t_p.html g6dd7fdcaac5cb2848aecd2ee1426d41e (apr_thread_pool_t *me) apr_size_t apr_thread_pool_thread_max_set group___a_p_r___util___t_p.html ga352b6337b31ebab796b604240a907e9 (apr_thread_pool_t *me, apr_size_t cnt) apr_interval_time_t apr_thread_pool_idle_wait_set group___a_p_r___util___t_p.html g382b90c482d39184b2a80157f64166ec (apr_thread_pool_t *me, apr_interval_time_t timeout) apr_interval_time_t apr_thread_pool_idle_wait_get group___a_p_r___util___t_p.html g6ef255c2d556fa757e9b78c2745c9bac (apr_thread_pool_t *me) apr_size_t apr_thread_pool_thread_max_get group___a_p_r___util___t_p.html gca755ea05976c5e1b782dcf40a1ef443 (apr_thread_pool_t *me) apr_size_t apr_thread_pool_threshold_set group___a_p_r___util___t_p.html g1c35f1bd809dde4300f4a3f77026f446 (apr_thread_pool_t *me, apr_size_t val) apr_size_t apr_thread_pool_threshold_get group___a_p_r___util___t_p.html g38f4ad8e384cde0e9d32867031c7a935 (apr_thread_pool_t *me) apr_status_t apr_thread_pool_task_owner_get group___a_p_r___util___t_p.html gefbaa0f765567e8e5a79adaaf346755f (apr_thread_t *thd, void **owner) APR_Util_URI URI group___a_p_r___util___u_r_i.html apr_uri_t #define APR_URI_FTP_DEFAULT_PORT group___a_p_r___util___u_r_i.html g0134a6dcaf62796e014c592ac4b2c09c #define APR_URI_SSH_DEFAULT_PORT group___a_p_r___util___u_r_i.html g4f4161d54207cf302b3c91cdda428be1 #define APR_URI_TELNET_DEFAULT_PORT group___a_p_r___util___u_r_i.html g0b6bcdfb9754edd6c160c9d6755df085 #define APR_URI_GOPHER_DEFAULT_PORT group___a_p_r___util___u_r_i.html gaf5bb1e53b22fa7ac4e88f415e7c2476 #define APR_URI_HTTP_DEFAULT_PORT group___a_p_r___util___u_r_i.html g7a9fa7be10430864617b3a0a58dd5d12 #define APR_URI_POP_DEFAULT_PORT group___a_p_r___util___u_r_i.html gf9408c6288a8580b285d7af58f836856 #define APR_URI_NNTP_DEFAULT_PORT group___a_p_r___util___u_r_i.html g86ac4da6cabda295f87042fb258fc36b #define APR_URI_IMAP_DEFAULT_PORT group___a_p_r___util___u_r_i.html g6e8aade3786adb75dc63b9d0bd3bfbb9 #define APR_URI_PROSPERO_DEFAULT_PORT group___a_p_r___util___u_r_i.html g329c26e04dd9449fd565f8ba76e8666c #define APR_URI_WAIS_DEFAULT_PORT group___a_p_r___util___u_r_i.html g0807570c6ef5c3813f65915fb0c19ff2 #define APR_URI_LDAP_DEFAULT_PORT group___a_p_r___util___u_r_i.html g5c648234ed92d19a09232080779a0185 #define APR_URI_HTTPS_DEFAULT_PORT group___a_p_r___util___u_r_i.html g9b319ff3bda42c0384fcfe0a2bc53254 #define APR_URI_RTSP_DEFAULT_PORT group___a_p_r___util___u_r_i.html gb2aac3d460462c664e848203e8046c3b #define APR_URI_SNEWS_DEFAULT_PORT group___a_p_r___util___u_r_i.html g6333715b343024de16e20b645beb7634 #define APR_URI_ACAP_DEFAULT_PORT group___a_p_r___util___u_r_i.html gf5b775cba93ca7f1778320c33c5a3078 #define APR_URI_NFS_DEFAULT_PORT group___a_p_r___util___u_r_i.html g94dc176de94e729cf565c87cd6db5ffd #define APR_URI_TIP_DEFAULT_PORT group___a_p_r___util___u_r_i.html g04b234524306cac26f954abad9a15b46 #define APR_URI_SIP_DEFAULT_PORT group___a_p_r___util___u_r_i.html g9d9ca5a25b37ad3c41355d902a002622 #define APR_URI_UNP_OMITSITEPART group___a_p_r___util___u_r_i.html gef80da6212c6838ac15bbcafa1e9745b #define APR_URI_UNP_OMITUSER group___a_p_r___util___u_r_i.html g93a8095f746bb8d4f4e5d8d6ca102ebc #define APR_URI_UNP_OMITPASSWORD group___a_p_r___util___u_r_i.html ged3be741b9a68eb4ee156c6a35b137ff #define APR_URI_UNP_OMITUSERINFO group___a_p_r___util___u_r_i.html gd573c75c47cc369ffc0a5776c3613494 #define APR_URI_UNP_REVEALPASSWORD group___a_p_r___util___u_r_i.html g527cd70521f12a7962df9976068dda29 #define APR_URI_UNP_OMITPATHINFO group___a_p_r___util___u_r_i.html g95d614636f08ee93fbfc341f2ac664c2 #define APR_URI_UNP_OMITQUERY group___a_p_r___util___u_r_i.html g41a4ebcf1930bcbd81aada6e3a06008b struct apr_uri_t apr_uri_t group___a_p_r___util___u_r_i.html g44e5978712bd6ff4fb65314346c01392 apr_port_t apr_uri_port_of_scheme group___a_p_r___util___u_r_i.html gd3b7b49b802a674badfb3322c31662c7 (const char *scheme_str) char * apr_uri_unparse group___a_p_r___util___u_r_i.html g78b4562bbe4225a0d3087543690394a0 (apr_pool_t *p, const apr_uri_t *uptr, unsigned flags) apr_status_t apr_uri_parse group___a_p_r___util___u_r_i.html gbbef816426a66595caae8b60e92ee43c (apr_pool_t *p, const char *uri, apr_uri_t *uptr) apr_status_t apr_uri_parse_hostinfo group___a_p_r___util___u_r_i.html gb3028922e6d1d1e038062bc5b0270f31 (apr_pool_t *p, const char *hostinfo, apr_uri_t *uptr) APR_UUID UUID Handling group___a_p_r___u_u_i_d.html apr_uuid_t #define APR_UUID_FORMATTED_LENGTH group___a_p_r___u_u_i_d.html g295b64f854c9dff02bb0c44e4be917a3 void apr_uuid_get group___a_p_r___u_u_i_d.html g129830a7a3c6b77047d2e74e261a7364 (apr_uuid_t *uuid) void apr_uuid_format group___a_p_r___u_u_i_d.html g539a9fee8522a416634194b648ca9790 (char *buffer, const apr_uuid_t *uuid) apr_status_t apr_uuid_parse group___a_p_r___u_u_i_d.html g66d90e0c926ef51a8d607d164e2d7ae7 (apr_uuid_t *uuid, const char *uuid_str) APR_XLATE I18N translation library group___a_p_r___x_l_a_t_e.html #define APR_DEFAULT_CHARSET group___a_p_r___x_l_a_t_e.html g3276c680eb0917ff51ff22c9b9959fa9 #define APR_LOCALE_CHARSET group___a_p_r___x_l_a_t_e.html g0e46c333fb1c900f0dd4a78664f5a0de struct apr_xlate_t apr_xlate_t group___a_p_r___x_l_a_t_e.html g069dabbadc30e3a4157c38104a250e77 apr_status_t apr_xlate_open group___a_p_r___x_l_a_t_e.html gb7d55348056d7e4cadbc35cfb8e1e624 (apr_xlate_t **convset, const char *topage, const char *frompage, apr_pool_t *pool) apr_status_t apr_xlate_sb_get group___a_p_r___x_l_a_t_e.html g578875b2e6b2a19f8466b80e0768792e (apr_xlate_t *convset, int *onoff) apr_status_t apr_xlate_conv_buffer group___a_p_r___x_l_a_t_e.html gb92a20b644aa78ca94c6147b254a54f1 (apr_xlate_t *convset, const char *inbuf, apr_size_t *inbytes_left, char *outbuf, apr_size_t *outbytes_left) apr_int32_t apr_xlate_conv_byte group___a_p_r___x_l_a_t_e.html g90173cefe2dee6e5032ff17b15fea14b (apr_xlate_t *convset, unsigned char inchar) apr_status_t apr_xlate_close group___a_p_r___x_l_a_t_e.html g2f88b0f72cd2512b8002344308480a8f (apr_xlate_t *convset) APR_Util_XML XML group___a_p_r___util___x_m_l.html Apache apr_text apr_text_header apr_xml_attr apr_xml_elem apr_xml_doc #define APR_XML_NS_DAV_ID group___a_p_r___util___x_m_l.html gd856851edabebf42e4150597c6f9d2c2 #define APR_XML_NS_NONE group___a_p_r___util___x_m_l.html g2eed42f7f5e2b1932141f6bb5594b042 #define APR_XML_NS_ERROR_BASE group___a_p_r___util___x_m_l.html g949c1a93de86c67576a0f2f225208447 #define APR_XML_NS_IS_ERROR group___a_p_r___util___x_m_l.html g65029fb8740ec9eb85562df1300d125f (e) #define APR_XML_ELEM_IS_EMPTY group___a_p_r___util___x_m_l.html ga5792e7a2aa38dc98a93b0762c98441f (e) #define APR_XML_X2T_FULL group___a_p_r___util___x_m_l.html geb48abf8de020df9bad57cfc7ca35747 #define APR_XML_X2T_INNER group___a_p_r___util___x_m_l.html g715a5e536efbfa24854531008cf4bdce #define APR_XML_X2T_LANG_INNER group___a_p_r___util___x_m_l.html g4cd40106902732169b8fe7579ba2e67c #define APR_XML_X2T_FULL_NS_LANG group___a_p_r___util___x_m_l.html g7b2cd4c48940cd95a56ace294a94d938 #define APR_XML_GET_URI_ITEM group___a_p_r___util___x_m_l.html gf31ae94be9e1db1ee0175f7c0c40e3a7 (ary, i) struct apr_text apr_text group___a_p_r___util___x_m_l.html gfddd251818de0015559bc174f81fd743 struct apr_text_header apr_text_header group___a_p_r___util___x_m_l.html gafc6d5ebd59b64a27146cf938a4086e0 struct apr_xml_attr apr_xml_attr group___a_p_r___util___x_m_l.html g4889d4d353f0ea0dabae2d5ae58dd07e struct apr_xml_elem apr_xml_elem group___a_p_r___util___x_m_l.html g31390d11ec04137c925ddf43c2223270 struct apr_xml_doc apr_xml_doc group___a_p_r___util___x_m_l.html g98eba70878b9460f2530e7a21bb6ae74 struct apr_xml_parser apr_xml_parser group___a_p_r___util___x_m_l.html gb08a1c255615afda782318811a5053d9 void apr_text_append group___a_p_r___util___x_m_l.html gf63dcaeeda623045860396304007aa49 (apr_pool_t *p, apr_text_header *hdr, const char *text) apr_xml_parser * apr_xml_parser_create group___a_p_r___util___x_m_l.html g438b6b9f15ecd8c22a602c9d5f87bd5c (apr_pool_t *pool) apr_status_t apr_xml_parse_file group___a_p_r___util___x_m_l.html gd65e09202d9f2eb46cb1d681d7005076 (apr_pool_t *p, apr_xml_parser **parser, apr_xml_doc **ppdoc, apr_file_t *xmlfd, apr_size_t buffer_length) apr_status_t apr_xml_parser_feed group___a_p_r___util___x_m_l.html g8b1f79c70267b30bc56a69df0b7d05ca (apr_xml_parser *parser, const char *data, apr_size_t len) apr_status_t apr_xml_parser_done group___a_p_r___util___x_m_l.html g69d883e7fcaf0f98d6df69d7ff3ba523 (apr_xml_parser *parser, apr_xml_doc **pdoc) char * apr_xml_parser_geterror group___a_p_r___util___x_m_l.html gde6ff47b3d0b714e2b61bc1845b47743 (apr_xml_parser *parser, char *errbuf, apr_size_t errbufsize) void apr_xml_to_text group___a_p_r___util___x_m_l.html g4485edce130dc1e9a3da3a633a75ffb3 (apr_pool_t *p, const apr_xml_elem *elem, int style, apr_array_header_t *namespaces, int *ns_map, const char **pbuf, apr_size_t *psize) const char * apr_xml_empty_elem group___a_p_r___util___x_m_l.html gbb75f025859b605f28394f82154f7847 (apr_pool_t *p, const apr_xml_elem *elem) const char * apr_xml_quote_string group___a_p_r___util___x_m_l.html g084970837d60613476e8ac1abd7651f0 (apr_pool_t *p, const char *s, int quotes) void apr_xml_quote_elem group___a_p_r___util___x_m_l.html g709c6294a67b450459669e3be45a9aba (apr_pool_t *p, apr_xml_elem *elem) int apr_xml_insert_uri group___a_p_r___util___x_m_l.html g25a4f0e204fc99ce5000221befc55847 (apr_array_header_t *uri_array, const char *uri) APR_Util APR Utility Functions group___a_p_r___util.html APR_Util_Base64 APR_Util_Bucket_Brigades APR_Util_Date APR_Util_DBD APR_Util_DBM APR_Util_Hook APR_Util_LDAP APR_Util_MD4 APR_Util_MC APR_Util_Opt APR_Util_FIFO APR_Util_RL APR_Util_RMM APR_Util_StrMatch APR_Util_TP APR_Util_URI APR_Util_XML #define APU_DECLARE group___a_p_r___util.html g408498ed57031391c19bf360cc61733a (type) #define APU_DECLARE_NONSTD group___a_p_r___util.html g03b160043a3b3a93e975085361683ff0 (type) #define APU_DECLARE_DATA group___a_p_r___util.html g7009cc3d445c4b2f93c80990230d7b3f #define APU_MODULE_DECLARE_DATA group___a_p_r___util.html g9b0c0f8fe6546018d3a84a87fc3938f5 #define APU_HAVE_SDBM group___a_p_r___util.html g3a1ebf50d2a0bdb96f286004d29efbd3 #define APU_HAVE_GDBM group___a_p_r___util.html g34ced7f6008f09de7f93d477b1c127a1 #define APU_HAVE_NDBM group___a_p_r___util.html g943eb69735e3e25b4eff0ab3a30c2aa7 #define APU_HAVE_DB group___a_p_r___util.html gbcb2f1d6b7ac86678bfaa36d78477b8c #define APU_HAVE_PGSQL group___a_p_r___util.html g11a85b2049f152a2f5b4a89afa6051b7 #define APU_HAVE_MYSQL group___a_p_r___util.html gf2b3aa8611321923353609fd49cfd7ad #define APU_HAVE_SQLITE3 group___a_p_r___util.html g1af39b80385311f086372077039e5cee #define APU_HAVE_SQLITE2 group___a_p_r___util.html gfabfc94fb20df271e67ee9832cfed72f #define APU_HAVE_ORACLE group___a_p_r___util.html gfdfb415d18dd26143342b8e2ff7c657d #define APU_HAVE_FREETDS group___a_p_r___util.html gb7324b13efeec2bbf5b555393c8d17c8 #define APU_HAVE_ODBC group___a_p_r___util.html g74a67f0582a8e83bc8dbe62dd6d5fd8a #define APU_HAVE_APR_ICONV group___a_p_r___util.html g05728c17575e69d12092d21e47065610 #define APU_HAVE_ICONV group___a_p_r___util.html g93b33ec545cbfd5ba93aa0104e197b01 #define APR_HAS_XLATE group___a_p_r___util.html g1a88ee138f0f70a6dca12bc8415d8db4 apr_anylock_t structapr__anylock__t.html tm_lock structapr__anylock__t.html 047e5c4d930f359618a96fd5e857f851 apr_anylock_none structapr__anylock__t.html 047e5c4d930f359618a96fd5e857f851a538eef19ecc0576a84344a5191abbd8 apr_anylock_procmutex structapr__anylock__t.html 047e5c4d930f359618a96fd5e857f851441c78d4b9f1ed5620a3f7f3195ca9d7 apr_anylock_threadmutex structapr__anylock__t.html 047e5c4d930f359618a96fd5e857f851d68c4c27cf2b58cabca43d35890045b6 apr_anylock_readlock structapr__anylock__t.html 047e5c4d930f359618a96fd5e857f851764d57b3fda600d8b891bef6128d02b5 apr_anylock_writelock structapr__anylock__t.html 047e5c4d930f359618a96fd5e857f851865d43ac3a9bb62f942e4e85b0befbda enum apr_anylock_t::tm_lock type structapr__anylock__t.html be78b2ee0daaee1b19c952c4f8fc903a union apr_anylock_t::apr_anylock_u_t lock structapr__anylock__t.html 7064f0fcc63ef139e62260dc311687a2 apr_anylock_t::apr_anylock_u_t apr_anylock_t::apr_anylock_u_t unionapr__anylock__t_1_1apr__anylock__u__t.html apr_proc_mutex_t * pm unionapr__anylock__t_1_1apr__anylock__u__t.html eb1a5d1e7a4e326482983ea956caae42 apr_thread_mutex_t * tm unionapr__anylock__t_1_1apr__anylock__u__t.html f08254c9ff8d2152276040037cd8ee53 apr_thread_rwlock_t * rw unionapr__anylock__t_1_1apr__anylock__u__t.html 7d876bf9eda2835ba357a25c98b095b2 apr_bucket structapr__bucket.html APR_RING_ENTRY structapr__bucket.html b1acff965e57e067dfde80321d04dea7 (apr_bucket) link const apr_bucket_type_t * type structapr__bucket.html c27fa5ce798e688ad243ebe1615937fc apr_size_t length structapr__bucket.html 0898dfc78d9275187189b9a745e619bf apr_off_t start structapr__bucket.html 4a8791b606b3ad613b8672ec94145628 void * data structapr__bucket.html 7fc4604750889b3f762bda1a786d276a void(* free structapr__bucket.html c50b1c1de2b171938c33bf3ac478f359 )(void *e) apr_bucket_alloc_t * list structapr__bucket.html 5a500b80105834621514d6c0814d0966 apr_bucket_brigade structapr__bucket__brigade.html APR_RING_HEAD structapr__bucket__brigade.html 76a313afc83dd161916f3f9b83eea734 (apr_bucket_list, apr_bucket) list apr_pool_t * p structapr__bucket__brigade.html 8e03b4dd531903709ae3ae8ebe9e46ee apr_bucket_alloc_t * bucket_alloc structapr__bucket__brigade.html 9f58f90a088f02ebb6f935f004092aaa apr_bucket_file structapr__bucket__file.html apr_bucket_refcount refcount structapr__bucket__file.html b0c123f34b85a07b601dc9794f8eed09 apr_file_t * fd structapr__bucket__file.html a43154c0bc9d41ba4b0762c906de432f apr_pool_t * readpool structapr__bucket__file.html 61b5603482215f6c9ace7b26fa12b884 int can_mmap structapr__bucket__file.html 7812a8d6e6f10d0095569f04d3423e83 apr_bucket_heap structapr__bucket__heap.html apr_bucket_refcount refcount structapr__bucket__heap.html b87003dea25caef69aa3b30a1948024e char * base structapr__bucket__heap.html c6386e2f635c6af19075123749e1fa71 apr_size_t alloc_len structapr__bucket__heap.html e373dada96f2e005a6aaf80e41c4cf6d void(* free_func structapr__bucket__heap.html ac6fce0089a10b2b139c28edf9ad6fea )(void *data) apr_bucket_mmap structapr__bucket__mmap.html apr_bucket_refcount refcount structapr__bucket__mmap.html 99f201622002479f4f84ea10598a013c apr_mmap_t * mmap structapr__bucket__mmap.html 66e9385752aaacb7fef7e96db62f1920 apr_bucket_pool structapr__bucket__pool.html apr_bucket_heap heap structapr__bucket__pool.html 0fe0b0dedea28fb1ed0a1a0f42338225 const char * base structapr__bucket__pool.html 9ee5297361ba548a20c3aa626a37c068 apr_pool_t * pool structapr__bucket__pool.html f55591a1e7f3b097e7c271683bc80968 apr_bucket_alloc_t * list structapr__bucket__pool.html 651aa0c18658342daf72ff86680bfaca apr_bucket_refcount structapr__bucket__refcount.html int refcount structapr__bucket__refcount.html 75040af03e3ad3c722bccea1048e3dae apr_bucket_structs unionapr__bucket__structs.html apr_bucket b unionapr__bucket__structs.html 840c42a20727de2e4534ca05f1f6c990 apr_bucket_heap heap unionapr__bucket__structs.html 5335dc82d8250e511a9c55e5fea97141 apr_bucket_pool pool unionapr__bucket__structs.html b926fe2af7c1780c03bf1669766db4a1 apr_bucket_mmap mmap unionapr__bucket__structs.html 627c4ca697f06bbf4226c8c2acd93cbc apr_bucket_file file unionapr__bucket__structs.html b339255acdf750133759a0d67b3f2e30 apr_bucket_type_t structapr__bucket__type__t.html APR_BUCKET_DATA structapr__bucket__type__t.html 117f85e4a58c5e7d7e373705ad138f8553d3ef9d6a275fe2b72a91acea7017d5 APR_BUCKET_METADATA structapr__bucket__type__t.html 117f85e4a58c5e7d7e373705ad138f859bf38b4eb3ea41c4af230432ac7a5fb1 const char * name structapr__bucket__type__t.html c6d779be45de214c6abd2cc205c48901 int num_func structapr__bucket__type__t.html d4bd2ffb03cb2f5f3b3941ce20468038 enum apr_bucket_type_t::@0 is_metadata structapr__bucket__type__t.html 34cef542a8eee5bb734ba8dcd8329711 void(* destroy structapr__bucket__type__t.html a5a8ae7611ba3be480e3fd12ff3ac352 )(void *data) apr_status_t(* read structapr__bucket__type__t.html 8e9f3f5b2a5513691f3cea130a1aa54b )(apr_bucket *b, const char **str, apr_size_t *len, apr_read_type_e block) apr_status_t(* setaside structapr__bucket__type__t.html 4e2015fd6e927ed55157a9b003ed5fdb )(apr_bucket *e, apr_pool_t *pool) apr_status_t(* split structapr__bucket__type__t.html f30959bc15fc60e21224d5e3c8c0a814 )(apr_bucket *e, apr_size_t point) apr_status_t(* copy structapr__bucket__type__t.html 300d6b15d55a3a1f13eeec7379100c38 )(apr_bucket *e, apr_bucket **c) apr_datum_t structapr__datum__t.html char * dptr structapr__datum__t.html 7f4e0997f26d818c5674446ebb3d58bb apr_size_t dsize structapr__datum__t.html 5b58c23a5f65a8a6e3f8228fef5e429c apr_dbm_t structapr__dbm__t.html apr_pool_t * pool structapr__dbm__t.html f80b38e28d1504e98f9aa3308285bf9b void * file structapr__dbm__t.html 228e2548b3a034d8d16451af4b93f3f1 int errcode structapr__dbm__t.html 130a628921f4c46241d09476f8a3090c const char * errmsg structapr__dbm__t.html dc3defc90b90fe3411c099631f75a653 const apr_dbm_type_t * type structapr__dbm__t.html 27287213e7ebe16d9945207a13300faf apr_dbm_type_t structapr__dbm__type__t.html const char * name structapr__dbm__type__t.html f023b97eba22415785caf005fc5dcf64 apr_status_t(* open structapr__dbm__type__t.html 4695443269822d7ca9208bd6579d3635 )(apr_dbm_t **pdb, const char *pathname, apr_int32_t mode, apr_fileperms_t perm, apr_pool_t *pool) void(* close structapr__dbm__type__t.html 21e4c81ee578b14ef5503c5ac7ee9312 )(apr_dbm_t *dbm) apr_status_t(* fetch structapr__dbm__type__t.html 17d44119b2ba7594a9a6593b82bc8d5f )(apr_dbm_t *dbm, apr_datum_t key, apr_datum_t *pvalue) apr_status_t(* store structapr__dbm__type__t.html e156d00ff445fbe6472565165f7e746c )(apr_dbm_t *dbm, apr_datum_t key, apr_datum_t value) apr_status_t(* del structapr__dbm__type__t.html 06d2f0a91b5ea931996acf364f392073 )(apr_dbm_t *dbm, apr_datum_t key) int(* exists structapr__dbm__type__t.html e671f4abb2d4f2ff42b6368f057c2166 )(apr_dbm_t *dbm, apr_datum_t key) apr_status_t(* firstkey structapr__dbm__type__t.html 1beec34c5815d4c05e1e03d49be2ccb9 )(apr_dbm_t *dbm, apr_datum_t *pkey) apr_status_t(* nextkey structapr__dbm__type__t.html ce0c5f3bc24df10170b4031b48fd9af0 )(apr_dbm_t *dbm, apr_datum_t *pkey) void(* freedatum structapr__dbm__type__t.html 7adb82d3067a0c388d59ac8a7b7c0b20 )(apr_dbm_t *dbm, apr_datum_t data) void(* getusednames structapr__dbm__type__t.html 9247cfe582aaf18915bb8552cd5c6bc7 )(apr_pool_t *pool, const char *pathname, const char **used1, const char **used2) apr_md4_ctx_t structapr__md4__ctx__t.html apr_uint32_t state structapr__md4__ctx__t.html 7fc20af590cdf6d01208a12ac0bbc5de [4] apr_uint32_t count structapr__md4__ctx__t.html 0332072316c6a931b6fb1bd8729e3495 [2] unsigned char buffer structapr__md4__ctx__t.html 60ce2de9e1c0b8888d81da03afdbfcdb [64] apr_xlate_t * xlate structapr__md4__ctx__t.html e4dd6785ef4bf0e04b37d566af786554 apr_md5_ctx_t structapr__md5__ctx__t.html apr_uint32_t state structapr__md5__ctx__t.html b8acbc6cd7a3dcd16e66e64a7f5357b5 [4] apr_uint32_t count structapr__md5__ctx__t.html 3234a76e68a4ef546026a9854f9ba6d0 [2] unsigned char buffer structapr__md5__ctx__t.html ed43a8aefc65c8973dbae804c94ad1e3 [64] apr_xlate_t * xlate structapr__md5__ctx__t.html 391a62bc9e7fada71d03f786df4f49ba apr_memcache_t structapr__memcache__t.html apr_uint32_t flags structapr__memcache__t.html eb0639bc75fd5bc7561ab88f671f75d3 apr_uint16_t nalloc structapr__memcache__t.html 95d15cfa5b291700cd9a697687eeac73 apr_uint16_t ntotal structapr__memcache__t.html 94e1353d23d4d02a18a9f0ca0e90005d apr_memcache_server_t ** live_servers structapr__memcache__t.html 85f916183d0aae6aaa88251edc7a1f81 apr_pool_t * p structapr__memcache__t.html 5157d1b71f12ecbdf8439eca46525c87 void * hash_baton structapr__memcache__t.html 26614ee9cfdc014d7e5ea46df253193a apr_memcache_hash_func hash_func structapr__memcache__t.html c63433f48f39aab248e93a12109c2028 void * server_baton structapr__memcache__t.html ea9d227dec27ab31af244d5759c3939a apr_memcache_server_func server_func structapr__memcache__t.html 010fc90cc07583737ab09f958d182b8d apr_memcache_value_t structapr__memcache__value__t.html apr_status_t status structapr__memcache__value__t.html 02cb1c2f8e2ac25cd1ecfcb897f13b19 const char * key structapr__memcache__value__t.html 0f824723507e179cfa18a169d6efe4e4 apr_size_t len structapr__memcache__value__t.html 64229f861b27fc4a9bdfab7b44c971a1 char * data structapr__memcache__value__t.html aa222208c2c3f010f90043802afe235d apr_uint16_t flags structapr__memcache__value__t.html 3314f50ec7a91e19abc44f15fdf2366f apr_sdbm_datum_t structapr__sdbm__datum__t.html char * dptr structapr__sdbm__datum__t.html 927c668d3912a4cc8466b0f551d00169 int dsize structapr__sdbm__datum__t.html edbd0295ba540695d5b407f1dec90eb5 apr_sha1_ctx_t structapr__sha1__ctx__t.html apr_uint32_t digest structapr__sha1__ctx__t.html 152a127b59eb6e1cb686c2bbe00d51de [5] apr_uint32_t count_lo structapr__sha1__ctx__t.html b105efa48b9318a419525e0f6076f6d2 apr_uint32_t count_hi structapr__sha1__ctx__t.html 32a4c5248869c36344cc7aac8b87f2d1 apr_uint32_t data structapr__sha1__ctx__t.html f61fc6c30be244247e35e7c8b0b63407 [16] int local structapr__sha1__ctx__t.html aa8433058ac7a3b0649821cbab7de822 apr_strmatch_pattern structapr__strmatch__pattern.html const char *(* compare structapr__strmatch__pattern.html 722ba7f187cc179ac5fe0b306b8f9624 )(const apr_strmatch_pattern *this_pattern, const char *s, apr_size_t slen) const char * pattern structapr__strmatch__pattern.html d219bd7708d7be5937cb79e7cfda01c0 apr_size_t length structapr__strmatch__pattern.html 4b1f44db089850f396bc4bedac0fb25c void * context structapr__strmatch__pattern.html 0e74c401e8825e462e202175bf033a9c apr_text structapr__text.html const char * text structapr__text.html 37a262695c36f740a7777ea9dd0b699d struct apr_text * next structapr__text.html af1b48e3f3085522fe7355e7d8893111 apr_text_header structapr__text__header.html apr_text * first structapr__text__header.html 6db03d272f5e56058c84e10e49624c0b apr_text * last structapr__text__header.html 3ebe57b46d323b8cefaba1e114acf09e apr_uri_t structapr__uri__t.html char * scheme structapr__uri__t.html 5d62fa370265b6bc956aa86d36024a5d char * hostinfo structapr__uri__t.html 985b18875320d40cdb33d722ecf20ac2 char * user structapr__uri__t.html 2b763f50bec4fda0cf67e5238275b5fd char * password structapr__uri__t.html 7eabf4f785f98a12762076f7519d3959 char * hostname structapr__uri__t.html 8c6bf3dfca3d159f091377d9f7228aec char * port_str structapr__uri__t.html d9d69051e1fb3f3709260c3c3c014012 char * path structapr__uri__t.html 61cff1baadb3c1b52a34b502c25bba7f char * query structapr__uri__t.html 88d889bcda9e95696022f04ffb470678 char * fragment structapr__uri__t.html 0e4abeaa1379c79dcc6fdac01d76715a struct hostent * hostent structapr__uri__t.html 2ec4edaa7288f3c1ebcb8cbca3d0379c apr_port_t port structapr__uri__t.html 6e6e858ce56b5d58389287c1cc1134fa unsigned is_initialized structapr__uri__t.html 6f77dda6db6c31c2c3652f6026ea6b73 unsigned dns_looked_up structapr__uri__t.html e28c03382cb6fcb226dfc76193699342 unsigned dns_resolved structapr__uri__t.html 805976fea6ef65f3ec1185c7d6dcf7f3 apr_uuid_t structapr__uuid__t.html unsigned char data structapr__uuid__t.html 8e3dadfe1bd9cbf26478127c4110e0d0 [16] apr_xml_attr structapr__xml__attr.html const char * name structapr__xml__attr.html 2ac25d74e3fd8a521b70af15ae8c1257 int ns structapr__xml__attr.html d08daf8b0b47796aae04b6aeaa332bc2 const char * value structapr__xml__attr.html 12f0f611e426fe83704de92b3b11d2e3 struct apr_xml_attr * next structapr__xml__attr.html 89a314d3136128eb2a37146ddb30da4f apr_xml_doc structapr__xml__doc.html apr_xml_elem * root structapr__xml__doc.html 9385ccf062ed6997d2d59d80cda28a71 apr_array_header_t * namespaces structapr__xml__doc.html 6aee4d0e4516c9b8191ad734c2748d39 apr_xml_elem structapr__xml__elem.html const char * name structapr__xml__elem.html 5b2fb684a9cfb244f88ad88f539fe3d6 int ns structapr__xml__elem.html 613ea31964572df7b41f5a9da8d0982e const char * lang structapr__xml__elem.html 9a48a384f579816f62a7369aeb8b1a0c apr_text_header first_cdata structapr__xml__elem.html 732e8acd00e43330674fde57ef87163f apr_text_header following_cdata structapr__xml__elem.html 8d64c5343354e34c1cc7ac67f51cc89a struct apr_xml_elem * parent structapr__xml__elem.html 0fd30b383f2659a9ef245c2e99cb707d struct apr_xml_elem * next structapr__xml__elem.html 8687253d504b1c1363c47117611042ac struct apr_xml_elem * first_child structapr__xml__elem.html 620a28337f36592d4cb1f6dd3d2e97e0 struct apr_xml_attr * attr structapr__xml__elem.html a9c71585c0b2a32269852047aebdd61c struct apr_xml_elem * last_child structapr__xml__elem.html d4f49811fc36f2377c72ac2c19e57abd struct apr_xml_ns_scope * ns_scope structapr__xml__elem.html ddfd70c22965dca4f7574639424a0c32 void * priv structapr__xml__elem.html 0bc4296aedb5d047325f86080604d939 Apache namespace_apache.html libapreq2-2.13/docs/html/annotated.html0000644000076400017500000000566211473533324017067 0ustar issacissac libapreq2-2.13: libapreq2: Data Structures

Data Structures

Here are the data structures with brief descriptions:
apreq_cookie_tCookie type, supporting both Netscape and RFC cookie specifications
apreq_handle_t
apreq_hook_find_param_ctx_t
apreq_hook_t
apreq_module_tVtable describing the necessary module functions
apreq_param_t
apreq_parser_t
apreq_value_tLibapreq's pre-extensible string type
libapreq2-2.13/docs/html/apreq_8h-source.html0000644000076400017500000005207611473533324020120 0ustar issacissac libapreq2-2.13: libapreq2: include/apreq.h Source File libapreq2-2.13/docs/html/apreq_8h.html0000644000076400017500000012672111473533324016621 0ustar issacissac libapreq2-2.13: libapreq2: include/apreq.h File Reference

include/apreq.h File Reference

Main header file...

Define the generic APREQ_ macros and common data structures. More...

#include "apr_tables.h"
#include <stddef.h>

Go to the source code of this file.

Data Structures

struct  apreq_value_t
 libapreq's pre-extensible string type More...

Defines

#define APREQ_DECLARE(d)   APR_DECLARE(d)
#define APREQ_DECLARE_NONSTD(d)   APR_DECLARE_NONSTD(d)
#define APREQ_DECLARE_DATA
#define APREQ_DEFAULT_READ_BLOCK_SIZE   (64 * 1024)
#define APREQ_DEFAULT_READ_LIMIT   (64 * 1024 * 1024)
#define APREQ_DEFAULT_BRIGADE_LIMIT   (256 * 1024)
#define APREQ_DEFAULT_NELTS   8
#define APREQ_FLAGS_OFF(f, name)   ((f) &= ~(name##_MASK << name##_BIT))
#define APREQ_FLAGS_ON(f, name)   ((f) |= (name##_MASK << name##_BIT))
#define APREQ_FLAGS_GET(f, name)   (((f) >> name##_BIT) & name##_MASK)
#define APREQ_FLAGS_SET(f, name, value)
#define APREQ_CHARSET_BIT   0
#define APREQ_CHARSET_MASK   255
#define APREQ_TAINTED_BIT   8
#define APREQ_TAINTED_MASK   1
#define APREQ_COOKIE_VERSION_BIT   11
#define APREQ_COOKIE_VERSION_MASK   3
#define APREQ_COOKIE_SECURE_BIT   13
#define APREQ_COOKIE_SECURE_MASK   1
#define APREQ_COOKIE_HTTPONLY_BIT   14
#define APREQ_COOKIE_HTTPONLY_MASK   1
#define apreq_attr_to_type(T, A, P)   ( (T*) ((char*)(P)-offsetof(T,A)) )

Enumerations

enum  apreq_charset_t { APREQ_CHARSET_ASCII = 0, APREQ_CHARSET_LATIN1 = 1, APREQ_CHARSET_CP1252 = 2, APREQ_CHARSET_UTF8 = 8 }
enum  apreq_join_t { APREQ_JOIN_AS_IS, APREQ_JOIN_ENCODE, APREQ_JOIN_DECODE, APREQ_JOIN_QUOTE }
enum  apreq_match_t { APREQ_MATCH_FULL, APREQ_MATCH_PARTIAL }
enum  apreq_expires_t { APREQ_EXPIRES_HTTP, APREQ_EXPIRES_NSCOOKIE }

Functions

static APR_INLINE void apreq_value_table_add (const apreq_value_t *v, apr_table_t *t)
apr_status_t apreq_initialize (apr_pool_t *pool)
apr_status_t apreq_pre_initialize (apr_pool_t *pool)
apr_status_t apreq_post_initialize (apr_pool_t *pool)


Detailed Description

Main header file...

Define the generic APREQ_ macros and common data structures.


Define Documentation

#define apreq_attr_to_type ( T,
A,
 )     ( (T*) ((char*)(P)-offsetof(T,A)) )

Parameters:
T type
A attribute
P XXX

#define APREQ_CHARSET_BIT   0

#define APREQ_CHARSET_MASK   255

#define APREQ_COOKIE_HTTPONLY_BIT   14

#define APREQ_COOKIE_HTTPONLY_MASK   1

#define APREQ_COOKIE_SECURE_BIT   13

#define APREQ_COOKIE_SECURE_MASK   1

#define APREQ_COOKIE_VERSION_BIT   11

#define APREQ_COOKIE_VERSION_MASK   3

#define APREQ_DECLARE (  )     APR_DECLARE(d)

The public APREQ functions are declared with APREQ_DECLARE(), so they may use the most appropriate calling convention. Public APR functions with variable arguments must use APR_DECLARE_NONSTD().

Remarks:
Both the declaration and implementations must use the same macro. APREQ_DECLARE(rettype) apeq_func(args)
Examples:
/home/issac/asf/svn/v2_13/include/apreq.h.

#define APREQ_DECLARE_DATA

The public APREQ variables are declared with APREQ_DECLARE_DATA. This assures the appropriate indirection is invoked at compile time.

See also:
APREQ_DECLARE

APREQ_DECLARE_NONSTD

Remarks:
Note that the declaration and implementations use different forms, but both must include the macro. extern APREQ_DECLARE_DATA type apr_variable;
APREQ_DECLARE_DATA type apr_variable = value;

#define APREQ_DECLARE_NONSTD (  )     APR_DECLARE_NONSTD(d)

APEQ_DECLARE_NONSTD(rettype) apr_func(args, ...);

#define APREQ_DEFAULT_BRIGADE_LIMIT   (256 * 1024)

Maximum number of bytes mod_apreq2 will let accumulate within the heap-buckets in a brigade. Excess data will be spooled to an appended file bucket

See also:
ap_set_brigade_read_limit

#define APREQ_DEFAULT_NELTS   8

Number of elements in the initial apr_table

See also:
apr_table_make

#define APREQ_DEFAULT_READ_BLOCK_SIZE   (64 * 1024)

Read chucks of data in 64k blocks from the request

#define APREQ_DEFAULT_READ_LIMIT   (64 * 1024 * 1024)

Maximum number of bytes mod_apreq2 will send off to libapreq2 for parsing. mod_apreq2 will log this event and subsequently remove itself from the filter chain.

See also:
ap_set_read_limit

#define APREQ_FLAGS_GET ( f,
name   )     (((f) >> name##_BIT) & name##_MASK)

Get specified bit f in bitfield name

#define APREQ_FLAGS_OFF ( f,
name   )     ((f) &= ~(name##_MASK << name##_BIT))

Check to see if specified bit f is off in bitfield name

#define APREQ_FLAGS_ON ( f,
name   )     ((f) |= (name##_MASK << name##_BIT))

Check to see if specified bit f is on in bitfield name

#define APREQ_FLAGS_SET ( f,
name,
value   ) 

Value:

((f) = (((f) & ~(name##_MASK << name##_BIT))        \
            | ((name##_MASK & (value)) << name##_BIT)))
Set specified bit f in bitfield name to value Note the below BIT/Mask defines are used sans the _BIT, _MASK because of the this define's ##_MASK, ##_BIT usage. Each come in a pair

#define APREQ_TAINTED_BIT   8

#define APREQ_TAINTED_MASK   1


Enumeration Type Documentation

Character encodings.

Expiration date format

Enumerator:
APREQ_EXPIRES_HTTP  Use date formatting consistent with RFC 2616
APREQ_EXPIRES_NSCOOKIE  Use format consistent with Netscape's Cookie Spec

Join type

Enumerator:
APREQ_JOIN_AS_IS  Join the strings without modification
APREQ_JOIN_ENCODE  Url-encode the strings before joining them
APREQ_JOIN_DECODE  Url-decode the strings before joining them
APREQ_JOIN_QUOTE  Quote the strings, backslashing existing quote marks.

Match type

Enumerator:
APREQ_MATCH_FULL  Full match only.
APREQ_MATCH_PARTIAL  Partial matches are ok.


Function Documentation

apr_status_t apreq_initialize ( apr_pool_t pool  ) 

Initialize libapreq2. Applications (except apache modules using mod_apreq) should call this exactly once before they use any libapreq2 modules. If you want to modify the list of default parsers with apreq_register_parser(), please use apreq_pre_initialize() and apreq_post_initialize() instead.

Parameters:
pool a base pool persisting while libapreq2 is used
Remarks:
after you detroy the pool, you have to call this function again with a new pool if you still plan to use libapreq2
Examples:
/home/issac/asf/svn/v2_13/include/apreq.h.

apr_status_t apreq_post_initialize ( apr_pool_t pool  ) 

Post-initialize libapreq2. Applications (except apache modules using mod_apreq2) should this exactly once before they use any libapreq2 modules for parsing.

Parameters:
pool the same pool that was used in apreq_pre_initialize().
Examples:
/home/issac/asf/svn/v2_13/include/apreq.h.

apr_status_t apreq_pre_initialize ( apr_pool_t pool  ) 

Pre-initialize libapreq2. Applications (except apache modules using mod_apreq2) should call this exactly once before they register custom parsers with libapreq2. mod_apreq2 does this automatically during the post-config phase, so modules that need call apreq_register_parser should create a post-config hook using APR_HOOK_MIDDLE.

Parameters:
pool a base pool persisting while libapreq2 is used
Remarks:
after you detroyed the pool, you have to call this function again with a new pool if you still plan to use libapreq2
Examples:
/home/issac/asf/svn/v2_13/include/apreq.h.

static APR_INLINE void apreq_value_table_add ( const apreq_value_t v,
apr_table_t t 
) [static]

Adds the specified apreq_value_t to the apr_table_t.

Parameters:
v value to add
t add v to this table
Returns:
void
@ see apr_table_t
See also:
apr_value_t
Examples:
/home/issac/asf/svn/v2_13/include/apreq.h.

libapreq2-2.13/docs/html/apreq__cookie_8h-source.html0000644000076400017500000006107411473533324021606 0ustar issacissac libapreq2-2.13: libapreq2: include/apreq_cookie.h Source File libapreq2-2.13/docs/html/apreq__cookie_8h.html0000644000076400017500000010115011473533324020276 0ustar issacissac libapreq2-2.13: libapreq2: include/apreq_cookie.h File Reference

include/apreq_cookie.h File Reference

Cookies and Jars.

apreq_cookie.h describes a common server-side API for request (incoming) and response (outgoing) cookies. It aims towards compliance with the standard cookie specifications listed below. More...

#include "apreq.h"
#include "apr_time.h"

Go to the source code of this file.

Data Structures

struct  apreq_cookie_t
 Cookie type, supporting both Netscape and RFC cookie specifications. More...

Defines

#define APREQ_COOKIE_MAX_LENGTH   4096

Functions

static APR_INLINE apreq_cookie_tapreq_value_to_cookie (const char *val)
static APR_INLINE unsigned apreq_cookie_version (const apreq_cookie_t *c)
static APR_INLINE void apreq_cookie_version_set (apreq_cookie_t *c, unsigned v)
static APR_INLINE unsigned apreq_cookie_is_secure (const apreq_cookie_t *c)
static APR_INLINE void apreq_cookie_secure_on (apreq_cookie_t *c)
static APR_INLINE void apreq_cookie_secure_off (apreq_cookie_t *c)
static APR_INLINE unsigned apreq_cookie_is_httponly (const apreq_cookie_t *c)
static APR_INLINE void apreq_cookie_httponly_on (apreq_cookie_t *c)
static APR_INLINE void apreq_cookie_httponly_off (apreq_cookie_t *c)
static APR_INLINE unsigned apreq_cookie_is_tainted (const apreq_cookie_t *c)
static APR_INLINE void apreq_cookie_tainted_on (apreq_cookie_t *c)
static APR_INLINE void apreq_cookie_tainted_off (apreq_cookie_t *c)
apr_status_t apreq_parse_cookie_header (apr_pool_t *pool, apr_table_t *jar, const char *header)
apreq_cookie_tapreq_cookie_make (apr_pool_t *pool, const char *name, const apr_size_t nlen, const char *value, const apr_size_t vlen)
char * apreq_cookie_as_string (const apreq_cookie_t *c, apr_pool_t *p)
int apreq_cookie_serialize (const apreq_cookie_t *c, char *buf, apr_size_t len)
void apreq_cookie_expires (apreq_cookie_t *c, const char *time_str)


Detailed Description

Cookies and Jars.

apreq_cookie.h describes a common server-side API for request (incoming) and response (outgoing) cookies. It aims towards compliance with the standard cookie specifications listed below.

See also:
http://wp.netscape.com/newsref/std/cookie_spec.html

http://www.ietf.org/rfc/rfc2109.txt

http://www.ietf.org/rfc/rfc2964.txt

http://www.ietf.org/rfc/rfc2965.txt


Define Documentation

#define APREQ_COOKIE_MAX_LENGTH   4096

This macro is deprecated.

Maximum length of a single Set-Cookie(2) header.


Function Documentation

char* apreq_cookie_as_string ( const apreq_cookie_t c,
apr_pool_t p 
)

Returns a string that represents the cookie as it would appear in a valid "Set-Cookie*" header.

Parameters:
c cookie.
p pool which allocates the returned string.
Returns:
header string.

void apreq_cookie_expires ( apreq_cookie_t c,
const char *  time_str 
)

Set the Cookie's expiration date.

Parameters:
c The cookie.
time_str If NULL, the Cookie's expiration date is unset, making it a session cookie. This means no "expires" or "max-age" attribute will appear in the cookie's serialized form. If time_str is not NULL, the expiration date will be reset to the offset (from now) represented by time_str. The time_str should be in a format that apreq_atoi64t() can understand, namely /[+-]?\d+\s*[YMDhms]/.
Remarks:
Now time_str may also be a fixed date; see apr_date_parse_rfc() for admissible formats.

static APR_INLINE void apreq_cookie_httponly_off ( apreq_cookie_t c  )  [static]

Turns off the cookie's HttpOnly flag.

static APR_INLINE void apreq_cookie_httponly_on ( apreq_cookie_t c  )  [static]

Sets the cookie's HttpOnly flag, meaning it is not accessible through client-side script in supported browsers.

static APR_INLINE unsigned apreq_cookie_is_httponly ( const apreq_cookie_t c  )  [static]

Returns:
1 if the HttpOnly flag is set, 0 otherwise.

static APR_INLINE unsigned apreq_cookie_is_secure ( const apreq_cookie_t c  )  [static]

Returns:
1 if the secure flag is set, 0 otherwise.

static APR_INLINE unsigned apreq_cookie_is_tainted ( const apreq_cookie_t c  )  [static]

Returns:
1 if the taint flag is set, 0 otherwise.

apreq_cookie_t* apreq_cookie_make ( apr_pool_t pool,
const char *  name,
const apr_size_t  nlen,
const char *  value,
const apr_size_t  vlen 
)

Returns a new cookie, made from the argument list.

Parameters:
pool Pool which allocates the cookie.
name The cookie's name.
nlen Length of name.
value The cookie's value.
vlen Length of value.
Returns:
the new cookie

static APR_INLINE void apreq_cookie_secure_off ( apreq_cookie_t c  )  [static]

Turns off the cookie's secure flag.

static APR_INLINE void apreq_cookie_secure_on ( apreq_cookie_t c  )  [static]

Sets the cookie's secure flag, meaning it only comes back over an SSL-encrypted connction.

int apreq_cookie_serialize ( const apreq_cookie_t c,
char *  buf,
apr_size_t  len 
)

Same functionality as apreq_cookie_as_string. Stores the string representation in buf, using up to len bytes in buf as storage. The return value has the same semantics as that of apr_snprintf, including the special behavior for a "len = 0" argument.

Parameters:
c cookie.
buf storage location for the result.
len size of buf's storage area.
Returns:
size of resulting header string.

static APR_INLINE void apreq_cookie_tainted_off ( apreq_cookie_t c  )  [static]

Turns off the cookie's tainted flag.

static APR_INLINE void apreq_cookie_tainted_on ( apreq_cookie_t c  )  [static]

Sets the cookie's tainted flag.

static APR_INLINE unsigned apreq_cookie_version ( const apreq_cookie_t c  )  [static]

Returns:
1 if this is an RFC cookie, 0 if its a Netscape cookie.

static APR_INLINE void apreq_cookie_version_set ( apreq_cookie_t c,
unsigned  v 
) [static]

Sets the cookie's protocol version.

apr_status_t apreq_parse_cookie_header ( apr_pool_t pool,
apr_table_t jar,
const char *  header 
)

Parse a cookie header and store the cookies in an apr_table_t.

Parameters:
pool pool which allocates the cookies
jar table where parsed cookies are stored
header the header value
Returns:
APR_SUCCESS.

APREQ_ERROR_BADSEQ if an unparseable character sequence appears.

APREQ_ERROR_MISMATCH if an rfc-cookie attribute appears in a netscape cookie header.

APR_ENOTIMPL if an unrecognized rfc-cookie attribute appears.

APREQ_ERROR_NOTOKEN if a required token was not present.

APREQ_ERROR_BADCHAR if an unexpected token was present.

static APR_INLINE apreq_cookie_t* apreq_value_to_cookie ( const char *  val  )  [static]

Upgrades a jar's table values to apreq_cookie_t structs.

libapreq2-2.13/docs/html/apreq__error_8h-source.html0000644000076400017500000002522511473533324021464 0ustar issacissac libapreq2-2.13: libapreq2: include/apreq_error.h Source File libapreq2-2.13/docs/html/apreq__error_8h.html0000644000076400017500000004514211473533324020166 0ustar issacissac libapreq2-2.13: libapreq2: include/apreq_error.h File Reference

include/apreq_error.h File Reference

Error status codes.

Define the APREQ_ error codes. More...

#include "apr_errno.h"
#include "apreq.h"

Go to the source code of this file.

Defines

#define APR_EBADARG   APR_BADARG
#define APREQ_ERROR_GENERAL   APR_OS_START_USERERR
#define APREQ_ERROR_TAINTED   (APREQ_ERROR_GENERAL + 1)
#define APREQ_ERROR_INTERRUPT   (APREQ_ERROR_GENERAL + 2)
#define APREQ_ERROR_BADDATA   (APREQ_ERROR_GENERAL + 10)
#define APREQ_ERROR_BADCHAR   (APREQ_ERROR_BADDATA + 1)
#define APREQ_ERROR_BADSEQ   (APREQ_ERROR_BADDATA + 2)
#define APREQ_ERROR_BADATTR   (APREQ_ERROR_BADDATA + 3)
#define APREQ_ERROR_BADHEADER   (APREQ_ERROR_BADDATA + 4)
#define APREQ_ERROR_BADUTF8   (APREQ_ERROR_BADDATA + 5)
#define APREQ_ERROR_NODATA   (APREQ_ERROR_GENERAL + 20)
#define APREQ_ERROR_NOTOKEN   (APREQ_ERROR_NODATA + 1)
#define APREQ_ERROR_NOATTR   (APREQ_ERROR_NODATA + 2)
#define APREQ_ERROR_NOHEADER   (APREQ_ERROR_NODATA + 3)
#define APREQ_ERROR_NOPARSER   (APREQ_ERROR_NODATA + 4)
#define APREQ_ERROR_MISMATCH   (APREQ_ERROR_GENERAL + 30)
#define APREQ_ERROR_OVERLIMIT   (APREQ_ERROR_MISMATCH + 1)
#define APREQ_ERROR_UNDERLIMIT   (APREQ_ERROR_MISMATCH + 2)
#define APREQ_ERROR_NOTEMPTY   (APREQ_ERROR_MISMATCH + 3)

Functions

char * apreq_strerror (apr_status_t s, char *buf, apr_size_t bufsize)


Detailed Description

Error status codes.

Define the APREQ_ error codes.


Define Documentation

#define APR_EBADARG   APR_BADARG

Bad Arguments return value

See also:
APR_BADARG

#define APREQ_ERROR_BADATTR   (APREQ_ERROR_BADDATA + 3)

Invalid attribute.

#define APREQ_ERROR_BADCHAR   (APREQ_ERROR_BADDATA + 1)

Invalid character.

#define APREQ_ERROR_BADDATA   (APREQ_ERROR_GENERAL + 10)

Invalid input data.

#define APREQ_ERROR_BADHEADER   (APREQ_ERROR_BADDATA + 4)

Invalid header.

#define APREQ_ERROR_BADSEQ   (APREQ_ERROR_BADDATA + 2)

Invalid byte sequence.

#define APREQ_ERROR_BADUTF8   (APREQ_ERROR_BADDATA + 5)

Invalid utf8 encoding.

#define APREQ_ERROR_GENERAL   APR_OS_START_USERERR

Internal apreq error.

#define APREQ_ERROR_INTERRUPT   (APREQ_ERROR_GENERAL + 2)

Parsing interrupted.

#define APREQ_ERROR_MISMATCH   (APREQ_ERROR_GENERAL + 30)

Conflicting information.

#define APREQ_ERROR_NOATTR   (APREQ_ERROR_NODATA + 2)

Missing attribute.

#define APREQ_ERROR_NODATA   (APREQ_ERROR_GENERAL + 20)

Missing input data.

#define APREQ_ERROR_NOHEADER   (APREQ_ERROR_NODATA + 3)

Missing header.

#define APREQ_ERROR_NOPARSER   (APREQ_ERROR_NODATA + 4)

Missing parser.

#define APREQ_ERROR_NOTEMPTY   (APREQ_ERROR_MISMATCH + 3)

Setting already configured.

#define APREQ_ERROR_NOTOKEN   (APREQ_ERROR_NODATA + 1)

Missing required token.

#define APREQ_ERROR_OVERLIMIT   (APREQ_ERROR_MISMATCH + 1)

Exceeds configured maximum limit.

#define APREQ_ERROR_TAINTED   (APREQ_ERROR_GENERAL + 1)

Attempted to perform unsafe action with tainted data.

#define APREQ_ERROR_UNDERLIMIT   (APREQ_ERROR_MISMATCH + 2)

Below configured minimum limit.


Function Documentation

char* apreq_strerror ( apr_status_t  s,
char *  buf,
apr_size_t  bufsize 
)

apreq's wrapper around apr_strerror(); recognizes APREQ_ERROR_* status codes.

libapreq2-2.13/docs/html/apreq__module_8h-source.html0000644000076400017500000012215311473533324021616 0ustar issacissac libapreq2-2.13: libapreq2: include/apreq_module.h Source File libapreq2-2.13/docs/html/apreq__module_8h.html0000644000076400017500000015751511473533324020332 0ustar issacissac libapreq2-2.13: libapreq2: include/apreq_module.h File Reference

include/apreq_module.h File Reference

Module API. More...

#include "apreq_cookie.h"
#include "apreq_parser.h"
#include "apreq_error.h"

Go to the source code of this file.

Data Structures

struct  apreq_handle_t
struct  apreq_module_t
 Vtable describing the necessary module functions. More...

Defines

#define APREQ_MODULE(pre, mmn)
#define apreq_cookie(req, name)   apreq_jar_get(req, name)

Functions

static APR_INLINE unsigned apreq_module_status_is_error (apr_status_t s)
static APR_INLINE apr_status_t apreq_jar (apreq_handle_t *req, const apr_table_t **t)
static APR_INLINE apr_status_t apreq_args (apreq_handle_t *req, const apr_table_t **t)
static APR_INLINE apr_status_t apreq_body (apreq_handle_t *req, const apr_table_t **t)
static APR_INLINE apreq_cookie_tapreq_jar_get (apreq_handle_t *req, const char *name)
static APR_INLINE apreq_param_tapreq_args_get (apreq_handle_t *req, const char *name)
static APR_INLINE apreq_param_tapreq_body_get (apreq_handle_t *req, const char *name)
static APR_INLINE apr_status_t apreq_parser_get (apreq_handle_t *req, const apreq_parser_t **parser)
static APR_INLINE apr_status_t apreq_parser_set (apreq_handle_t *req, apreq_parser_t *parser)
static APR_INLINE apr_status_t apreq_hook_add (apreq_handle_t *req, apreq_hook_t *hook)
static APR_INLINE apr_status_t apreq_brigade_limit_set (apreq_handle_t *req, apr_size_t bytes)
static APR_INLINE apr_status_t apreq_brigade_limit_get (apreq_handle_t *req, apr_size_t *bytes)
static APR_INLINE apr_status_t apreq_read_limit_set (apreq_handle_t *req, apr_uint64_t bytes)
static APR_INLINE apr_status_t apreq_read_limit_get (apreq_handle_t *req, apr_uint64_t *bytes)
static APR_INLINE apr_status_t apreq_temp_dir_set (apreq_handle_t *req, const char *path)
static APR_INLINE apr_status_t apreq_temp_dir_get (apreq_handle_t *req, const char **path)
apreq_handle_tapreq_handle_cgi (apr_pool_t *pool)
apreq_handle_tapreq_handle_custom (apr_pool_t *pool, const char *query_string, const char *cookie, apreq_parser_t *parser, apr_uint64_t read_limit, apr_bucket_brigade *in)
apreq_param_tapreq_param (apreq_handle_t *req, const char *key)
apr_table_tapreq_params (apreq_handle_t *req, apr_pool_t *p)
apr_table_tapreq_cookies (apreq_handle_t *req, apr_pool_t *p)


Detailed Description

Module API.


Define Documentation

#define apreq_cookie ( req,
name   )     apreq_jar_get(req, name)

Find the first cookie with the specified name. The match is case-insensitive.

Parameters:
req request handle.
name desired cookie name
Returns:
The first matching cookie or NULL.

#define APREQ_MODULE ( pre,
mmn   ) 

Value:

const apreq_module_t     \
  pre##_module = { #pre, mmn,                           \
  pre##_jar,        pre##_args,       pre##_body,       \
  pre##_jar_get,    pre##_args_get,   pre##_body_get,   \
  pre##_parser_get, pre##_parser_set, pre##_hook_add,   \
  pre##_brigade_limit_get, pre##_brigade_limit_set,     \
  pre##_read_limit_get,    pre##_read_limit_set,        \
  pre##_temp_dir_get,      pre##_temp_dir_set,          \
  }
Convenience macro for defining a module by mapping a function prefix to an associated apreq_module_t structure.

Parameters:
pre Prefix to define new module. All attributes of the apreq_module_t struct are defined with this as their prefix. The generated struct is named by appending "_module" to the prefix.
mmn Magic number (i.e. version number) of this module.


Function Documentation

static APR_INLINE apr_status_t apreq_args ( apreq_handle_t req,
const apr_table_t **  t 
) [static]

Expose the parsed "query string" associated to this handle.

Parameters:
req The request handle
t The resulting table, which will either be NULL or a valid table object on return.
Returns:
APR_SUCCESS or a module-specific error status code.

static APR_INLINE apreq_param_t* apreq_args_get ( apreq_handle_t req,
const char *  name 
) [static]

Fetch the first query string param with the given name.

Parameters:
req The request handle
name Case-insensitive param name.
Returns:
First matching param, or NULL if none match.

static APR_INLINE apr_status_t apreq_body ( apreq_handle_t req,
const apr_table_t **  t 
) [static]

Expose the parsed "request body" associated to this handle.

Parameters:
req The request handle
t The resulting table, which will either be NULL or a valid table object on return.
Returns:
APR_SUCCESS or a module-specific error status code.

static APR_INLINE apreq_param_t* apreq_body_get ( apreq_handle_t req,
const char *  name 
) [static]

Fetch the first body param with the given name.

Parameters:
req The request handle
name Case-insensitive cookie name.
Returns:
First matching param, or NULL if none match.

static APR_INLINE apr_status_t apreq_brigade_limit_get ( apreq_handle_t req,
apr_size_t bytes 
) [static]

Get the active brigade limit.

Parameters:
req The handle.
bytes Pointer to resulting (current) limit.
Returns:
APR_SUCCESS or a module-specific error, which may leave bytes undefined.

static APR_INLINE apr_status_t apreq_brigade_limit_set ( apreq_handle_t req,
apr_size_t  bytes 
) [static]

Set the active brigade limit.

Parameters:
req The handle.
bytes New limit to use.
Returns:
APR_SUCCESS or module-specific error.

apr_table_t* apreq_cookies ( apreq_handle_t req,
apr_pool_t p 
)

Returns a table containing all request cookies.

Parameters:
req the apreq request handle
p Allocates the returned table.

apreq_handle_t* apreq_handle_cgi ( apr_pool_t pool  ) 

Create an apreq handle which is suitable for a CGI program. It reads input from stdin and writes output to stdout.

Parameters:
pool Pool associated to this handle.
Returns:
New handle; can only be NULL if the pool allocation failed.
Remarks:
The handle gets cached in the pool's userdata, so subsequent calls will retrieve the original cached handle.

apreq_handle_t* apreq_handle_custom ( apr_pool_t pool,
const char *  query_string,
const char *  cookie,
apreq_parser_t parser,
apr_uint64_t  read_limit,
apr_bucket_brigade in 
)

Create a custom apreq handle which knows only some static values. Useful if you want to test the parser code or if you have got data from a custom source (neither Apache 2 nor CGI).

Parameters:
pool allocates the parse data,
query_string parsed into args table
cookie value of the request "Cookie" header
parser parses the request body
read_limit maximum bytes to read from the body
in brigade containing the request body
Returns:
new handle; can only be NULL if the pool allocation failed.

static APR_INLINE apr_status_t apreq_hook_add ( apreq_handle_t req,
apreq_hook_t hook 
) [static]

Add a parser hook for this request.

Parameters:
req The request handle
hook Hook to add.
Returns:
APR_SUCCESS or module-specific error.

static APR_INLINE apr_status_t apreq_jar ( apreq_handle_t req,
const apr_table_t **  t 
) [static]

Expose the parsed "cookie" header associated to this handle.

Parameters:
req The request handle
t The resulting table, which will either be NULL or a valid table object on return.
Returns:
APR_SUCCESS or a module-specific error status code.

static APR_INLINE apreq_cookie_t* apreq_jar_get ( apreq_handle_t req,
const char *  name 
) [static]

Fetch the first cookie with the given name.

Parameters:
req The request handle
name Case-insensitive cookie name.
Returns:
First matching cookie, or NULL if none match.

static APR_INLINE unsigned apreq_module_status_is_error ( apr_status_t  s  )  [static]

Defines the module-specific status codes which are commonly considered to be non-fatal.

Parameters:
s status code returned by an apreq_module_t method.
Returns:
1 if s is fatal, 0 otherwise.

apreq_param_t* apreq_param ( apreq_handle_t req,
const char *  key 
)

Find the first query string parameter or body parameter with the specified name. The match is case-insensitive.

Parameters:
req request handle.
key desired parameter name
Returns:
The first matching parameter (with args searched first) or NULL.

apr_table_t* apreq_params ( apreq_handle_t req,
apr_pool_t p 
)

Returns a table containing key-value pairs for the full request (args + body).

Parameters:
req request handle
p allocates the returned table.
Returns:
table representing all available params; is never NULL.

static APR_INLINE apr_status_t apreq_parser_get ( apreq_handle_t req,
const apreq_parser_t **  parser 
) [static]

Fetch the active body parser.

Parameters:
req The request handle
parser Points to the active parser on return.
Returns:
APR_SUCCESS or module-specific error.

static APR_INLINE apr_status_t apreq_parser_set ( apreq_handle_t req,
apreq_parser_t parser 
) [static]

Set the body parser for this request.

Parameters:
req The request handle
parser New parser to use.
Returns:
APR_SUCCESS or module-specific error.

static APR_INLINE apr_status_t apreq_read_limit_get ( apreq_handle_t req,
apr_uint64_t bytes 
) [static]

Get the active read limit.

Parameters:
req The request handle.
bytes Pointer to resulting (current) limit.
Returns:
APR_SUCCESS or a module-specific error, which may leave bytes undefined.

static APR_INLINE apr_status_t apreq_read_limit_set ( apreq_handle_t req,
apr_uint64_t  bytes 
) [static]

Set the active read limit.

Parameters:
req The handle.
bytes New limit to use.
Returns:
APR_SUCCESS or a module-specific error.

static APR_INLINE apr_status_t apreq_temp_dir_get ( apreq_handle_t req,
const char **  path 
) [static]

Get the active temp directory.

Parameters:
req The handle.
path Resulting path to temp dir.
Returns:
APR_SUCCESS implies path is valid, but may also be NULL. Any other return value is module-specific, and may leave path undefined.

static APR_INLINE apr_status_t apreq_temp_dir_set ( apreq_handle_t req,
const char *  path 
) [static]

Set the active temp directory.

Parameters:
req The handle.
path New path to use; may be NULL.
Returns:
APR_SUCCESS or a module-specific error .

libapreq2-2.13/docs/html/apreq__module__apache2_8h-source.html0000644000076400017500000001465711473533324023351 0ustar issacissac libapreq2-2.13: libapreq2: module/apache2/apreq_module_apache2.h Source File libapreq2-2.13/docs/html/apreq__module__apache_8h-source.html0000644000076400017500000001340211473533324023252 0ustar issacissac libapreq2-2.13: libapreq2: module/apache/apreq_module_apache.h Source File libapreq2-2.13/docs/html/apreq__param_8h-source.html0000644000076400017500000005233611473533324021436 0ustar issacissac libapreq2-2.13: libapreq2: include/apreq_param.h Source File libapreq2-2.13/docs/html/apreq__param_8h.html0000644000076400017500000010620011473533324020126 0ustar issacissac libapreq2-2.13: libapreq2: include/apreq_param.h File Reference

include/apreq_param.h File Reference

Request parsing and parameter API. More...

#include "apreq.h"
#include "apr_buckets.h"

Go to the source code of this file.

Data Structures

struct  apreq_param_t

Functions

static APR_INLINE unsigned apreq_param_is_tainted (const apreq_param_t *p)
static APR_INLINE void apreq_param_tainted_on (apreq_param_t *p)
static APR_INLINE void apreq_param_tainted_off (apreq_param_t *p)
static APR_INLINE apreq_charset_t apreq_param_charset_set (apreq_param_t *p, apreq_charset_t c)
static APR_INLINE apreq_charset_t apreq_param_charset_get (apreq_param_t *p)
static APR_INLINE apreq_param_tapreq_value_to_param (const char *val)
apreq_param_tapreq_param_make (apr_pool_t *p, const char *name, const apr_size_t nlen, const char *val, const apr_size_t vlen)
apr_status_t apreq_param_decode (apreq_param_t **param, apr_pool_t *pool, const char *word, apr_size_t nlen, apr_size_t vlen)
char * apreq_param_encode (apr_pool_t *pool, const apreq_param_t *param)
apr_status_t apreq_parse_query_string (apr_pool_t *pool, apr_table_t *t, const char *qs)
apr_array_header_tapreq_params_as_array (apr_pool_t *p, const apr_table_t *t, const char *key)
const char * apreq_params_as_string (apr_pool_t *p, const apr_table_t *t, const char *key, apreq_join_t mode)
const apr_table_tapreq_uploads (const apr_table_t *body, apr_pool_t *pool)
const apreq_param_tapreq_upload (const apr_table_t *body, const char *name)


Detailed Description

Request parsing and parameter API.


Function Documentation

static APR_INLINE apreq_charset_t apreq_param_charset_get ( apreq_param_t p  )  [static]

Gets the character encoding for this parameter.

static APR_INLINE apreq_charset_t apreq_param_charset_set ( apreq_param_t p,
apreq_charset_t  c 
) [static]

Sets the character encoding for this parameter.

apr_status_t apreq_param_decode ( apreq_param_t **  param,
apr_pool_t pool,
const char *  word,
apr_size_t  nlen,
apr_size_t  vlen 
)

Url-decodes a name=value pair into a param.

Parameters:
param points to the decoded parameter on success
pool Pool from which the param is allocated.
word Start of the name=value pair.
nlen Length of urlencoded name.
vlen Length of urlencoded value.
Returns:
APR_SUCCESS on success.

APREQ_ERROR_BADSEQ or APREQ_ERROR_BADCHAR on malformed input.

Remarks:
Unless vlen == 0, this function assumes there is exactly one character ('=') which separates the pair.

char* apreq_param_encode ( apr_pool_t pool,
const apreq_param_t param 
)

Url-encodes the param into a name-value pair.

Parameters:
pool Pool which allocates the returned string.
param Param to encode.
Returns:
name-value pair representing the param.

static APR_INLINE unsigned apreq_param_is_tainted ( const apreq_param_t p  )  [static]

Returns:
1 if the taint flag is set, 0 otherwise.

apreq_param_t* apreq_param_make ( apr_pool_t p,
const char *  name,
const apr_size_t  nlen,
const char *  val,
const apr_size_t  vlen 
)

creates a param from name/value information

static APR_INLINE void apreq_param_tainted_off ( apreq_param_t p  )  [static]

Turns off the taint flag.

static APR_INLINE void apreq_param_tainted_on ( apreq_param_t p  )  [static]

Sets the tainted flag.

apr_array_header_t* apreq_params_as_array ( apr_pool_t p,
const apr_table_t t,
const char *  key 
)

Returns an array of parameters (apreq_param_t *) matching the given key. The key is case-insensitive.

Parameters:
p Allocates the returned array.
t the parameter table returned by apreq_args(), apreq_body() or apreq_params()
key Null-terminated search key, case insensitive. key==NULL fetches all parameters.
Returns:
an array of apreq_param_t* (pointers)
Remarks:
Also parses the request if necessary.

const char* apreq_params_as_string ( apr_pool_t p,
const apr_table_t t,
const char *  key,
apreq_join_t  mode 
)

Returns a ", " -joined string containing all parameters for the requested key, an empty string if none are found. The key is case-insensitive.

Parameters:
p Allocates the return string.
t the parameter table returned by apreq_args(), apreq_body() or apreq_params()
key Null-terminated parameter name, case insensitive. key==NULL fetches all values.
mode Join type- see apreq_join().
Returns:
the joined string or NULL on error
Remarks:
Also parses the request if necessary.

apr_status_t apreq_parse_query_string ( apr_pool_t pool,
apr_table_t t,
const char *  qs 
)

Parse a url-encoded string into a param table.

Parameters:
pool pool used to allocate the param data.
t table to which the params are added.
qs Query string to url-decode.
Returns:
APR_SUCCESS if successful, error otherwise.
Remarks:
This function uses [&;] as the set of tokens to delineate words, and will treat a word w/o '=' as a name-value pair with value-length = 0.

const apreq_param_t* apreq_upload ( const apr_table_t body,
const char *  name 
)

Returns the first param in req->body which has both param->v.name matching key (case insensitive) and param->upload != NULL.

Parameters:
body parameter table returned by apreq_body() or apreq_params()
name Parameter name. key == NULL returns first upload.
Returns:
Corresponding upload, NULL if none found.
Remarks:
Will parse the request as necessary.

const apr_table_t* apreq_uploads ( const apr_table_t body,
apr_pool_t pool 
)

Returns a table of all params in req->body with non-NULL upload brigades.

Parameters:
body parameter table returned by apreq_body() or apreq_params()
pool Pool which allocates the table struct.
Returns:
Upload table.
Remarks:
Will parse the request if necessary.

static APR_INLINE apreq_param_t* apreq_value_to_param ( const char *  val  )  [static]

Upgrades args and body table values to apreq_param_t structs.

libapreq2-2.13/docs/html/apreq__parser_8h-source.html0000644000076400017500000005371511473533324021634 0ustar issacissac libapreq2-2.13: libapreq2: include/apreq_parser.h Source File libapreq2-2.13/docs/html/apreq__parser_8h.html0000644000076400017500000012172511473533324020333 0ustar issacissac libapreq2-2.13: libapreq2: include/apreq_parser.h File Reference

include/apreq_parser.h File Reference

Request body parser API. More...

#include "apreq_param.h"

Go to the source code of this file.

Data Structures

struct  apreq_hook_t
struct  apreq_parser_t
struct  apreq_hook_find_param_ctx_t

Defines

#define APREQ_PARSER_ARGS
#define APREQ_HOOK_ARGS
#define APREQ_DECLARE_PARSER(f)
#define APREQ_DECLARE_HOOK(f)

Typedefs

typedef struct apreq_hook_t apreq_hook_t
typedef struct apreq_parser_t apreq_parser_t
typedef apr_status_t(* apreq_parser_function_t )(APREQ_PARSER_ARGS)
typedef apr_status_t(* apreq_hook_function_t )(APREQ_HOOK_ARGS)

Functions

static APR_INLINE apr_status_t apreq_parser_run (struct apreq_parser_t *psr, apr_table_t *t, apr_bucket_brigade *bb)
static APR_INLINE apr_status_t apreq_hook_run (struct apreq_hook_t *h, apreq_param_t *param, apr_bucket_brigade *bb)
 APREQ_DECLARE_PARSER (apreq_parse_headers)
 APREQ_DECLARE_PARSER (apreq_parse_urlencoded)
 APREQ_DECLARE_PARSER (apreq_parse_multipart)
 APREQ_DECLARE_PARSER (apreq_parse_generic)
 APREQ_DECLARE_HOOK (apreq_hook_apr_xml_parser)
apreq_parser_tapreq_parser_make (apr_pool_t *pool, apr_bucket_alloc_t *ba, const char *content_type, apreq_parser_function_t pfn, apr_size_t brigade_limit, const char *temp_dir, apreq_hook_t *hook, void *ctx)
apreq_hook_tapreq_hook_make (apr_pool_t *pool, apreq_hook_function_t hook, apreq_hook_t *next, void *ctx)
apr_status_t apreq_parser_add_hook (apreq_parser_t *p, apreq_hook_t *h)
apreq_parser_function_t apreq_parser (const char *enctype)
apr_status_t apreq_register_parser (const char *enctype, apreq_parser_function_t pfn)
 APREQ_DECLARE_HOOK (apreq_hook_disable_uploads)
 APREQ_DECLARE_HOOK (apreq_hook_discard_brigade)
 APREQ_DECLARE_HOOK (apreq_hook_find_param)


Detailed Description

Request body parser API.


Define Documentation

#define APREQ_DECLARE_HOOK (  ) 

Value:

Declares an API hook.

#define APREQ_DECLARE_PARSER (  ) 

Value:

Declares a API parser.

#define APREQ_HOOK_ARGS

Value:

Hook arguments

#define APREQ_PARSER_ARGS

Value:

Parser arguments.


Typedef Documentation

typedef apr_status_t(* apreq_hook_function_t)(APREQ_HOOK_ARGS)

The callback function of a hook. See apreq_hook_t.

typedef struct apreq_hook_t apreq_hook_t

A hook is called by the parser whenever data arrives in a file upload parameter of the request body. You may associate any number of hooks with a parser instance with apreq_parser_add_hook().

typedef apr_status_t(* apreq_parser_function_t)(APREQ_PARSER_ARGS)

The callback function implementing a request body parser.

A request body parser instance.


Function Documentation

APREQ_DECLARE_HOOK ( apreq_hook_find_param   ) 

Special purpose utility for locating a parameter during parsing. The hook's ctx shoud be initialized to an apreq_hook_find_param_ctx_t *, with the name attribute set to the sought parameter name, the param attribute set to NULL, and the prev attribute set to the address of the previous hook. The param attribute will be reassigned to the first param found, and once that happens this hook is immediately removed from the chain.

Remarks:
When used, this should always be the first hook invoked, so add it manually with ctx->prev = &parser->hook instead of using apreq_parser_add_hook.

APREQ_DECLARE_HOOK ( apreq_hook_discard_brigade   ) 

Calls apr_brigade_cleanup on the incoming brigade after passing the brigade to any subsequent hooks.

APREQ_DECLARE_HOOK ( apreq_hook_disable_uploads   ) 

Returns APREQ_ERROR_GENERAL. Effectively disables mfd parser if a file-upload field is present.

APREQ_DECLARE_HOOK ( apreq_hook_apr_xml_parser   ) 

apr_xml_parser hook. It will parse until EOS appears. The parsed document isn't available until parsing has completed successfully. The hook's ctx pointer may be cast as (apr_xml_doc **) to retrieve the parsed document.

APREQ_DECLARE_PARSER ( apreq_parse_generic   ) 

Generic parser. No table entries will be added to the req->body table by this parser. The parser creates a dummy apreq_param_t to pass to any configured hooks. If no hooks are configured, the dummy param's bb slot will contain a copy of the request body. It can be retrieved by casting the parser's ctx pointer to (apreq_param_t **).

APREQ_DECLARE_PARSER ( apreq_parse_multipart   ) 

RFC 2388 multipart/form-data (and XForms 1.0 multipart/related) parser. It will reject any buckets representing preamble and postamble text (this is normal behavior, not an error condition). See apreq_parser_run() for more info on rejected data.

APREQ_DECLARE_PARSER ( apreq_parse_urlencoded   ) 

RFC 2396 application/x-www-form-urlencoded parser.

APREQ_DECLARE_PARSER ( apreq_parse_headers   ) 

RFC 822 Header parser. It will reject all data after the first CRLF CRLF sequence (an empty line). See apreq_parser_run() for more info on rejected data.

apreq_hook_t* apreq_hook_make ( apr_pool_t pool,
apreq_hook_function_t  hook,
apreq_hook_t next,
void *  ctx 
)

Construct a hook.

Parameters:
pool used to allocate the hook.
hook The hook function.
next List of other hooks for this hook to call on.
ctx Hook's internal scratch pad.
Returns:
New hook.

static APR_INLINE apr_status_t apreq_hook_run ( struct apreq_hook_t h,
apreq_param_t param,
apr_bucket_brigade bb 
) [static]

Run the hook with the current parameter and the incoming bucket brigade. The hook may modify the brigade if necessary. Once all hooks have completed, the contents of the brigade will be added to the parameter's bb attribute.

Returns:
APR_SUCCESS on success. All other values represent errors.

apreq_parser_function_t apreq_parser ( const char *  enctype  ) 

Fetch the default parser function associated with the given MIME type.

Parameters:
enctype The desired enctype (can also be a full "Content-Type" header).
Returns:
The parser function, or NULL if the enctype is unrecognized.

apr_status_t apreq_parser_add_hook ( apreq_parser_t p,
apreq_hook_t h 
)

Add a new hook to the end of the parser's hook list.

Parameters:
p Parser.
h Hook to append.

apreq_parser_t* apreq_parser_make ( apr_pool_t pool,
apr_bucket_alloc_t ba,
const char *  content_type,
apreq_parser_function_t  pfn,
apr_size_t  brigade_limit,
const char *  temp_dir,
apreq_hook_t hook,
void *  ctx 
)

Construct a parser.

Parameters:
pool Pool used to allocate the parser.
ba bucket allocator used to create bucket brigades
content_type Content-type that this parser can deal with.
pfn The parser function.
brigade_limit the maximum in-memory bytes a brigade may use
temp_dir the directory used by the parser for temporary files
hook Hooks to associate this parser with.
ctx Parser's internal scratch pad.
Returns:
New parser.

static APR_INLINE apr_status_t apreq_parser_run ( struct apreq_parser_t psr,
apr_table_t t,
apr_bucket_brigade bb 
) [static]

Parse the incoming brigade into a table. Parsers normally consume all the buckets of the brigade during parsing. However parsers may leave "rejected" data in the brigade, even during a successful parse, so callers may need to clean up the brigade themselves (in particular, rejected buckets should not be passed back to the parser again).

Remarks:
bb == NULL is valid: the parser should return its public status: APR_INCOMPLETE, APR_SUCCESS, or an error code.

apr_status_t apreq_register_parser ( const char *  enctype,
apreq_parser_function_t  pfn 
)

Register a new parsing function with a MIME enctype. Registered parsers are added to apreq_parser()'s internal lookup table.

Parameters:
enctype The MIME type.
pfn The function to use during parsing. Setting parser == NULL will remove an existing parser.
Returns:
APR_SUCCESS or error.

libapreq2-2.13/docs/html/apreq__util_8h-source.html0000644000076400017500000010132711473533324021306 0ustar issacissac libapreq2-2.13: libapreq2: include/apreq_util.h Source File libapreq2-2.13/docs/html/apreq__util_8h.html0000644000076400017500000020304211473533324020005 0ustar issacissac libapreq2-2.13: libapreq2: include/apreq_util.h File Reference

include/apreq_util.h File Reference

Utility functions for apreq. More...

#include "apr_file_io.h"
#include "apr_buckets.h"
#include "apreq.h"

Go to the source code of this file.

Functions

char * apreq_join (apr_pool_t *p, const char *sep, const apr_array_header_t *arr, apreq_join_t mode)
apr_ssize_t apreq_index (const char *hay, apr_size_t hlen, const char *ndl, apr_size_t nlen, const apreq_match_t type)
apr_size_t apreq_quote (char *dest, const char *src, const apr_size_t slen)
apr_size_t apreq_quote_once (char *dest, const char *src, const apr_size_t slen)
apr_size_t apreq_encode (char *dest, const char *src, const apr_size_t slen)
apr_size_t apreq_cp1252_to_utf8 (char *dest, const char *src, apr_size_t slen)
apreq_charset_t apreq_charset_divine (const char *src, apr_size_t slen)
apr_status_t apreq_decode (char *dest, apr_size_t *dlen, const char *src, apr_size_t slen)
apr_status_t apreq_decodev (char *dest, apr_size_t *dlen, struct iovec *v, int nelts)
static APR_INLINE char * apreq_escape (apr_pool_t *p, const char *src, const apr_size_t slen)
static APR_INLINE apr_ssize_t apreq_unescape (char *str)
apr_int64_t apreq_atoi64f (const char *s)
apr_int64_t apreq_atoi64t (const char *s)
apr_status_t apreq_brigade_fwrite (apr_file_t *f, apr_off_t *wlen, apr_bucket_brigade *bb)
apr_status_t apreq_file_mktemp (apr_file_t **fp, apr_pool_t *pool, const char *path)
static APR_INLINE apr_status_t apreq_brigade_setaside (apr_bucket_brigade *bb, apr_pool_t *p)
static APR_INLINE apr_status_t apreq_brigade_copy (apr_bucket_brigade *d, apr_bucket_brigade *s)
static APR_INLINE void apreq_brigade_move (apr_bucket_brigade *d, apr_bucket_brigade *s, apr_bucket *e)
apr_status_t apreq_header_attribute (const char *hdr, const char *name, const apr_size_t nlen, const char **val, apr_size_t *vlen)
apr_status_t apreq_brigade_concat (apr_pool_t *pool, const char *temp_dir, apr_size_t brigade_limit, apr_bucket_brigade *out, apr_bucket_brigade *in)
apr_file_tapreq_brigade_spoolfile (apr_bucket_brigade *bb)


Detailed Description

Utility functions for apreq.

This header contains useful functions for creating new parsers, hooks or modules. It includes

  • string <-> array converters
  • substring search functions
  • simple encoders & decoders for urlencoded strings
  • simple time, date, & file-size converters

Function Documentation

apr_int64_t apreq_atoi64f ( const char *  s  ) 

Converts file sizes (KMG) to bytes

Parameters:
s file size matching m/^\d+[KMG]b?$/i
Returns:
64-bit integer representation of s.
Todo:
What happens when s is malformed? Should this return an unsigned value instead?

apr_int64_t apreq_atoi64t ( const char *  s  ) 

Converts time strings (YMDhms) to seconds

Parameters:
s time string matching m/^\+?\d+[YMDhms]$/
Returns:
64-bit integer representation of s as seconds.
Todo:
What happens when s is malformed? Should this return an unsigned value instead?

apr_status_t apreq_brigade_concat ( apr_pool_t pool,
const char *  temp_dir,
apr_size_t  brigade_limit,
apr_bucket_brigade out,
apr_bucket_brigade in 
)

Concatenates the brigades, spooling large brigades into a tempfile (APREQ_SPOOL) bucket.

Parameters:
pool Pool for creating a tempfile bucket.
temp_dir Directory for tempfile creation.
brigade_limit If out's length would exceed this value, the appended buckets get written to a tempfile.
out Resulting brigade.
in Brigade to append.
Returns:
APR_SUCCESS.

Error status code resulting from either apr_brigade_length(), apreq_file_mktemp(), apreq_brigade_fwrite(), or apr_file_seek().

Todo:
Flesh out these error codes, making them as explicit as possible.

static APR_INLINE apr_status_t apreq_brigade_copy ( apr_bucket_brigade d,
apr_bucket_brigade s 
) [static]

Copy a brigade.

Parameters:
d (destination) Copied buckets are appended to this brigade.
s (source) Brigade to copy from.
Returns:
APR_SUCCESS.

Error status code from an unsuccessful apr_bucket_copy().

Remarks:
s == d produces Undefined Behavior.

apr_status_t apreq_brigade_fwrite ( apr_file_t f,
apr_off_t wlen,
apr_bucket_brigade bb 
)

Writes brigade to a file.

Parameters:
f File that gets the brigade.
wlen On a successful return, wlen holds the length of the brigade, which is the amount of data written to the file.
bb Bucket brigade.
Returns:
APR_SUCCESS.

Error status code from either an unsuccessful apr_bucket_read(), or a failed apr_file_writev().

Remarks:
This function leaks a bucket brigade into bb->p whenever the final bucket in bb is a spool bucket.

static APR_INLINE void apreq_brigade_move ( apr_bucket_brigade d,
apr_bucket_brigade s,
apr_bucket e 
) [static]

Move the front of a brigade.

Parameters:
d (destination) Append buckets to this brigade.
s (source) Brigade to take buckets from.
e First bucket of s after the move. All buckets before e are appended to d.
Remarks:
This moves all buckets when e == APR_BRIGADE_SENTINEL(s).

static APR_INLINE apr_status_t apreq_brigade_setaside ( apr_bucket_brigade bb,
apr_pool_t p 
) [static]

Set aside all buckets in the brigade.

Parameters:
bb Brigade.
p Setaside buckets into this pool.
Returns:
APR_SUCCESS.

Error status code from an unsuccessful apr_bucket_setaside().

apr_file_t* apreq_brigade_spoolfile ( apr_bucket_brigade bb  ) 

Determines the spool file used by the brigade. Returns NULL if the brigade is not spooled in a file (does not use an APREQ_SPOOL bucket).

Parameters:
bb the bucket brigade
Returns:
the spool file, or NULL.

apreq_charset_t apreq_charset_divine ( const char *  src,
apr_size_t  slen 
)

Heuristically determine the charset of a string.

Parameters:
src String to scan.
slen Length of string.
Returns:
APREQ_CHARSET_ASCII if the string contains only 7-bit chars;

APREQ_CHARSET_UTF8 if the string is a valid utf8 byte sequence;

APREQ_CHARSET_LATIN1 if the string has no control chars;

APREQ_CHARSET_CP1252 if the string has control chars.

apr_size_t apreq_cp1252_to_utf8 ( char *  dest,
const char *  src,
apr_size_t  slen 
)

Convert a string from cp1252 to utf8. Caller must ensure it is large enough to hold the encoded string and trailing '\0'.

Parameters:
dest Location of utf8-encoded result string. Caller must ensure it is large enough to hold the encoded string and trailing '\0'.
src Original string.
slen Length of original string.
Returns:
length of utf8-encoded string in dest; does not exceed 3 * slen.

apr_status_t apreq_decode ( char *  dest,
apr_size_t dlen,
const char *  src,
apr_size_t  slen 
)

Url-decodes a string.

Parameters:
dest Location of url-encoded result string. Caller must ensure dest is large enough to hold the encoded string and trailing null character.
dlen points to resultant length of url-decoded string in dest
src Original string.
slen Length of original string.
Returns:
APR_SUCCESS.

APR_INCOMPLETE if the string ends in the middle of an escape sequence.

APREQ_ERROR_BADSEQ or APREQ_ERROR_BADCHAR on malformed input.

Remarks:
In the non-success case, dlen will be set to include the last succesfully decoded value. This function decodes %uXXXX into a utf8 (wide) character, following ECMA-262 (the Javascript spec) Section B.2.1.

apr_status_t apreq_decodev ( char *  dest,
apr_size_t dlen,
struct iovec *  v,
int  nelts 
)

Url-decodes an iovec array.

Parameters:
dest Location of url-encoded result string. Caller must ensure dest is large enough to hold the encoded string and trailing null character.
dlen Resultant length of dest.
v Array of iovecs that represent the source string
nelts Number of iovecs in the array.
Returns:
APR_SUCCESS.

APR_INCOMPLETE if the iovec ends in the middle of an escape sequence.

APREQ_ERROR_BADSEQ or APREQ_ERROR_BADCHAR on malformed input.

Remarks:
In the non-APR_SUCCESS case, dlen will be set to include the last succesfully decoded value. This function decodes %uXXXX into a utf8 (wide) character, following ECMA-262 (the Javascript spec) Section B.2.1.

apr_size_t apreq_encode ( char *  dest,
const char *  src,
const apr_size_t  slen 
)

Url-encodes a string.

Parameters:
dest Location of url-encoded result string. Caller must ensure it is large enough to hold the encoded string and trailing '\0'.
src Original string.
slen Length of original string.
Returns:
length of url-encoded string in dest; does not exceed 3 * slen.

static APR_INLINE char* apreq_escape ( apr_pool_t p,
const char *  src,
const apr_size_t  slen 
) [static]

Returns an url-encoded copy of a string.

Parameters:
p Pool used to allocate the return value.
src Original string.
slen Length of original string.
Returns:
The url-encoded string.
Remarks:
Use this function insead of apreq_encode if its caller might otherwise overflow dest.

apr_status_t apreq_file_mktemp ( apr_file_t **  fp,
apr_pool_t pool,
const char *  path 
)

Makes a temporary file.

Parameters:
fp Points to the temporary apr_file_t on success.
pool Pool to associate with the temp file. When the pool is destroyed, the temp file will be closed and deleted.
path The base directory which will contain the temp file. If param == NULL, the directory will be selected via tempnam(). See the tempnam manpage for details.
Returns:
APR_SUCCESS.

Error status code from unsuccessful apr_filepath_merge(), or a failed apr_file_mktemp().

apr_status_t apreq_header_attribute ( const char *  hdr,
const char *  name,
const apr_size_t  nlen,
const char **  val,
apr_size_t vlen 
)

Search a header string for the value of a particular named attribute.

Parameters:
hdr Header string to scan.
name Name of attribute to search for.
nlen Length of name.
val Location of (first) matching value.
vlen Length of matching value.
Returns:
APR_SUCCESS.

APREQ_ERROR_NOATTR if the attribute is not found.

APREQ_ERROR_BADSEQ if an unpaired quote mark was detected.

apr_ssize_t apreq_index ( const char *  hay,
apr_size_t  hlen,
const char *  ndl,
apr_size_t  nlen,
const apreq_match_t  type 
)

Returns offset of match string's location, or -1 if no match is found.

Parameters:
hay Location of bytes to scan.
hlen Number of bytes available for scanning.
ndl Search string
nlen Length of search string.
type Match type.
Returns:
Offset of match string, or -1 if no match is found.

char* apreq_join ( apr_pool_t p,
const char *  sep,
const apr_array_header_t arr,
apreq_join_t  mode 
)

Join an array of values. The result is an empty string if there are no values.

Parameters:
p Pool to allocate return value.
sep String that is inserted between the joined values.
arr Array of apreq_value_t entries.
mode Join type- see apreq_join_t.
Returns:
Joined string, or NULL on error

apr_size_t apreq_quote ( char *  dest,
const char *  src,
const apr_size_t  slen 
)

Places a quoted copy of src into dest. Embedded quotes are escaped with a backslash ('\').

Parameters:
dest Location of quoted copy. Must be large enough to hold the copy and trailing null byte.
src Original string.
slen Length of original string.
dest Destination string.
Returns:
length of quoted copy in dest.

apr_size_t apreq_quote_once ( char *  dest,
const char *  src,
const apr_size_t  slen 
)

Same as apreq_quote() except when src begins and ends in quote marks. In that case it assumes src is quoted correctly, and just copies src to dest.

Parameters:
dest Location of quoted copy. Must be large enough to hold the copy and trailing null byte.
src Original string.
slen Length of original string.
dest Destination string.
Returns:
length of quoted copy in dest.

static APR_INLINE apr_ssize_t apreq_unescape ( char *  str  )  [static]

An in-situ url-decoder.

Parameters:
str The string to decode
Returns:
Length of decoded string, or < 0 on error.

libapreq2-2.13/docs/html/apreq__version_8h-source.html0000644000076400017500000001777511473533324022033 0ustar issacissac libapreq2-2.13: libapreq2: include/apreq_version.h Source File libapreq2-2.13/docs/html/apreq__version_8h.html0000644000076400017500000002463411473533324020525 0ustar issacissac libapreq2-2.13: libapreq2: include/apreq_version.h File Reference

include/apreq_version.h File Reference

Versioning API for libapreq

There are several different mechanisms for accessing the version. There is a string form, and a set of numbers; in addition, there are constants which can be compiled into your application, and you can query the library being used for its actual version. More...

#include "apr_version.h"
#include "apreq.h"

Go to the source code of this file.

Defines

#define APREQ_MAJOR_VERSION   2
#define APREQ_MINOR_VERSION   8
#define APREQ_PATCH_VERSION   0
#define APREQ_VERSION_STRING
#define APREQ_IS_DEV_STRING   ""

Functions

void apreq_version (apr_version_t *pvsn)
const char * apreq_version_string (void)


Detailed Description

Versioning API for libapreq

There are several different mechanisms for accessing the version. There is a string form, and a set of numbers; in addition, there are constants which can be compiled into your application, and you can query the library being used for its actual version.

Note that it is possible for an application to detect that it has been compiled against a different version of libapreq by use of the compile-time constants and the use of the run-time query function.

libapreq version numbering follows the guidelines specified in:

http://apr.apache.org/versioning.html


Define Documentation

#define APREQ_IS_DEV_STRING   ""

Internal: string form of the "is dev" flag

#define APREQ_MAJOR_VERSION   2

major version Major API changes that could cause compatibility problems for older programs such as structure size changes. No binary compatibility is possible across a change in the major version.

#define APREQ_MINOR_VERSION   8

Minor API changes that do not cause binary compatibility problems. Should be reset to 0 when upgrading APREQ_MAJOR_VERSION

#define APREQ_PATCH_VERSION   0

patch level

#define APREQ_VERSION_STRING

Value:

This symbol is defined for internal, "development" copies of libapreq. This symbol will be #undef'd for releases. The formatted string of libapreq's version


Function Documentation

void apreq_version ( apr_version_t pvsn  ) 

Return libapreq's version information information in a numeric form.

Parameters:
pvsn Pointer to a version structure for returning the version information.

const char* apreq_version_string ( void   ) 

Return libapreq's version information as a string.

libapreq2-2.13/docs/html/apreq_changes.html0000644000076400017500000011063711473533324017711 0ustar issacissac libapreq2-2.13: libapreq2: CHANGES

CHANGES

! brief List of major changes.

Changes with libapreq2-2.13 (released December 3, 2010)

  • HTTP Only Cookie [Robert Stone & Adam Prime] The C and Perl Cookie APIs now support an HttpOnly flag to tell user agents to deny client-side script access to the cookie

Changes with libapreq2-2.12 (released March 13, 2009)

  • C API [joes] Make the cookie parser a little more flexible.

Changes with libapreq2-2.11 (not released)

  • Interactive CGI module [issac] Allow cgi module to interactively prompt for parameters and cookies when running a script from the command line and not from a CGI interface

Changes with libapreq2-2.10 (not released)

  • Perl Glue [joes] Fix the linking of the perl modules to libapreq2 and libapr on Solaris.

  • Perl Glue [joes] Fix install-time linking issue of the .so modules. Previously they would remain linked against the src library path, not the install path.

  • C API [joes] Clean up buggy apreq_hook_find_param().

  • Perl Glue Build [Philip M. Gollucci] config.status format changed format yet again in autoconf 2.62+.

  • License [Mladen Turk] Add libapreq.rc and generate libapreq.res

  • Build [Mladen Turk] Add APREQ_DECLARE_EXPORT/APREQ_DECLARE_STATIC in the same way as APR declares so that dllexport/dllimport get correctly handled.

  • Build [Randy Kobes] Add appropriate manifest command to embed manifest files on Win32 when using VC8

  • C API [suggested by Vinay Y S, tested by Steve Hay and Peter Walsham] For Win32, remove the flag |= APR_FILE_NOCLEANUP | APR_SHARELOCK; in apreq_file_cleanup, to avoid problems with file uploads.

Changes with libapreq2-2.09 ( not released)

  • Build [Philip M. Gollucci] SunOS (Solaris) Users must use gmake not make for building.

  • Build [Philip M. Gollucci] SunOS (Solaris) Code around bug in libtool (at least in 1.5.18, 1.5.20, 1.5.22) causing mod_apreq2 to be built instead of mod_apreq2.so

  • C API [Philip M. Gollucci] Fix comparison signed vs unsigned comparison in apreq_fwritev() on SunOS/gcc where iovec.iov_len is a long.

  • Build [Philip M. Gollucci] SunOS (Solaris) fix duplicate link error to libexpat.so -- by using the one from httpd exclusively now.

  • Build [Philip M. Gollucci] code around |_!!_#| autoconf 2.60 bug.

Changes with libapreq2-2.08 (released August 8, 2006)

  • Perl API [Randy Kobes] add APR_FILE_NOCLEANUP | APR_SHARELOCK to flags passed to apreq_file_mktemp() on Win32 in library/util.c, in order to clean up occasional stray temp files left behind in the Perl upload test (reported by Steve Hay)

  • Perl Glue Fix "value computed not used" gcc 4.1.x compile errors

  • Build [Randy Kobes] Fix the location of apxs and the names of the apr and aprutil libraries on Win32 to enable building against Apache/2.2.

  • Perl Glue docs [Philip M. Gollucci] Fix the 'docs_install' make target to actually install the docs for the perl glue.

  • Perl Glue Build [Philip M. Gollucci] Regenerate glue/perl/xsbuilder/ppport.h to fix perl 5.8.8+ on some plaforms.

  • Perl API [joes] Expose the constants in apreq_error.h via the APR::Request::Error package.

Changes with libapreq2-2.07 (released February 12, 2006)

  • C API [joes] SECURITY: CVE-2006-0042 (cve.mitre.org) Eliminate potential quadratic behavior in apreq_parse_headers() and apreq_parse_urlencoded().

  • Perl API [Philip M. Gollucci] Fix Apache2::Cookie->cookies() to comply with its documentation

  • C API [Philip M. Gollucci] Use the APREQ_DEFAULT_READ_LIMIT constant for the read_limit

  • C API [Ville Skyttä, Dirk Nehring] Add explicit cast in apreq_escape()/apreq_util.h to keep C++ compilers happy.

  • C API [joes] Protect against arbitrary recursion depth in apreq_parse_multipart() by adding a reasonable compile-time MAX_LEVEL limit.

  • C API [joes] Clean up end-of-file parsing for apreq_parse_multipart(), conforming to rfc-2046 § 5.1.1.

  • Perl API [joes] Move APR::Request::Param::Table and APR::Request::Cookie::Table packages to APR::Request module.

  • Perl XS [Steve Hay] Fix compile problems on Win32 without PERL_IMPLICIT_SYS related to link being an unresolved symbol.

  • Perl API [joes] APR::Request::Cookie::thaw() isn't a class method.

  • C API [joes] Fix off-by-one bug in the continuation-lines portion of the header parser.

  • Perl API [joes] Move APR::Request::upload to APR::Request, where it belongs.

  • Perl XS [Nikolay Ananiev] Use MP_STATIC declarations to allow Cygwin builds.

  • Perl API [joes] encode()/decode() were busted with zero-length args. This caused Apache2::Cookie::new() to segfault on cookie value of "".

  • C API [joes] Improve the cp1252-charset heuristics for apreq_decode(v).

  • C API [Ralph Mattes] Add explicit casts for apreq_param_charset_* to keep c++ compilers happy.

Changes with libapreq2-2.06-dev (released July 20, 2005)

  • C API [Marc Gràcia, joes] Fix apreq_decode(v) when iso-latin-1 chars appear at the end of an encoded string.

  • Perl API [Philip M. Gollucci] Fix "Attempt to free temp prematurely" error in apreq_xs_croak().

  • C API [Philip M. Gollucci] Add mod_apreq2 to httpd's server tokens.

  • Perl API [joes] Drop support for $req->env(), which also died with 2.05-dev.

  • Perl API [joes] Support for table set/add/delete methods is formally withdrawn. Technically this feature died with the module API refactoring in 2.05-dev.

  • C API [max] Right-hand limit of apreq_brigade_move() is declared as "excluding", but APR_RING_UNSPLICE() wants an "including" right-hand limit. Fixed this by passing the previous bucket.

  • Perl API [joes] Drop support for Apache2::Request::new's HOOK_DATA. UPLOAD_HOOK now takes only two arguments: ($upload, $data).

  • Perl API [joes] Drop support for Apache2::Cookie::Jar::new's VALUE_CLASS. 2.05-dev broke that API, and it's not worth trying to fix. People who need that should use APR::Request::Cookie::Table's cookie_class() API instead.

  • Perl API [joes] Fix cookie domain/path munging in Apache2::Cookie::new().

Changes with libapreq2-2.05-dev (released May 5, 2005)

  • Win32 build [Randy Kobes] Have top-level 'nmake', 'nmake test', and 'nmake install' targets, respectively, also include building, testing, and installing the corresponding perl glue targets.

  • C API [geoff] Minimum httpd version is now 2.0.48, which includes the official apr 0.9.4 release.

  • C API [Max Kellermann] Fix apreq_quote.

  • Perl API [joes] Remove Apache2::Request::args. WARNING: through inheritance, args() now maps to Apache2::RequestRec::args. Folks that want the pre-2.05-dev behavior need to invoke APR::Request::args by name.

  • C API [joes, Max Kellermann] Add apreq_initialize, apreq_pre_initialize and apreq_post_initialize. These are not thread-safe operations, so applications need to ensure they are invoked (in the correct sequence) prior to using any apreq2 modules.

  • Perl API [joes] Drop $data argument from UPLOAD_HOOK, and also drop HOOK_DATA option. Perl folks should use a closure instead of passing in context data.

  • Perl API [joes] Move bake, bake2 to Apache2::Cookie, now requiring an extra $r argument. Also ""-operator is mapped to as_string() for Apache2::Cookie; but APR::Request::Cookie maps it to value().

  • C API [joes] s/APREQ/APREQ2/g in webserver configuration directives.

  • C API [Igor Shevchenko, Philip Gollucci] Fix segfault in mfd parser caused by parts w/ empty param names.

  • C, Perl API [joes] Add charset support for params and couple the SvUTF8 flag to the param's taint flag.

  • C API [joes] Remove apreq_cookie_attr().

  • C API [joes]
    • Add apreq_error.h, apreq_module.h.
    • Rename apreq_run* and apreq_make* funcs to conform with apreq_$obj_$meth scheme.
    • Replace c->version & c->secure with flags.
    • Parsers are assumed to be working with external data, so the cookies & params they produce are marked tainted.

  • C API [joes] apreq_parse_cookie_header() failed to parse RFC Cookie headers which contained no space chars after the '$Version=1' preamble.

  • C API [joes] Reorganize around include/, library/, and module/ dirs.

  • C Tests [joes] Replace CuTest-based tests with custom TAP-compliant framework.

  • C API [Max Kellermann] Continue the API improvements:

  • Convert APREQ_RUN_PARSER and APREQ_RUN_HOOK to inline, and downcase them.
  • Remove apreq_memmem.
  • Convert apreq_(un)escape to inline.
  • apreq_escape does not create an apreq_value_t*.
  • Initialize default_parsers explicitly to NULL.
  • Convert APREQ_BRIGADE_COPY to inline, and downcase it.
  • Lowercase APREQ_BRIGADE_SETASIDE, APREQ_BRIGADE_COPY.
  • Convert apreq_cookie_name and apreq_cookie_value macros to inline.
  • Convert apreq_param_name, apreq_param_value, apreq_param_info, and apreq_param_brigade to inline.

  • C API [joes] Widespread API refactorization to remove apreq_jar_t and apreq_request_t:

  • Header includes reorganized; apreq_parsers.h added (back again).
  • Replaced apreq_jar_t and apreq_request_t with single apreq_env_handle_t.
  • Added const qualifier to "v" attribute of apreq_cookie_t and apreq_param_t.
  • Use union type-puns to drop const qualifiers inside the new apreq_value_to_cookie and apreq_value_to_param implementations (gcc generates same object code as the macro versions did).
  • Moved "flags" attribute from apreq_value_t to apreq_cookie_t and apreq_param_t.
  • Remove env argument from hooks and parsers.
  • Reduce apreq_env_module to minimal set of operations.
  • Replace apreq_log calls with apreq-specific error codes.
  • Hooks are called on each body param now, not just during file uploads.
  • Tie the cgi handle to its creator pool.

Detailed changes by header file:

[apreq.h]

  • Remove flags from apreq_value_t.
  • Remove const qualifier from apreq_value_t's "name" attribute.
  • Remove apreq_value_merge* and apreq_value_copy*.
  • Remove apreq_char_to_value, apreq_strtoval, and apreq_strlen.
  • Move apreq_enctype to apreq_env.h.
  • Move apreq_env_handle_t struct definition to apreq_env.h
  • Change signature of apreq_decode.
  • Move apreq_brigade_concat here, changed its signature and improved it alot.
  • Remove apreq_brigade_spoolfile.
  • Dropped APREQ_*_ENCTYPE, renamed some APREQ_$foo defaults APREQ_DEFAULT_$foo.
  • Added APREQ_ERROR_*.

[apreq_cookie.h]

  • Remove apreq_env.h include.
  • Remove apreq_jar_t.
  • Add "flags" to apreq_cookie_t, add const qualifier to its "v" attr.
  • Remove apreq_jar* functions.
  • Add apreq_parse_cookie_header.
  • Move apreq_cookie, apreq_cookie_bake(2), and apreq_ua_cookie_version to apreq_env.h.

[apreq_params.h]

  • Remove apreq_env.h include.
  • Remove apreq_request_t.
  • Add "flags" to apreq_param_t, and const qualifier to its "v" attr.
  • Rename "bb" attribute "upload" in apreq_param_t.
  • Remove apreq_request* functions.
  • Remove apreq_parse_request.
  • Changed apreq_decode_param signature.
  • Replace env argument with apr_table_t in apreq_params_as_array, apreq_params_as_string,
  • Move remaining apreq_param* to apreq_env.h.
  • Move parser and hook sections to apreq_parsers.h.
  • Change apreq_upload(s) old apreq_request_t arg to apr_table_t.

[apreq_parsers.h]

  • Acquire the hook and parser sections of original apreq_params.h.
  • Remove env argument from APREQ_PARSER_ARGS and APREQ_HOOK_ARGS
  • Augment apreq_hook_t and apreq_parser_t to replace missing env features.
  • Change apreq_make_parser and apreq_make_hook signatures.
  • Rename apreq_add_hook to apreq_parser_add_hook, returning apr_status_t.
  • Change apreq_parser signature.

[apreq_env.h]

  • Remove read, log, pool, bucket_alloc, request, jar, and query_string methods.
  • Include apreq_parsers.h.
  • Reorganize apreq_env_module_t to provide hook, parser, jar, args, & body table ops.
  • Rename max_brigade to "brigade_limit", max_body to "read_limit".
  • Change related module sigs, including temp_dir, to get/set methods.
  • Add parser and read_limit args to apreq_env_make_custom_handle.
  • Drop "name" arg and APREQ_ENV_MODULE =~ s/_ENV//.
  • s/apreq_env_make/apreq_handle/ in the handle constructor names.

[mod_apreq.c, apreq_env_apache2.h]

  • Changed APREQ_Max* configs to APREQ_BrigadeLimit and APREQ_ReadLimit.
  • Handle constructor renamed apreq_handle_apache2.

  • C API [joes] Make our "libtool current interface" number depend on apr's major number. This allows libapreq2 to be installed into a system-wide location while avoiding ABI conflicts arising from our apr-based interfaces.

  • C API [Max Kellermann] Introduce apreq_env_handle_t to replace the void *env usage. Also added apreq_env_custom for making private handles, and new apreq_env_apache2.h to let mod_apreq export apreq_env_make_apache2.

  • C API [Max Kellermann] Rename apreq_env_t to apreq_env_module_t, to prepare for a new thread-safe apreq_env API.

  • C API [Max Kellermann] mod_apreq must check the return value of apreq_brigade_concat to avoid a RAM-consuming infinite loop. A bad APREQ_TempDir setting can cause this situation.

  • C API [joes] Provide workaround for chunked trailers bug in ap_http_filter.

  • C, Perl API [joes] Several upload-related bugfixes: 1) apreq_upload and apreq_uploads did not search the full body table, 2) $upload->slurp and $io->read did not autovivify the resultant string.

  • C API [joes] Add "flags" attribute to apreq_value_t, planning for charset support. This is an ABI change, starting with libapreq2.so.2.0.24.

  • C API [joes] Add apreq_env_bucket_alloc() to get an allocator directly from the environment instead of creating them from a pool. This is an ABI change, starting with libapreq2.so.2.0.23.

  • Build system [joes] Add --with-apache2-httpd option so users can override apxs's notion of where the httpd executable is. XSBuilder's header parser runs from buildconf now instead of configure, so we will include those tables in the release tarball. buildconf gets an additional --with-perl option for running the xsbuilder.pl parsing script. The XS generation code in xsbuilder.pl has moved to glue/perl/Makefile.PL.

  • C API [Bojan Smojver] Bake cookies with err_headers_out so they are sent on non-2xx server responses (ie. a 304 redirect). Also ensure that headers are copied with apr_table_add instead of apr_table_addn. Since apreq_cookie_bake() allocates from the stack, the Set-Cookie headers would occasionally get mangled without this patch.

  • C API [joes] Support "multipart/mixed" file uploads. Support XForms' "multipart/related" enctype.

  • C API [joes] Add apreq_hook_apr_xml_parser(), which is a simple wrapper hook around APR's expat-based apr_xml_parser. Add a generic parser apreq_parse_generic() to parse arbitrary enctypes using the hook API.

Changes with libapreq2-2.04-dev (released August 30, 2004)

  • Perl API [joes] Add TAINT checks, marking all parsed data as tainted.

  • C API [joes] Add body_status attribute to apreq_request_t, to allow the both environment and the parser to report any errors encountered.

  • C API [randyk, joes] Cookie parser was locking up on non-alphanumeric chars in cookie names. Also RFC Cookie attributes are always checked for quotes during bake(2), and the quotes are now stripped from incoming RFC cookies during parsing (but they are never stripped from the actual cookie value).

  • Perl API [joes] Apache::Cookie::Jar->new accepts a VALUE_CLASS argument, which effectively blesses all the jar's cookies into that class, which simplifies subclassing Apache::Cookie. Accordingly Apache::Cookie->freeze($value) no longer accepts a freeze()-able object in $value.

  • C API [Markus Wichitill, randyk, joes] Drop APR_DELONCLOSE from apreq_file_mktemp implementation and install apreq_file_cleanup. When passed to apr_file_open on Win32, APR_DELONCLOSE sets the FILE_SHARED_DELETE flag, which is, unfortunately, a property that is preserved across NTFS "hard" links. This breaks apps that link() the temp file to a permanent location, and subsequently expect to open it without FILE_SHARED_DELETE before the original tempfile is closed+deleted. In fact, even Apache::Upload does this, so it is a common enough event that the apreq_file_cleanup workaround is necessary.

  • C API [Ken Burcham, joes] Fix bug in url parser that occurs when a XX-encoded sequence is split across multiple buckets. Added apreq_decode_decodev to make this problem less inconvenient.

  • Perl API [joes] Exception objects inherit from the object which raised it, which allows $@ to invoke its methods with impunity (exceptions are disabled for objects which derive from an exception class).

  • Perl API [joes] Implement HOOK_DATA and UPLOAD_HOOK.

  • Perl API [joes] Add safe XS wrappers for $table->add, $table->set, $table->STORE, and $table_class->new.

  • Perl API [joes] Add exceptions to $upload->link, $upload->tempname, $upload->slurp, and $cookie->set_attr. Return value of $upload->slurp is now the upload length. Also document new $upload->io.

  • C API [joes] Restrict all apr_status_t codes to APR_SUCCESS, APR_INCOMPLETE, APR_EGENERAL, APR_EINIT, APR_ENOTIMPL, since any others will generate confusing error messages from apr_strerror.

  • Perl API [joes] Added $upload->io with a TIEHANDLE API layered over APR::Brigade. $upload->fh remains implemented as an APR::PerlIO object, which is seekable but less efficient and currently suffers some portability issues associated with largefile support in perl and apr.

  • Perl API [joes] Added apreq_xs_croak for throwing APR::Error exceptions and included error-checking on $req->param, $req->args, $req->body, $req->upload, and $jar->get.

  • Perl API [joes] Added $jar->status, $req->args_status and $req->body_status to report parsing errors. Also add $upload->tempname per user request.

  • C API [joes] Dropped status attribute of apreq_value_t. Added status field to apreq_jar_t and added args_status field to apreq_request_t. Parsers also must return their public status code when a NULL brigade is passed. apreq_hook_disable_uploads() is also added.

This is an ABI change affecting all versions of libapreq2 prior to 2.0.12.

  • Perl API [joes] $upload->info returns a proper APR::Table object now. Also implemented $upload->size, $upload->fh, and $upload->type.

  • C API [Jean-François Meesse] mfd parser fails to parse CRLF-terminated files when the terminating boundary string is at the start of a new bucket. This is reportedly a common event for PDF files uploaded with Netscape 7.

  • Perl API [joes] Add back-compat support for Apache::Cookie->fetch() via Apache->request.

  • C API [joes] Add MaxBody, MaxBrigade, and TempDir per-dir directives to mod_apreq filter.

  • C API [joes, Scott Hutton] Replace apreq_brigade_copy with more effective APREQ_BRIGADE_COPY macro. Also introduce APREQ_BRIGADE_SETASIDE to deal with buckets that need to be set aside for use in future function calls. mod_ssl generates transient buckets which tickled this bug.

  • Perl API [joes] Separate Apache::Upload module from Apache::Request for better organization.

Changes with libapreq2-2.03-dev (released June 12, 2004)

  • C API [joes] "Objectify" cookie/jar API: s/apreq_(make|serialize)_cookie/apreq_cookie_$1/ and reordering args so the cookie/jar object is always the first argument. Macros added to provide source-compatibility with the old names.

  • Perl API [joes] Added $upload->slurp($data), which reads the contents of the file upload "$upload" into the scalar "$data".

  • C API [joes, randyk] apreq_run_(hook|parser) are macros, so they are capitalized now. Fixed apreq_params_as_string() and added apreq_params_as_array(). Reworked definitions of APREQ_DECLARE_HOOK, APREQ_DECLARE_PARSER and apreq_(parser|hook)_t, hopefully to be more Win32 friendly. Also updated the documentation.

  • C API [joes] Compensate for a missing CRLF in empty file upload block, which actually complies with RFC 2046 Section 5.1.1. Konqueror (version unknown) and Mozilla 0.9.7 are known to emit such blocks.

  • Perl API [joes] $req->upload() in list context failed to filter out non-uploads. Also $req->upload("nonexistent-key-name") segfaults.

  • Perl test suite t/TEST.PL must run parent class' pre_configure to get the configuration right

  • C API [joes] apreq_brigade_concat() wasn't supplying the final EOS bucket to large brigades (>256K), which somtimes caused the prefetch loop in mod_apreq.c's apreq_filter() to hang.

  • Documentation [joes] CHANGES file reformatted, removing dates & other clutter as Stas suggests.

  • C API [joes] Rewrote cgi_read() in apreq_env.c and reworked mod_apreq.c to enforce apreq_env_max_body() settings.

  • C API [joes] Fixed bug in url_parser code- missing context brigade was needed to track key-value pairs which span multiple buckets.

  • C API [joes] API modifications: removed struct apreq_cfg_t, adding new apreq_env hooks max_body, max_brigade_len, and temp_dir. Folded apreq_parsers.h into apreq_params.h and modified the arguments to apreq_run_parser() and apreq_run_hook(). Renamed apreq_parser_t's content_type as enctype and apreq_copy_brigade() as apreq_brigade_copy(). These changes make libapreq2.so.2.0.5 incompatible with earlier versions.

  • Perl API [stas] Include ppport.h from blead-perl to support older perls. Add a proper support for ithreads.

  • C API [Swen Schillig, joes] Fixed bug in calculation of Netscape cookie expiration dates. apr_time_t is measured in microseconds, not seconds, which threw off the arithmetic; apr_time_from_sec was needed for the conversion.

  • C API [Max Kellermann] Fix segfault caused by invalid -escape sequence in query string.

Changes with libapreq2-2.02-dev (released Nov 15, 2003)

  • Perl API [joes] Fix bogus pool/cookie initializers in Apache::Cookie::set_attr(), which caused Apache::Cookie::new to segfault. Bug first reported to modperl list by Wolfgang Kubens.

Changes with libapreq2-2.01-dev (released Nov 10, 2003)

  • build system [joes] Skip Apache::Test tests in env/ when Apache::Test is unavailable. This allows the C API to be build and installed without requiring Apache::Test (it is still a requirement for compiling the perl glue).

  • C API mod_apreq.c [joes] Parser errors were creeping into the return value of apreq_filter, which breaks the "transparent tee" paradigm. This caused bogus "400 Bad Request" responses (first reported by Vladimir Dudo) to occur when libapreq2 was used by an output filter during a GET request (handled by apache2's default handler). The test suite has been updated accordingly.

  • C API [joes] Incorporate libapreq_cgi into libapreq2 as the default environment, and add apreq_env_t and initializer apreq_env_module() to manage the environment at runtime (determining the environment at load-time was problematic on non-ELF systems).

Changes with libapreq2-2.00-dev (Oct 25, 2003)

  • C API: libapreq_cgi.c [randyk, joes] CGI environment defined by env/libapreq_cgi.c is functional (with tests added to env/t). This library may soon be incorporated directly into libapreq2 as a default enviroment.

  • C API: mod_apreq.c [joes] Added ctx->saw_eos to ensure we don't read from upstream filters after receiving an eos bucket. Otherwise it was possible for two eos buckets to appear when a prefetch read is involved, which breaks other modules like mod_proxy. This bug was uncovered by Philippe Chiasson. mod_apreq's apreq_env_majic_number bumped to reflect the added fixes.

  • configure: --enable-perl-glue [joes] The --enable-perl-glue option integrates the perl glue into the normal Unix build cycle. It is disabled by default, but is silently reenabled if the user configures the source tree via Makefile.PL.

  • C API [joes] Added apreq_header_attribute() and fixed mfd parser to allow "charset" attribute to appear in the Content-Type header. Sven Geisler points out that Opera 7.20 does generate such headers.

  • C API [joes] Added versioning API following http://apr.apache.org/versioning.html apreq_env renamed apreq_env_name, and apreq_env_magic_number added to provide versioning for environments (modules). The header files are now installed to "include/apreq2", and the library is renamed "libapreq2". Also added an apreq2-config script based on apu-config.

  • configure: static mod_apreq.c [Bojan Smojver, joes] Add --with-apache2-src configure option, along with --with-apr-config and --with-apu-config, and provide support for compiling mod_apreq into httpd as a static apache module.

  • C API: mod_apreq.c [joes] Support for internal redirects added to the mod_apreq filter. This ensures any POST data prefetched in the main request gets passed along to the subrequest handler(s).

  • C bugfix: apreq_decode [Graham Clark] If the source and destination strings are represented by the same pointer - e.g. if called as apreq_unescape(s) - string s is modified incorrectly in general. Patch includes new unit test.

  • Perl API [joes] Added $req->parse, $req->status, & "preparse" logic to $req->param & $req->upload.

  • C API [joes] Added "preparse" logic to apreq_params & apreq_uploads to bring behavior in line with libapreq-1.x.

  • C API [joes] Dropped param->charset. Make apreq_brigade_concat public, so mod_apreq can use it for its ctx->spool brigade.

  • Documentation [joes] Updated Cookie_pod to reflect API changes over v1.X.

  • Documentation [joes] Added doxygen links to Apache::Request and Apache::Cookie perl docs.

  • C API [joes] Added apreq_copy_brigade(bb) to apreq.h.

  • C API [joes] The new filter-based design required a complete departure from libapreq-1.X codebase. libapreq-2 is based solely on APR, and to be fully functional, requires a supporting environment similar to Apache-2. A person wishing to port libapreq-2 to a new environment needs to provide definitions for the declarations in apreq_env.h.

  • Perl API [joes] Aggregates are always collected into an APR::Table-based package. New table packages: Apache::Cookie::Table, Apache::Request::Table, and Apache::Upload::Table.

  • Perl API [joes] Apache::Cookie->fetch now requires an "environment" argument ($r). Its return value is blessed into the Apache::Cookie::Jar class.

  • Perl API [joes] Two new request lookup functions:
    1. $req->args - param lookup using only the query string
    2. $req->body - param lookup using only the POST data
libapreq2-2.13/docs/html/apreq_faq.html0000644000076400017500000001401411473533324017040 0ustar issacissac libapreq2-2.13: libapreq2: FAQ

FAQ

Issues during installation.

[...]


Using libapreq2 with Apache2 and mod_perl2.

I keep getting "undefined symbol" errors whenever I use Apache2::Request or APR::Request::Apache2.

You need to load mod_apreq2.so at server startup, which grabs all the required symbols at server startup. Be sure your server config contains a line like

        LoadModule apreq_module   modules/mod_apreq2.so

When I use Apache2::Request in my output filter, it seems to lose the incoming POST variables.

The problem is likely that the mod_apreq2 filter has not been added to the input filter chain in time to read the POST data.

There are two solutions to this problem:

 1) Write a filter init handler for you filter that instantiates an
    Apache2::Request object.
    http://perl.apache.org/docs/2.0/api/Apache2/Filter.html#C_FilterInitHandler_
 2) Use .htaccess or your server config to ensure the apreq input filter
    is active for this request with "AddInputFilter APREQ" or somesuch.

We recommend using (1), and falling back to (2) until you get (1) working.

When I try to upload a file, why do I get this error "[error] Can't locate .../Apache2/Request/upload.al in @INC"?

Apache2::Upload is now a separate module in apreq2, so you need to use Apache2::Upload to load the Apache2::Request::upload function.

This also applies to "Can't locate auto/APR/Request/Param/slurp.al in @INC". This is because Apache2::Upload is implement by wrapping the APR::Request::* packages.


Using libapreq2 outside of Apache.

[...]


Contributing to apreq development.

How is the subversion repository managed?

apreq's repository is broken into three subdirectories:

    /trunk    - the current codebase for active development.
    /tags     - release snapshots.
    /branches - where older releases and experimental development lines live.

apreq follows a Commit-then-Review policy for its entire repository, but being a shared library places certain restrictions on the admissible changes for stable trees. Basically the header files cannot be modified; only new functions and structures may be added to them. Any time that happens, the minor-version needs to be bumped, and the patch-level gets reset to zero. Changes that only modify the library's implementation (.c) files require a bump to the patch-level. On stable trees, this version tracking should happen on each commit, to make auditing easy for other developers without resorting to a draconian Review-then-Commit policy.

libapreq2-2.13/docs/html/apreq_install.html0000644000076400017500000000641011473533324017740 0ustar issacissac libapreq2-2.13: libapreq2: INSTALL

INSTALL

PREREQUISITES:

Please see the PREREQUISITES file.  If you are building httpd-apreq-2 
directly from svn, you can generate the list of prerequisites:

            % perl build/version_check.pl


INSTRUCTIONS:

FreeBSD/Solaris users must substitute "gmake" for "make" below.

Unix build, where libtool/automake/autoconf works:

            % ./configure --with-apache2-apxs=/path/to/apache2/bin/apxs
            % make
  (optional)% make test
            % make install
  (optional)% make docs_install

Or using the CPAN/perlish way (which includes the Apache2::Request and
Apache2::Cookie modules):

            % perl Makefile.PL --with-apache2-apxs=/path/to/apache2/bin/apxs
            % make
  (optional)% make test
            % make install
  (optional)% make docs_install

Developers and other folks using httpd-apreq-2 directly from svn need to
execute "./buildconf" prior to running "./configure".


Win32 build:
  C:\httpd-apreq-2> perl Makefile.PL
  C:\httpd-apreq-2> nmake
  C:\httpd-apreq-2> nmake test
  C:\httpd-apreq-2> nmake docs
  C:\httpd-apreq-2> nmake install

SVN (Subversion) ACCESS

Development of httpd-apreq-2 can be followed through the svn repository:

  $ svn checkout http://svn.apache.org/repos/asf/httpd/apreq/trunk/ httpd-apreq-2

Developers with commit access must use the https protocol instead;
note that, if you are compiling svn from sources, you must
supply the configure script with the appropriate switch to
enable ssl.

Subversion sources, and binaries for some platforms, may be obtained
through the home page:

     http://subversion.tigris.org/

Documentation on using svn is available at

     http://svnbook.red-bean.com/

In particular,

     http://svnbook.red-bean.com/en/1.0/apa.html

contains a guide for users familiar with cvs.



libapreq2-2.13/docs/html/apreq_license.html0000644000076400017500000003113611473533324017717 0ustar issacissac libapreq2-2.13: libapreq2: LICENSE

LICENSE

                                 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.
libapreq2-2.13/docs/html/apreq_notice.html0000644000076400017500000000314211473533324017552 0ustar issacissac libapreq2-2.13: libapreq2: NOTICE

NOTICE

This product includes software developed by
The Apache Software Foundation (http://www.apache.org/).
libapreq2-2.13/docs/html/apreq_status.html0000644000076400017500000001137411473533324017622 0ustar issacissac libapreq2-2.13: libapreq2: STATUS

STATUS

2.13 Released on December 3, 2010

Contributors looking for a mission:

  • just do an egrep on "TODO" or "XXX" and see what's there

CURRENT RELEASE NOTES:

RELEASE SHOWSTOPPERS:

CURRENT VOTES:

  • Should we switch to EU::MM for determining the full path to perl? The problem is that some folks move their perl binary post-installation, but never adjust Config.pm. EU::MM is smart, by accepting a full path in $^X or by searching the user's $PATH for $^X, before resorting to Config.pm. However, if we change apreq2, we should also lobby test-dev to adopt the same solution for Apache::Test. Otherwise our test suite will likely fail, even though the rest of the perl build system will presumably still work.

+1: joes 0: -1:

  • Drop ExtUtils::XSBuilder as the C API is fairly stable now. The header parsing + xs generation stuff may be too difficult for the community to maintain over ordinary .xs files.

+1: pgollucci

TODO:

  • Get -libmodperl to work like it does in mod_perl land.

  • Get static builds working again.

  • Implement (some of) RFC 2184 in the multipart parser.

  • Dump automake, preferably replacing that with more stuff from httpd/apr's build system.

  • Move module/t to module/apache2/t.

  • Figure out how and where the apreq_xs_ headers, and typemap file, should be installed.

  • Write tests for the apache 1.3.x module.

  • Fix the broken make dependencies, especially in the module and glue subdirs. The libtool workaround (for OSX IIRC) that copies module/.libs to module/t is especially bogus.

  • Round out the unit tests in library/t. Ideally each API function should have its own tests, and each possible error status should be both tested & documented. Also upgrade these tests to use the Apache::Test framework.

  • in glue/perl/t/apreq/cgi.t on Win32, printing to the error log hangs if the strings involved are about 10000 in size. This doesn't occur in the env/cgi tests - why?

  • Why must fprintf(stderr, ...), rather than apr_file_printf(err, ...), be used on Win32 in cgi_log() of src/apreq_env.c?

  • Get env/ (Apache::Test) tests to work for --with-apache2-src option. Also add a test to configure that prevents simultaneous use of --with-apache2-src and --with-apache2-apxs.

  • symbol exports files:
    1. aix needs .exp files

  • Install the html dox during "make install". Should we do this for the doxy manpages also?

  • Rework glue/perl build system to use apreq2-config instead of relying on paths like "../../src".

OPEN ISSUES:

  • Should we bundle an apr-based "application/xml" parser? If so, how should we parse the xml data into an apr_table?

BUGS:

  • Fix build automake/libtool/autoconf build system so it works properly on OSX & AIX.

WISH LIST:

  • I [joes] wish folks would contribute some glue code for one of these:

  • php,
  • Rivet,
  • mod_dtcl,
  • mod_python,
  • mod_jk,
  • tomcat,
  • mod_ruby,
  • mod_parrot.
libapreq2-2.13/docs/html/dox.css0000644000076400017500000003033211473533324015520 0ustar issacissac/* 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. */ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * mainframe ;-) * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ html { font-size: 14px; } body { background-color: #fff; color: #036; padding: 0 1em 0 0; margin: 0; font-family: Arial, Helvetica, sans-serif; font-weight: normal; } pre, code { font-family: "Courier New", Courier, monospace; } strong { font-weight: bold; } q, em, var { font-style: italic; } span.transnote { background-color: inherit; color: #888; } /* fixup IE & Opera * otherwise they forget to inherit * the computed font-size value */ table, code { font-size: 1em; } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Links * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* normal links */ /* ====================== */ a:link { color: #0073c7; background-color: inherit; } a:visited { color: #5A88B5; background-color: inherit; } a:link:hover, a:link:active, a:visited:hover, a:visited:active { color: #0073c7; background-color: #f0f0f0; } /* hover on non-white backgrounds */ tr.odd a:hover, tr.odd a:active, tr.header a:hover, tr.header a:active, /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Headings * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* h1 */ /* ====================== */ h1 { padding: 0.2em; margin: 0; background-color: inherit; color: #036; text-decoration: none; font-size: 22px; font-weight: bold; text-align:center; } /* h2 */ /* ====================== */ h2 { padding: 0.2em 0 0.2em 0.7em; margin: 0 0 0.5em 0; text-decoration: none; font-size: 18px; font-weight: bold; text-align:left; } /* take care of s inside */ h2 a, h2 a:hover, h2 a:active { color: inherit; background-color: inherit; text-decoration: none; } /* h3, h4 */ /* ====================== */ h3 { background-color: inherit; color: #036; text-decoration: none; font-weight: bold; font-size: 16px; margin: 1.3em 0 0.4em 0; padding: 0; } h4 { background-color: inherit; color: #036; text-decoration: none; font-weight: bold; font-size: 14px; margin: 1.3em 0 0.2em 0; padding: 0; } /* margin adjustment */ h3 + *, h4 + * { margin-top: 0; } /* IE confuses the + * :-( * so reset some things */ ul, .section table, .directive-section table { margin-bottom: 1em; } /* take care of s inside */ h3 a, h3 a:hover, h3 a:active, h4 a, h4 a:hover, h4 a:active { color: inherit; background-color: inherit; text-decoration: none; } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Tables * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* general */ /* ====================== */ /* table { border: 1px solid #aaa; border-collapse: collapse; padding: 2px; margin-top: 0.5em; margin-bottom: 0; } td, th { empty-cells: show; /* show border around empty cells */ padding: 0.1em 0.2em; vertical-align: top; text-align: left; line-height: 1.3em; } */ th { font-weight: bold; } td.centered { text-align: center; } tr.odd { /* for large tables alternating colors */ background-color: #f2f2f2; } tr.header, tr.header th { background-color: #e2e2e2; border-top: 1px solid #aaa; border-bottom: 1px solid #aaa; } /* bordered table cells */ /* ====================== */ /* turn off borders in tables nested in * bordered tables per default */ table.bordered table td, table.bordered table th { border-style: none; } table.bordered td, table.bordered th, table table.bordered td, table table.bordered th { border: 1px solid #aaa; } /* index page layout table */ /* ======================= */ body#index-page div#page-content { width: 100%; /* IE fun */ } body[id]#index-page div#page-content { width: auto; /* reasonable browsers. */ } table#indextable { width: 100%; border-collapse: collapse; border: 0 none; } table#indextable td { width: 33.3%; border-left: 1px solid #aaa; padding-top: 0; padding-bottom: 0; } table#indextable td.col1 { border-left: 0 none; padding-left: 0; } table#indextable td.col3 { padding-right: 0; } /* mod/dir. overview table and quick reference */ /* ============================================ */ table.module th, table.directive th { white-space: nowrap; } table.qref { border-collapse: collapse; width: 100%; } table.qref td { border-style: none solid; border-color: #aaa; border-width: 1px; } table.qref td.descr { padding-left: 1em; font-size: 13px; } table#legend { width: 100%; border-style: none; border-width: 0; vertical-align: bottom; padding: 0; margin: 0; } table#legend td { vertical-align: bottom; margin: 0; padding: 0; } table#legend td.letters { width: 100%; padding-bottom: 0.5em; } table#legend table { vertical-align: bottom; margin: 0 0 0 0.4em; padding: 0; height: 7.5em; } table#legend table td, table#legend table th { vertical-align: middle; padding: 0.1ex 0.2em; line-height: 1em; white-space: nowrap; } /* related modules & dir. */ /* ====================== */ /* assuming, all links are enclosed by * or * */ table.related { border-collapse: separate; } table.related th { padding: 0.2ex 0.3em; background-color: #e5ecf3; color: #405871; vertical-align: middle; } table.related td { padding: 0.2ex 0.3em; } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Lists * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* list default values */ /* ====================== */ ul { list-style-type: disc; } ul ul { list-style-type: square; } ul ul ul { list-style-type: circle; } li, dt, dd { line-height: 1.3em; } dt { margin-top: 0.5em; font-weight: bold; } ol li { margin-top: 0.5em; } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * main page sections * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ div#page-header img { padding: 0; display: block; margin: -70px 0 1px 2em; width: 248px; height: 70px; } div#page-header p.apache { background-color: #405871; color: #fff; padding: 0 0 0 248px; margin: 0; text-align: center; vertical-align: middle; font-size: 16px; font-weight: bold; line-height: 29px; } div#page-header p.menu { text-align: right; font-size: 13px; margin: 30px 0 0.5em 0; padding: 0; } /* breadcrumb navigation */ div.qindex, div#path { text-align:center; margin: 0.2em 0 1.2em 30px; padding: 0; font-size: 13px; } p { line-height: 1.3em; } /* page footer */ /* ====================== */ div#footer { /* margin-left: 30px; */ font-size: 13px; border-top: 1px solid #405871; padding-top: 0.2em; } div#footer p.apache { float: left; text-align: left; padding: 0 0 1em 0; margin-top: 0; } div#footer p.menu { float: right; text-align: right; margin-top: 0; padding: 0 0 1em 0; } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * -> The End (modified doxygen-generated stylesheet below) <- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ CAPTION { font-weight: bold } A.qindex { font-weight: bold; } A.qindexHL { font-weight: bold; background-color: #405871; color: #ffffff; padding: 2px 6px; } A.qindexHL:hover { background-color: #405871; color: #ffffff; } A.qindexHL:visited { background-color: #405871; color: #ffffff } A.el { font-weight: bold } A.elRef { font-weight: bold } DL.el { margin-left: -1cm } PRE.fragment { border: 1px solid #CCCCCC; background-color: #f5f5f5; margin-top: 4px; margin-bottom: 4px; margin-left: 2px; margin-right: 8px; padding-left: 6px; padding-right: 6px; padding-top: 4px; padding-bottom: 4px; } DIV.fragment { border: 1px solid #CCCCCC; background-color: #f5f5f5; padding: 6px; } DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } TD.md { background-color: #F4F4FB; font-weight: bold; } TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; } TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; } DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold; } DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller } BODY { background: white; color: black; margin-right: 20px; margin-left: 30px; } TD.indexkey { background-color: #eeeeff; font-weight: bold; padding-right : 10px; padding-top : 2px; padding-left : 10px; padding-bottom : 2px; margin-left : 0px; margin-right : 0px; margin-top : 2px; margin-bottom : 2px; border: 1px solid #CCCCCC; } TD.indexvalue { background-color: #eeeeff; font-style: italic; padding-right : 10px; padding-top : 2px; padding-left : 10px; padding-bottom : 2px; margin-left : 0px; margin-right : 0px; margin-top : 2px; margin-bottom : 2px; border: 1px solid #CCCCCC; } TR.memlist { background-color: #f0f0f0; } P.formulaDsp { text-align: center; } IMG.formulaDsp { } IMG.formulaInl { vertical-align: middle; } SPAN.keyword { color: #008000 } SPAN.keywordtype { color: #604020 } SPAN.keywordflow { color: #e08000 } SPAN.comment { color: #800000 } SPAN.preprocessor { color: #806020 } SPAN.stringliteral { color: #002080 } SPAN.charliteral { color: #008080 } .mdTable { border: 1px solid #868686; background-color: #F4F4FB; } .mdRow { padding: 8px 10px; } .mdescLeft { font-size: smaller; font-style: italic; background-color: #FAFAFA; padding-left: 8px; border-top: 1px none #E0E0E0; border-right: 1px none #E0E0E0; border-bottom: 1px none #E0E0E0; border-left: 1px none #E0E0E0; margin: 0px; } .mdescRight { font-size: smaller; font-style: italic; background-color: #FAFAFA; padding-left: 4px; border-top: 1px none #E0E0E0; border-right: 1px none #E0E0E0; border-bottom: 1px none #E0E0E0; border-left: 1px none #E0E0E0; margin: 0px; padding-bottom: 0px; padding-right: 8px; } .memItemLeft { padding: 1px 0px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-right-style: none; border-bottom-style: none; border-left-style: none; background-color: #FAFAFA; font-size: 12px; } .memItemRight { padding: 1px 0px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-right-style: none; border-bottom-style: none; border-left-style: none; background-color: #FAFAFA; font-size: 13px; } td.tiny { font-size: 75%; } /* a { color: #252E78; } a:visited { color: #3D2185; } */ libapreq2-2.13/docs/html/doxygen.png0000644000076400017500000000240111473533324016373 0ustar issacissac‰PNG  IHDRd-ok>ÂgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<]PLTEǾÏ"&©ÈÎï¶»ÖÓÚú“¢Þ ¬à¶Âõ‡§ÕÙêÉÊÎáâæ{ŽÔ¡ëˆ™× ²ø§¬¹ÀÀ±ÝÝÎùùéõõçëëåED9×ÖËhg]_X<@:#mhUÿÿÿÝÀ1tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍvÿIDATxÚbC£: d#„„………h` @¡X",***LKˆ.–], ºX@t± €èb @ÑÅ€BµD„6–š%""´° € ˜% ˆ™B:H¢ˆ²Áf@• ˆRPy"K`\PbC(!II!h©…ëƒ(ñ„Ä!ꈬC„Ä…àl!0[X\J\$TMˆ(’>a$S„ Ù@ Ш@R.$‚¬LJBR¢‰AÌG1 ¬ Â(FȃÔPhhÁTÀ¢„%!`€&q°%u P ¹¢ ¬ € ¹CT$B¢à|‚ºW„¤Àl £!B`R$( …Ĉ‘’ž@AÅ%ĤÄ%@,(—ʂڱ%$ÁââRPmB U`1IˆYB  99€\1 yCCCÿf"[N 'Ü=TGÈ’øl8˜^Kû5<êSæRɤ”%î@@ à›Ê b1 qÅAXHˆ¸&ØB’R y n˜P„Ìã–4A €€j¹€€>Ü ˜ t!˜+(.ÈÅWQ±A2ÜÜMUÜ‚’’‚‚â `1 %`19€F< 3cZÄ`óe!\ˆ DÈ+. 83‹³Àä¸!lYYA -6‚EJŠ¢V €@©žXXX 4„å Ê@86Ð`RdB´€4I "Ý "–@xrÊŒ‚H€AÊ`—f ÉȰCŒ"XV0ɲ³C b@2…¬H ¬È“ p)!(ì‚ 0Ž4ˆ)(%RÁÎ ¶$€TÊ€¥Àþb‡b,säÐ@7À üѰ‚Òî?f¥Ö—\PIx!I´¦"”Ȉ’3¨ QY˜ÿt^^ÛØgv- }>WJOAV`$&#”¦8ùøø8€\FF ›SFJ$ÂÆ€ÐƊС䈉ÀÀ 4ª…Èäå -Á§‡ €H²…—ŸŸŸf ?ðâ5„ €k1Âd‰,ŒÃ ³ƒ“€.€"­F™ËË€àñ‚½ÁIÈ€"±Ù4ÉH gx|‚f©m)))9´. aMDƒ& ºX@t± €èb @ÑÅ€¢‹%DKˆ.–], ºX@t± €èb @€d`‚ɽSµOIEND®B`‚libapreq2-2.13/docs/html/examples.html0000644000076400017500000000313611473533324016722 0ustar issacissac libapreq2-2.13: libapreq2: Examples

Examples

Here is a list of all examples:
libapreq2-2.13/docs/html/feather.gif0000644000076400017500000001450711473533323016326 0ustar issacissacGIF89aøF÷‚þŽþ®úúþoýOþ5­üËþýËþãþþäÿŽüpý¢`þXoý3ÿè«‹Püp•sú/ýîϤn6üK¬ûc®JŽ+ Š ¼3PÝnܪVÃF¤w@qU j §:¬ÃO+„8 ÉÚ2ä$r)ÇÐ7ÕRš úù÷Ê.ü‘8ÔѲfÍêèå–“†mi[|}eàãCCCX7¾º©QPKïïïä æ!!!¯¬•___..-ppoöf ŽsüÈ£þó㌆£—‘——•Ówô«š››ì¸›ÏÏÏÜ×ÈËÇÀ°¯®ç’fßàßüç¨ýåíýªV¿¿¿ôßЃ‚k-3û™"êgañÊ^Êr3ÍŠWÕ´@Ö’ó—ee_x’ay’)Rz?n7hDf‡8i6[ýþÿGt<`ƒ3fÿÿÿ!ù‚,øF@ÿ H° Áƒ*\Ȱ¡Ã‡#Jœ8Q‰Š3jÜȱ£Ç{Pù A‚"B„ø0ãÅ;¼ìADI$Y”“L•/{„‰2"Ñ'iz€\Ê´iS5+I–trÇŽ¨²ò¸ÐD‚` A€À€1RX À â ˆ B@ì4$Ê3E¦,A2D 0E0]¼Ã¥N#Kž|¥rå+@8° sŽ9¾‚¢@ÙÓÔ²U‘ë¸ ,¨x-W èÖm¡A'NT®AC’—P̸¹Q EÂ@؃ “!L¾0™Ìi4?~lÿAžŠ^¿ÆX‘2kI NP\ö´Žêëp¡¢mœÐŸk¸Àܵ›n,Dà›Ñ‚ÃU &h\%tœ xà܈xPB†QÂpFpÀ‹,X @tP…]D]taDP¬EvFLFwK©Ñz¢™F€ ¥…EL‚eÚ©ù×*¸ÀA^`ÊðÀ°å%à ,èæ[ Ôðbn ž „1!…¨¨á†%d`‚ %ˆHâ `Üœ-± ĸÛpÀ²%À宵եj¬–W<|@…Q’0Al0Á°RÿðB«Aþ6£ ð‡@™ŒyMú& rBXa -§ Î—ÁqÏ‚¢‚2Gè¶ÏaàÁ Dp§o0z,´Ð€”k®xÁ†+lp)€¬ÀY¸°/¿$(Ð<”D^V!Þ3 Ê ®¾J G,k«Ã0ƒ k;" «jh¸í‚+C G0 C¹ç2`—ƒ»E ¨nè2˜È0éÍ Ü&€ËÂÖ˜W ²! %.<ÐÖZMÿC¾ü^ Ãi1Äp €uié¶ä(4%ñ ‚Y‰€ƒJ0бÃܵDÁݲR0Ä/èÿ-1 ­ÂàôÓ`I`é^- Â.¨µõÔ[“e^ÝpYVÞ€Bäg¥0¥Àk}Ú” œ ÁI8QRÛV}@ pï@à ³Û È3Ѐ#Ðp;ÈtoüñÈ'üP§¦±†G‚±ÓaÔÃF<ÑEõÊwï=C=¸áFxT”/üî¥ÂÙKæPÚiƒY1ÐW 1EP@±DJƒ¤0½ídJXBQÇ'\ä{<žà¶Öå`l xœ“Êr–$Ü >fI¶ôšzå%HÙ›àÕ›M¨Ó^˜0…)ŒÀc#B ÁBä eàÂÂÿvà6l?¢ÛpÀö9NléÉAjØòLt)dd¬ÔLM¾9Áº|óuÅ‘VŸüTnåÁˆcj4,p0H  z¤…(Lá Üó¡F†0„+Ìa\ @|çÕq¦ î³ÚÅš&à>N#P—p} …{@mæò%0)hA_$£„†Ã4òiCÀ–pH(8š@E@¨pÒd^= R:›”€üó€”å !ƒ²°Aô  ü«‘7&.+„ Úã'ä€`(ØÌ’¼–$.£äU Â$J0ýLe`ÔnÈh;)«%8ðÔÿ!Xrè8l Qˆ¸E( t @°*´ì.G8a\T€Î¡å jW‹¬¤€ \°3+¸JÂ0ð½no{Û€¬`à·W½®ŠXúS°¡YJ# þÄSÌ[%(ð¾œoµ‹1‚YnÂå4¨;³Ë Zf̨gV‘ D™)ö .ª¢¾D—~é k§ñܧ¼‚*-‰W ·À1Ý ’ `f@X½ÀUA€)J7 ØZöU,uiVé…+¥²Š„Û——®  L4 )¥¾úÅÿ¬%™lËbð/´ ®-.ÈhYÀB‚|s X\ãP€Òÿ‘mª3À 𙳙ä¯ûh§ànD´+ñî A‘”¤‚Þ T5A¬`ºÑ­.ðCÛÇe33XȮ˱^à¼+À np÷Mw8ØXtApƒÎ4Á!ƒ.s÷Ëßþúw¿_˜BÈÿøÀ©ÌBˆ3`!'m„ÀPŒ fm(0‚7,™+XÁ ^ðBJT¢•²ó+hBgäÙ pKèIˆ`ê¤ B¤Ðœ'ˆAÃòDàÀ…" q<(yêšpó0©£¯=ÝEE;8Ìj*?"BÛÐ…%haš‚ Ã?öG ùÌQH¬•Ì´øÿÉ{3“@@~uVF­ `“¬ A/Š'¼ÒÔ€½Àx Kx–†"±³·ûH³¸`ŠŸlK¨í¤ð²â(WmñÆEóŒÀ=ñéq±ƒ;–€wPc¢ ÅÚžhAoàUÔ ”'ŒXÀl¯Å@Å Õ@Òð#‚„ ZйqàoäR¡Øç•Ÿ©¡ÍÈeþu&uÿT |wæÅ‹¸“Sjz5`E‚×+T€nÈClœå¸ ú­Žë²º×Tuo2)¶!)X/–RLk!Vü‚%«už†6>Pþez%+<@_•7pyô±A¡“5ÛGBOíÇ.‚öjº7OdÔwBÅ"KÖr"2P³7(†.pçv—~*L.Ãb’)þÁ§¢³Zôå+ÐgƒÃ6Ãe\w……R)•7ó7z£RlPz+¤&-pîBFRBPFô(ò'!Ò!²´ƒAå-EU4ir&ëò"9ó"”âPç)`",:ãEë|³ÿ¡4NH8Q³¦å5¨±QVÒ:¯c #áAWýÅW€•1}•R{#+cX}+°ò®ø30 ¤‡…R(ØrÞrP0ȆºAˆ wæ‚~„¸2Tulø&2W'84ug/mᄎi¡/oÑ"¤Y…Sg«%IŸByé¡9ðQgïá0`d/P]6A0²Â;cFQ^-ñR+ÅŠA0ïˆRw³73E„/cU°±UdB P3øg.s‚¿r/ÍèŒna°ñŒÓø2PÞG‰gA]c‰g…8¬u5`b¡áóQ’p³uAªsÿÆ6¶ó:0AW±4ÿ°MãÁŽ;Çx+‰†³ò7c81­òèÔU ø/ûÁI«UšÓYOYkqZc‰eWi‰1°‘hA’`‘¤E‰.@é!pçµ$g³gMôLÄ6•…°6à0½C3@RrÓ;Çi,%+}X3pQ¡3]Œ#9+€ã8ŽViL" •´åRäVm¹]a_(@U–ã:&Þ¨žóopÇU—ÂcP^QWú˜¸™›º)ZP`¶›À)dL0dÐe`Ò÷Õ!¿œÎ =àGL@X P€|!½–>!{€Éùœâÿyi^`àA^ePVp$ñ3VDÀwÌ =Y q=EÐÑ'žþih >n°H4ptìÃdÿv66€>&A=†!ŸJýƒF a i Qþ£-“öŸ¹lÊçZ;Ã%G'E¯eg•‰'yu?EY`GS`ò™`aàhÍK o :oëY¤"7YA<°MäD²•@gw&Bj…P8ù3ˤKÀwXðS ¤Ám€#"U ¦CdWàå×0rZ“ë3N(™a¡[y¥"ôˆ\b/_õÛ¡?Q€€¡Ha¦?ÿ–C6’*u@1©:©“8ðšAùqôl ZâIQ“’Œrn"††#Pƒ1?FP«ƒ"?©ÿö«ÅÆ©G'P*%ŒS¬bqQ™Ð¿buïT'° ‡k¯êhë¶-O€Ê«wås}ñ“ÇdÇ*t–p$:vÖ®˜ÂgÁ’B“2,êg-Pt‚O)ÒÅ¡LR0‹ÎñOP ®Ì5#ññ!6 Y[ÅŠ:ð®MCB\âþqE*`;h+ã~Û¦,d'-;5KÛrH jª°ÝbJà°sŠ}éÿZ:@±ð“5vJ¥ê„}ÆNA[,¾ç °–{@@!@àÒ’"û×À3RàGZ€mY`F°Rà­.û–AHC@…TF i胢ÞTBÇÓl¢mu{ªîDŒ¦)h¨~ €,2¨'G(;(zp¤=0ì†êÆnEP\ûn¶!©“Êrp°¹p0Uä¤îáKj“Æ™át8™ú±öbªèt4xk,(˜zn˜{ê²O¬„GiG"ØÂvøä @]pQPQ‰önSÐ4¶=–[@TcàØ{tã„/@³/qº<ÿÀÈ¥:0NæRz¥ú’RWE8³ˆoR3pÒúÄm³æmÆQ²{(¿;(ptPÅ‘'»Ç.rx—Qà#R ZÐEÀrk6ŸÒ»¦` ãZ>¶ƒ;¢‹½)yËÖ¤N¤šçU±Í†g[JÒgÝW§¤‚G ƒ÷¤¿bÇ»~’‡ü×-p¿‚{Så2HC&*€w $X`nfÚ¥4`àGáIiV€&aU¬ëN`§#u°’":I¿Ò3IðeŒ‘]Ô €¶Ttƒ9¥cWvkôOQ;"‚F‡+FÈj/" –Rw’ƒw‚ üƒ‚ÿ@c>‘Åü¥¿J}#§ßk;’Ž‰ã‘ ÷YIp8væ.@&}v»±%ä±;Ã{m\­n(!rX !eƒ„[¸ü.d×Ãw‚&/‚4„X¯‹Åy°^˜cÈ‚€sk@`3:ßdgðÚÛ˜!Žþ†©×¼®wÖ€ç´Â±‘ýÆ=ÓP€Æ.puØ6,×2ó¿Ñ­'Ç%;¸üK‹Þâ‰B¼MEqüÌ.hØ&3r_âŒÂç+ð”$°p~@RÐLÔQbPig°¢ ú€dÑIõã$rë%àœŠXmè"ÐË+½ñÆ-@h’{÷ëzM{‚‡¸ÿ<{p´ÃãB¿¼d.”Ò·”RÐv7~ƒóY©±5°$M@£rt`³‹±h¼séÃ>ž3ÆãLμâ§b‚±}&­½×Æ F·×†]篮4vhÓuˆÃ´X"ßb{%@F,Ô‹wÑ{`‚UîT/Jã}h:ea9°…¬)\N=nõd7³5ª©§(ðAðÓ®..c,誀)Ø'¿ØÒoÌÃiÔ!a§SqtÚ×RÓøü¿8!BÀ2 ·‡ˆ×åŒ:Èã—•óZ+Ù8L¦:T? €yW6`7Ap71E"ê[uÈI§æÝGÆ£„,,p»ÌRF¸«»ÿÂ,iÔ´áÖ'±§ƒw¼‡ÁË‹òÄvB31ƒ×ЈÁ"WT/KSÌÛ—¥šn帗"ªŠ}u7ø8†*ÅR®B8ðòm âà?³Bç&.Øvk½'ö§2=v²wÞ;h(³ºGq½h°1Ò2=Í(ò{.«VQ[Å„TÙ€J÷€€M˜:¾ZW"0›ÃÓ_p…I+|ÓRˆUŠfØBÜ]' zGËÍ’"<•ÚoM"в#ð>8r‡BàË-Ⱦ§ÊÁÂ0^UWÕ±@L‘ù„5?eU9` •ëE¡’—Å&Fôëh`OP˜cˆRõ…dÿø*5UXfx"å­ƒYÞ·èƒq(HÅé— €œ êíTQy=YG¯J3/Ô­±Sùn‘YO:g±§¥1`%PÉ8H}Ô¾¥6áÁ0`/p›X˜ žR®ØþØWÉ}7¾‹Ë-=.ßB2E#.üŒ,üìθUŠX€  ˆx×y=,¢2ðš$ ™’š•ŸôY£Æ/95ÿÂ5`ygùMcÓã¾%n“¤¶s70ðBfRþˆéвX‹Œ2Ã;…i˜¬HBˆ")`Ò±×ägˆ=mqÍg[äNqQ~}†E{–)À?BÚXÌ£&5yI ÿWëÑ9VCó³®’,é :&‘hS'‘—5)Ü8 ìB†0Àì#Ð7/€*õ`HX25”5å7ßègtÒ8…“jA,»³±4¾¢%__ꙥ/10|]bÂXÙZ±Nšû­mu–‘I:w’œé>A/( c;.Ûä6v5à¸i7¯¢ŠD9X¬rЇ5SzCÎg[å4c5ü¢ãðºÑæXI0–u›å¨Þ€{ @ªëžóŸâ9®e[‹“:dƒëk©‰ÀD¾å+ÀšCÏç±H\¸;²É«EN1ÅžRÉ]ð/1„UàlPöš~³¢‰8éñ8kÿoã”8s_¡ ª¤éWÚ‘f‰¾æ0¶n…Ÿ1ïqYxx™—; 6Å…;Ya;Û!DÌÀ hDAA .dØÐáCˆ%N¤X1â&l ÐQ#GØpÀä$n(  M,€ã )àY nÜTPt¦ME,ȱ"O:.ä  ÁЧ,‡æ€ A‚8||øâƒ4Ðâ "Ä8FDø°®E¼yõîåÛwáˆ3æŽxð FŒ ‚0¬¸ÐøÂŠ+HHqÁE –-‹‚X‘Ôå ]¿ò¸´‰'9PèÈœƒ gIƒÐü™†$GØà=×ïoàÁ…'þûnÃãŠ1,‡¸¸ñŠäÅ¥O§N< ;libapreq2-2.13/docs/html/files.html0000644000076400017500000001044411473533324016206 0ustar issacissac libapreq2-2.13: libapreq2: File Index

File List

Here is a list of all documented files with brief descriptions:
include/apreq.h [code]Main header file...

Define the generic APREQ_ macros and common data structures

include/apreq_cookie.h [code]Cookies and Jars.

apreq_cookie.h describes a common server-side API for request (incoming) and response (outgoing) cookies. It aims towards compliance with the standard cookie specifications listed below

include/apreq_error.h [code]Error status codes.

Define the APREQ_ error codes

include/apreq_module.h [code]Module API
include/apreq_param.h [code]Request parsing and parameter API
include/apreq_parser.h [code]Request body parser API
include/apreq_util.h [code]Utility functions for apreq
include/apreq_version.h [code]Versioning API for libapreq

There are several different mechanisms for accessing the version. There is a string form, and a set of numbers; in addition, there are constants which can be compiled into your application, and you can query the library being used for its actual version

module/apache/apreq_module_apache.h [code]
module/apache2/apreq_module_apache2.h [code]
libapreq2-2.13/docs/html/functions.html0000644000076400017500000002171411473533324017116 0ustar issacissac libapreq2-2.13: libapreq2: Data Fields
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:

- a -

- b -

- c -

- d -

- f -

- h -

- i -

- j -

- m -

- n -

- p -

- r -

- t -

- u -

- v -

libapreq2-2.13/docs/html/functions_vars.html0000644000076400017500000002155111473533324020150 0ustar issacissac libapreq2-2.13: libapreq2: Data Fields - Variables
 

- a -

- b -

- c -

- d -

- f -

- h -

- i -

- j -

- m -

- n -

- p -

- r -

- t -

- u -

- v -

libapreq2-2.13/docs/html/globals.html0000644000076400017500000005063011473533324016530 0ustar issacissac libapreq2-2.13: libapreq2: Data Fields
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:

- a -

libapreq2-2.13/docs/html/globals_defs.html0000644000076400017500000002024111473533324017524 0ustar issacissac libapreq2-2.13: libapreq2: Data Fields
 

- a -

libapreq2-2.13/docs/html/globals_enum.html0000644000076400017500000000474711473533324017564 0ustar issacissac libapreq2-2.13: libapreq2: Data Fields
 

libapreq2-2.13/docs/html/globals_eval.html0000644000076400017500000000623111473533324017535 0ustar issacissac libapreq2-2.13: libapreq2: Data Fields
 

libapreq2-2.13/docs/html/globals_func.html0000644000076400017500000003126611473533324017547 0ustar issacissac libapreq2-2.13: libapreq2: Data Fields
 

- a -

libapreq2-2.13/docs/html/globals_type.html0000644000076400017500000000506211473533324017570 0ustar issacissac libapreq2-2.13: libapreq2: Data Fields
 

libapreq2-2.13/docs/html/group__apreq__lang.html0000644000076400017500000000401511473533324020724 0ustar issacissac libapreq2-2.13: libapreq2: Language Bindings

Language Bindings

libapreq2 APIs for programming languages other than C More...


Modules

 Perl
 XS Modules.

Detailed Description

libapreq2 APIs for programming languages other than C

XXX

libapreq2-2.13/docs/html/group__apreq__module.html0000644000076400017500000000427411473533324021277 0ustar issacissac libapreq2-2.13: libapreq2: Modules

Modules

apreq2 modules included in libapreq2-2.13. More...


Modules

 Apache 2.X Filter Module
 mod_apreq2 - DSO that ties libapreq2 to Apache HTTPD 2.X.

Detailed Description

apreq2 modules included in libapreq2-2.13.

XXX

libapreq2-2.13/docs/html/group__apreq__xs.html0000644000076400017500000000705011473533324020437 0ustar issacissac libapreq2-2.13: libapreq2: Perl libapreq2-2.13/docs/html/group__apreq__xs__apr__request.html0000644000076400017500000005043711473533324023356 0ustar issacissac libapreq2-2.13: libapreq2: APR::Request

APR::Request
[Perl]

NAME

APR::Request - wrapper for libapreq2's module/handle API.


SYNOPSIS

  use APR::Request;
  $req = APR::Request::Custom->handle($pool,
                                      "foo=arg1&bar=arg2",
                                      "apache=quux",
                                       $parser, 1e6, $bb);
  $param = $req->param("foo");
  $cookie = $req->jar("apache");


DESCRIPTION

The APR::Request module provides the base methods for interfacing with libapreq2's module API. It also provides a few utility functions and constants.

This manpage documents version 2.13 of the APR::Request, APR::Request::Custom, APR::Request::Cookie::Table, and APR::Request::Param::Table packages.


METHODS

APR::Request::Custom - derived from APR::Request.

handle

    APR::Request::Custom->handle($pool,
                                 $query_string,
                                 $cookie_header,
                                 $parser,
                                 $read_limit,
                                 $brigade)

Creates a new APR::Request::Custom object. The $query_string and $cookie_headers are immediately parsed into the args and jar tables. The $parser is an APR::Request::Parser object which is invoked when fetching body entries from the $brigade. The $read_limit represents the maximum number of bytes this handle may feed into the parser.


METHODS

APR::Request

pool

    $req->pool()

Returns the APR::Pool object associated to this handle.

bucket_alloc

    $req->bucket_alloc()

Returns the APR::BucketAlloc object associated to this handle.

jar_status

    $req->jar_status()

Returns the final status code of the handle's cookie header parser.

args_status

    $req->args_status()

Returns the final status code of the handle's query-string parser.

body_status

    $req->body_status()

Returns the final status code of the handle's body parser.

param_status

    $req->param_status()

Returns ($req->args_status, $req->body_status) in list context; otherwise returns $req->args_status || $req->body_status.

parse

    $req->parse()

Parses the jar, args, and body tables. Returns $req->jar_status, $req->args_status, $req->body_status.

    @status = $req->parse;
    ok @status == 3;
    ok $status[0] == $req->jar_status;
    ok $status[1] == $req->args_status;
    ok $status[2] == $req->body_status;

jar

    $req->jar()
    $req->jar($key)

With no arguments, this method returns a tied APR::Request::Cookie::Table object (or undef if the "Cookie" header is absent) in scalar context, or the names (in order, with repetitions) of all the parsed cookies.

With the $key argument, in scalar context this method fetches the first matching cookie. In list context it returns all matching cookies. The returned cookies are the values as they appeared in the incoming Cookie header.

jar() will throw an APR::Request::Error object whenever jar_status() is non-zero and the return value is potentially invalid (eg scalar $req->jar($key) will not die if the desired cookie was successfully parsed).

    $jar = $req->jar;
    @cookie_names = $req->jar;
    ok $jar->isa("APR::Request::Cookie::Table");
    ok shift @cookie_names eq $_ for keys %$jar;
    $cookie = $req->jar("apache");
    @cookies = $req->jar("apache");

args

    $req->args()
    $req->args($key)

With no arguments, this method returns a tied APR::Request::Param::Table object (or undef if the query string is absent) in scalar context, or the names (in order, with repetitions) of all the parsed query-string arguments.

With the $key argument, in scalar context this method fetches the first matching query-string arg. In list context it returns all matching args.

args() will throw an APR::Request::Error object whenever args_status() is non-zero and the return value is potentially invalid (eg scalar $req->args($key) will not die if the desired query argument was successfully parsed).

   $args = $req->args;
   @arg_names = $req->args;
   ok $args->isa("APR::Request::Param::Table");
   ok shift @arg_names eq $_ for keys %$args;
   $foo = $req->args("foo");
   @bar = $req->args("bar");

body

    $req->body()
    $req->body($key)

With no arguments, this method returns a tied APR::Request::Param::Table object (or undef if the request body is absent) in scalar context, or the names (in order, with repetitions) of all the parsed cookies.

With the $key argument, in scalar context this method fetches the first matching body param. In list context it returns all matching body params.

body() will throw an APR::Request::Error object whenever body_status() is non-zero and the return value is potentially invalid (eg scalar $req->body($key) will not die if the desired body param was successfully parsed).

    $body = $req->body;
    @body_names = $req->body;
    ok $body->isa("APR::Request::Param::Table");
    ok shift @body_names eq $_ for keys %$body;
    $alpha = $req->body("alpha");
    @beta = $req->body("beta");

param

    $req->param()
    $req->param($key)

With no arguments, this method returns a tied APR::Request::Param::Table object (or undef, if the query string and request body are absent) in scalar context, or the names (in order, with repetitions) of all the incoming (args + body) params.

With the $key argument, in scalar context this method fetches the first matching param. In list context it returns all matching params.

param() will throw an APR::Request::Error object whenever param_status() is non-zero and the return value is potentially invalid (eg scalar $req->param($key) will not die if the desired param was successfully parsed).

    $param = $req->param;
    @param_names = $req->param;
    ok $param->isa("APR::Request::Param::Table");
    ok shift @param_names eq $_ for keys %$param;
    $foo = $req->param("foo");
    @foo = $req->param("foo");

upload

    $req->upload()
    $req->upload($key)

With no arguments, this method returns a tied APR::Request::Param::Table object (or undef if the request body is absent) in scalar context (whose entries are APR::Request::Param objects), or the names (in order, with repetitions) of all the incoming uploads.

With the $key argument, in scalar context this method fetches the first matching upload. In list context it returns all matching uploads. The return values are APR::Request::Param objects.

upload() will throw an APR::Request::Error object whenever body_status() is non-zero.

    $uploads = $req->upload;
    @upload_names = $req->upload;
    ok $uploads->isa("APR::Request::Param::Table");
    ok shift @upload_names eq $_ for keys %$uploads;
    ok $_->upload for values %$uploads;
    $up = $req->upload("beta");
    @ups = $req->upload("beta");
    ok $_->isa("APR::Request::Param") for $up, @ups;
    ok $_->upload for $up, @ups;

read_limit

    $req->read_limit()
    $req->read_limit($set)

Get/set the read limit, which controls the total amount of bytes that can be fed to the current parser.

brigade_limit

    $req->brigade_limit()
    $req->brigade_limit($set)

Get/set the brigade_limit for the current parser. This limit determines how many bytes of a file upload that the parser may spool into main memory. Uploads exceeding this limit are written directly to disk.

temp_dir

    $req->temp_dir()
    $req->temp_dir($set)

Get/set the spool directory for uploads which exceed the configured brigade_limit.

disable_uploads

    $req->disable_uploads()

Engage the disable_uploads hook for this request.

upload_hook

    $req->upload_hook($callback)

Add an upload hook callback for this request. The arguments to the $callback sub are ($upload, $new_data).

import

Exports a list of subs into the caller's package.


SUBROUTINES

APR::Request

encode

    encode($string)

Exportable sub which returns the url-encoded form of $string.

decode

    decode($string)

Exportable sub which returns the url-decoded form of $string.


SUBCLASSING

APR::Request

If the instances of your subclass are hash references then you can actually inherit from APR::Request as long as the APR::Request object is stored in an attribute called "r" or "_r". (The APR::Request class effectively does the delegation for you automagically, as long as it knows where to find the APR::Request object to delegate to.) For example:

        package MySubClass;
        use APR::Request::Custom;
        our @ISA = qw(APR::Request);
        sub new {
            my($class, @args) = @_;
            return bless { r => APR::Request::Custom->handle(@args) }, $class;
        }


METHODS

  APR::Request::Cookie::Table - read-only version of APR::Table.

Tables in this class normally arise from calls to APR::Request::jar().

cookie_class

    $table->cookie_class()
    $table->cookie_class($set)

Get/set the class each table element is blessed into during a the get manpage or FETCH call. If defined, the class must be derived from APR::Request::Cookie. When called with $set, it returns the $table. Otherwise it returns the name of the current class, or undef if no cookie class is defined.

get

    $table->get($key)

Same as FETCH.

FETCH

    $table->FETCH($key)

In scalar context, this returns the first value matching $key (note: see NEXTKEY for additional notes). The match is always case-insensitive. In list context, this returns all matching values. Note: the type of the return values depends on the table's current cookie_class.

EXISTS

Synonym for defined; these tables are not allowed to contain undefined values. Since these are constant tables, they don't autovivify either.

FIRSTKEY

    $table->FIRSTKEY()

Returns the first key in the table.

NEXTKEY

    $table->NEXTKEY()

Returns the next key in the table. For perl 5.8+, if the key is multivalued, a subsequent FETCH on this key will return the corresponding value, until either NEXTKEY or FIRSTKEY is invoked again. For perl 5.6, FETCH always returns the first value.

do

    $table->do($callback, @keys)

Same as APR::Table::do; iterates over the table calling $callback->($key, $value) for each matching @keys. If @keys is empty, this iterates over the entire table.

Note: The type of $value inserted into the callback depends on the table's current cookie_class.


METHODS

APR::Request::Param::Table

param_class

    $table->param_class()
    $table->param_class($set)

Get/set the class each table element is blessed into during a get or FETCH call. If defined, the class must be derived from APR::Request::Param. When called with $set, it returns the $table. Otherwise it returns the name of the current class, or undef if no param class is defined.

get

    $table->get($key)

Same as FETCH.

FETCH

    $table->FETCH($key)

In scalar context, this returns the first value matching $key (see NEXTKEY for additional notes on this). The match is always case-insensitive. In list context, this returns all matching values. Note: the type of the return values depends on the table's current param_class.

EXISTS

Synonym for defined; these tables are not allowed to contain undefined values. Since these are constant tables, they don't autovivify either.

NEXTKEY

    $table->NEXTKEY()

Returns the next key in the table. For perl 5.8+, if the key is multivalued, a subsequent FETCH on this key will return the corresponding value, until either NEXTKEY or FIRSTKEY is invoked again. For perl 5.6, FETCH always returns the first value.

FIRSTKEY

    $table->FIRSTKEY()

Returns the first key in the table.

do

    $table->do($callback, @keys)

Same as APR::Table::do; iterates over the table calling $callback->($key, $value) for each matching @keys. If @keys is empty, this iterates over the entire table.

Note: The type of $value inserted into the callback depends on the table's current value_class.


SEE ALSO

the APR::Request::Error manpage, the APR::Request::Param manpage, the APR::Request::Cookie manpage, the APR::Request::Parser manpage


COPYRIGHT

  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.
libapreq2-2.13/docs/html/group__apreq__xs__apr__request__apache2.html0000644000076400017500000001006011473533324025064 0ustar issacissac libapreq2-2.13: libapreq2: APR::Request::Apache2

APR::Request::Apache2
[Perl]


NAME

APR::Request::Apache2 - wrapper for a mod_apreq2 handle.


SYNOPSIS

  use APR::Request::Apache2;
  my $req = APR::Request::Apache2->handle($r);


DESCRIPTION

The APR::Request::Apache2 module provides a constructor for interfacing with the mod_apreq2 Apache module.

This manpage documents version 2.13 of the APR::Request::Apache2 package.


METHODS

APR::Request::Apache2 - derived from APR::Request.

handle

    APR::Request::Apache2->handle($r)

Creates an APR::Request::Apache2 object. The argument $r is an Apache2::RequestRec object (from mod_perl2).


SEE ALSO

the APR::Request manpage, the Apache2::RequestRec manpage.


COPYRIGHT

  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.
libapreq2-2.13/docs/html/group__apreq__xs__apr__request__cgi.html0000644000076400017500000001002211473533324024321 0ustar issacissac libapreq2-2.13: libapreq2: APR::Request::CGI

APR::Request::CGI
[Perl]


NAME

APR::Request::CGI - wrapper for libapreq2's CGI handle.


SYNOPSIS

  use APR::Request::CGI;
  my $req = APR::Request::CGI->handle($pool);


DESCRIPTION

The APR::Request::CGI module provides a constructor for accessing CGI request data associated to a pool via libapreq2.

This manpage documents version 2.13 of the APR::Request::CGI package.


METHODS

APR::Request::CGI - derived from APR::Request.

handle

    APR::Request::CGI->handle($pool)

Creates an APR::Request::CGI object. The argument $pool is an APR::Pool object.


SEE ALSO

the APR::Request manpage, the APR::Pool manpage.


COPYRIGHT

  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.
libapreq2-2.13/docs/html/group__apreq__xs__apr__request__cookie.html0000644000076400017500000002652211473533324025044 0ustar issacissac libapreq2-2.13: libapreq2: APR::Request::Cookie

APR::Request::Cookie
[Perl]

NAME

APR::Request::Cookie - wrapper for libapreq2's cookie API.


SYNOPSIS

  use APR::Request::Cookie;
  # fetch inbound cookie
  $jar = $req->jar;
  $cookie1 = $jar->get("cookie1");
  # generate new cookie
  $cookie = APR::Request::Cookie->new($req->pool,
                                      name => "foo",
                                     value => "bar",
                                    domain => "capricorn.com");
  print "$cookie"; # prints "bar"
  $cookie->domain("example.com"); # change domains
  $cookie->version(1); # upgrade it to conform with RFC 2109/2965.
  # send a response header
  print sprintf "Set-Cookie: %s\n", $cookie->as_string;


DESCRIPTION

The APR::Request::Cookie module provides base methods for interfacing with libapreq2's cookie API. It also provides a few utility functions and constants.

This manpage documents version 2.13 of the APR::Request::Cookie package.


OVERLOADS

APR::Request::Cookie

""

    "$cookie"

The double-quote interpolation operator maps to APR::Request::Cookie::value().

    ok "$cookie" eq $cookie->value;


METHODS

APR::Request::Cookie

new

    APR::Request::Cookie->new($pool,
                               name => $name,
                              value => $value,
                              %args)

Creates a new cookie. Here $pool is an APR::Pool object, and $name is the cookie's name. The $value is transformed into the cookie's raw value through the class' freeze() method. The remaining arguments are optional:

-secure
-httponly
-version
-path
-domain
-port
-expires
-comment
-commentURL

For details on these arguments, please consult the corresponding method's documentation.

freeze

    APR::Request::Cookie->freeze($value)

Class method representing the default serializer; here it returns $value unmodified.

    ok "foo" eq APR::Request::Cookie->freeze("foo");

thaw

    $cookie->thaw()

Reverses freeze(); here it simply returns $cookie->value since freeze() is a noop.

    ok $cookie->thaw eq $cookie->value;

name

    $cookie->name()

Fetch the cookie's name. This attribute cannot be modified and is never serialized; ie freeze() and thaw() do not act on the cookie's name.

value

    $cookie->value()

Fetch the cookie's raw (frozen) value. This attribute cannot be modified.

secure

    $cookie->secure()
    $cookie->secure($set)

Get/set the cookie's secure flag.

    $cookie->secure(1);
    ok $cookie->secure == 1;

httponly

    $cookie->httponly()
    $cookie->httponly($set)

Get/set the cookie's HttpOnly flag.

    $cookie->httponly(1);
    ok $cookie->httponly == 1;

version

    $cookie->version()
    $cookie->version($set)

Get/set the cookie's version number. Version 0 cookies conform to the Netscape spec; Version 1 cookies conform to either RFC 2109 or RFC 2965.

    $version = $cookie->version;
    $cookie->version(1);
    ok $cookie->version == 1;

path

    $cookie->path()
    $cookie->path($set)

Get/set the cookie's path string.

    $path = $cookie->path;
    $cookie->path("/1/2/3/4");
    ok $cookie->path eq "/1/2/3/4";

domain

    $cookie->domain()
    $cookie->domain($set)

Get/set the cookie's domain string.

    $domain = $cookie->domain;
    $cookie->domain("apache.org");
    ok $cookie->domain eq "apache.org";

port

    $cookie->port()
    $cookie->port($set)

Get/set the cookie's port string. Only valid for Version 1 cookies.

    $port = $cookie->port;
    $cookie->port(8888);
    ok $cookie->port == 8888;

comment

    $cookie->comment()
    $cookie->comment($set)

Get/set the cookie's comment string. Only valid for Version 1 cookies.

    $comment = $cookie->comment;
    $cookie->comment("quux");
    ok $cookie->comment eq "quux";

commentURL

    $cookie->commentURL()
    $cookie->commentURL($set)

Get/set the cookie's commentURL string. Only valid for Version 1 cookies.

    $commentURL = $cookie->commentURL;
    $cookie->commentURL("/foo/bar");
    ok $cookie->commentURL eq "/foo/bar";

is_tainted

    $cookie->is_tainted()
    $cookie->is_tainted($set)

Get/set the cookie's internal tainted flag.

    $tainted = $cookie->is_tainted;
    $cookie->is_tainted(1);
    ok $cookie->is_tainted == 1;

make

    APR::Request::Cookie->make($pool, $name, $value)

Fast XS cookie constructor invoked by new(). The cookie's raw name & value are taken directly from the passed in arguments; no freezing/encoding is done on the $value.

as_string

    $cookie->as_string()

String representation of the cookie, suitable for inclusion in a "Set-Cookie" header.

    print "Set-Cookie: ", $cookie->as_string, "\n";


SUBROUTINES

  APR::Request::Cookie

expires

  expires($date_string)


SEE ALSO

the Apache2::Cookie manpage, the APR::Request manpage.


COPYRIGHT

  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.
libapreq2-2.13/docs/html/group__apreq__xs__apr__request__error.html0000644000076400017500000001357511473533324024730 0ustar issacissac libapreq2-2.13: libapreq2: APR::Request::Error

APR::Request::Error
[Perl]


NAME

APR::Request::Error - wrapper for libapreq2's error API.


SYNOPSIS

  use APR::Request::Error;


DESCRIPTION

This manpage documents version 2.13 of the APR::Request::Error package.


SUBROUTINES

APR::Request::Error - derived from APR::Request and APR::Error.

strerror

    strerror($status)

Returns the apreq error string associated with a numeric $status code.


ERROR CONSTANTS

GENERAL

Internal apreq error

TAINTED

Attempt to perform unsafe action with tainted data

BADDATA

Malformed input data

BADCHAR

Invalid character

BADSEQ

Invalid byte sequence

BADATTR

Unrecognized attribute

BADHEADER

Malformed header string

NODATA

Missing input data

NOTOKEN

Expected token not present

NOATTR

Missing attribute

NOHEADER

Missing header

NOPARSER

Missing parser

MISMATCH

Conflicting information

OVERLIMIT

Exceeds configured maximum limit

NOTEMPTY

Setting already configured


SEE ALSO

the APR::Request manpage, the APR::Error manpage


COPYRIGHT

  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.
libapreq2-2.13/docs/html/group__apreq__xs__apr__request__param.html0000644000076400017500000002656411473533324024701 0ustar issacissac libapreq2-2.13: libapreq2: APR::Request::Param

APR::Request::Param
[Perl]

NAME

APR::Request::Param - wrapper for libapreq2's param API.


SYNOPSIS

  use APR::Request::Param;
  $arg1 = $req->args('alpha');
  $body = $req->body;
  $body->param_class("APR::Request::Param");
  ok $_->isa("APR::Request::Param") for values %$body;
  @uploads = grep {$_->upload} values %$body;
  $param = $body->get('beta');
  $param->upload_slurp(my $content);


DESCRIPTION

The APR::Request::Param module provides base methods for interfacing with libapreq2's param API. It also provides a few utility functions and constants.

This manpage documents version 2.13 of the APR::Request::Param, APR::Request::Brigade, and APR::Request::Brigade::IO packages.


OVERLOADS

APR::Request::Param

""

    "$param"

The double-quote interpolation operator maps to APR::Request::Param::value().


METHODS

APR::Request::Param

name

    $param->name()

Returns the param's name. This attribute cannot be modified.

value

    $param->value()

Returns the param's value. This attribute cannot be modified.

is_tainted

    $param->is_tainted()
    $param->is_tainted($set)

Get/set the param's internal tainted flag. Note: if the param's charset is APREQ_CHARSET_UTF8 (8), this also activates the SvUTF8_on flag during calls to name() and/or value().

    $tainted = $param->is_tainted;
    $param->is_tainted(0);
    ok $param->is_tainted == 0;

charset

    $param->charset()
    $param->charset($set)

Get/set the param's internal charset. The charset is a number between 0 and 255; the current recognized values are

  1. APREQ_CHARSET_ASCII (7-bit us-ascii)
  2. APREQ_CHARSET_LATIN1 (8-bit iso-8859-1)
  3. APREQ_CHARSET_CP1252 (8-bit Windows-1252)
  4. APREQ_CHARSET_UTF8 (utf8 encoded Unicode)

See the is_tainted manpage above for info about how APREQ_CHARSET_UTF8 relates to perl's UTF-8 flag.

    $charset = $param->charset;
    $param->charset(2);
    ok $param->charset == 2;

make

    APR::Request::Param->make($pool, $name, $value)

Fast XS param constructor.

info

    $param->info()
    $param->info($set)

Get/set the APR::Table headers for this param.

upload

    $param->upload()
    $param->upload($set)

Get/set the APR::Brigade file-upload content for this param.

upload_filename

    $param->upload_filename()

Returns the client-side filename associated with this param.

upload_link

    $param->upload_link($path)

Links the file-upload content with the local file named $path. Creates a hard-link if the spoolfile's (see the upload_tempname manpage) temporary directory is on the same device as $path; otherwise this writes a copy.

upload_slurp

    $param->upload_slurp($data)

Reads the entire file-upload content into $data.

upload_size

    $param->upload_size()

Returns the size of the param's file-upload content.

upload_type

    $param->upload_type()

Returns the MIME-type of the param's file-upload content.

upload_tempname

    $param->upload_tempname()

Returns the name of the local spoolfile for this param.

upload_io

    $param->upload_io()

Returns an the APR::Request::Brigade::IO manpage object, which can be treated as a non-seekable IO stream.

upload_fh

    $param->upload_fh()

Returns a seekable filehandle representing the file-upload content.


METHODS

APR::Request::Brigade

This class is derived from APR::Brigade, providing additional methods for TIEHANDLE, READ and READLINE. To be memory efficient, these methods delete buckets from the brigade as soon as their data is actually read, so you cannot seek on handles tied to this class. Such handles have semantics similar to that of a read-only socket.

new, TIEHANDLE

    APR::Request::Brigade->TIEHANDLE($bb)

Creates a copy of the bucket brigade represented by $bb, and blesses that copy into the APR::Request::Brigade class. This provides syntactic sugar for using perl's builtin read, readline, and <> operations on handles tied to this package:

    use Symbol;
    $fh = gensym;
    tie *$fh, "APR::Request::Brigade", $bb;
    print while <$fh>;

READ

    $bb->READ($contents)
    $bb->READ($contents, $length)
    $bb->READ($contents, $length, $offset)

Reads data from the brigade $bb into $contents. When omitted $length defaults to -1, which reads the first bucket into $contents. A positive $length will read in $length bytes, or the remainder of the brigade, whichever is greater. $offset represents the index in $context to read the new data.

READLINE

    $bb->READLINE()

Returns the first line of data from the bride. Lines are terminated by linefeeds (the '\012' character), but we may eventually use $/ instead.


METHODS

APR::Request::Brigade::IO

read

OO interface to APR::Request::Brigade::READ.

readline

OO interface to APR::Request::Brigade::READLINE.


SEE ALSO

the APR::Request manpage, the APR::Table manpage, the APR::Brigade manpage.


COPYRIGHT

  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.
libapreq2-2.13/docs/html/group__apreq__xs__cookie.html0000644000076400017500000003776711473533324022151 0ustar issacissac libapreq2-2.13: libapreq2: Apache2::Cookie

Apache2::Cookie
[Perl]

NAME

Apache2::Cookie, Apache2::Cookie::Jar - HTTP Cookies Class


SYNOPSIS

    use Apache2::Cookie;
    $j = Apache2::Cookie::Jar->new($r);
    $c_in = $j->cookies("foo");         # get cookie from request headers
    $c_out = Apache2::Cookie->new($r,
                                  -name  => "mycookie",
                                  -value => $c_in->name );
    $c_out->path("/bar");               # set path to "/bar"
    $c_out->bake;                       # send cookie in response headers


DESCRIPTION

The Apache2::Cookie module is based on the original 1.X versions, which mimic the CGI::Cookie API. The current version of this module includes several packages and methods which are patterned after Apache2::Request, yet remain largely backwards-compatible with the original 1.X API (see the PORTING from 1.X section below for known issues).

This manpage documents the Apache2::Cookie and Apache2::Cookie::Jar packages.


Apache2::Cookie::Jar

This class collects Apache2::Cookie objects into a lookup table. It plays the same role for accessing the incoming cookies as Apache2::Request does for accessing the incoming params and file uploads.

new

    Apache2::Cookie::Jar->new($env)

Class method that retrieves the parsed cookie jar from the current environment.

cookies

    $jar->cookies()
    $jar->cookies($key)

Retrieve cookies named $key with from the jar object. In scalar context the first such cookie is returned, and in list context the full list of such cookies are returned.

If the $key argument is omitted, scalar $jar->cookies() will return an APR::Request::Cookie::Table object containing all the cookies in the jar. Modifications to the this object will affect the jar's internal cookies table in apreq_jar_t, so their impact will be noticed by all libapreq2 applications during this request.

In list context $jar->cookies() returns the list of names for all the cookies in the jar. The order corresponds to the order in which the cookies appeared in the incoming "Cookie" header.

This method will throw an APR::Request::Error object into $@ if the returned value(s) could be unreliable. In particular, note that scalar $jar->cookies("foo") will not croak if it can locate the a "foo" cookie within the jar's parsed cookie table, even if the cookie parser has failed (the cookies are parsed in the same order as they appeared in the "Cookie" header). In all other circumstances cookies will croak if the parser failed to successfully parse the "Cookie" header.

    $c = Apache2::Cookie->new($r, name => "foo", value => 3);
    $j->cookies->add($c);
    $cookie = $j->cookies("foo");  # first foo cookie
    @cookies = $j->cookies("foo"); # all foo cookies
    @names = $j->cookies();        # all cookie names

status

    $jar->status()

Get the APR status code of the cookie parser: APR_SUCCESS on success, error otherwise.


Apache2::Cookie

new

    Apache2::Cookie->new($env, %args)

Just like CGI::Cookie::new, but requires an additional environment argument:

    $cookie = Apache2::Cookie->new($r,
                             -name    =>  'foo',
                             -value   =>  'bar',
                             -expires =>  '+3M',
                             -domain  =>  '.capricorn.com',
                             -path    =>  '/cgi-bin/database',
                             -secure  =>  1
                            );

The -value argument may be either an arrayref, a hashref, or a string. Apache2::Cookie::freeze encodes this argument into the cookie's raw value.

freeze

    Apache2::Cookie->freeze($value)

Helper function (for new) that serializes a new cookie's value in a manner compatible with CGI::Cookie (and Apache2::Cookie 1.X). This class method accepts an arrayref, hashref, or normal perl string in $value.

    $value = Apache2::Cookie->freeze(["2+2", "=4"]);

thaw

    Apache2::Cookie->thaw($value)
    $cookie->thaw()

This is the helper method (for value) responsible for decoding the raw value of a cookie. An optional argument $value may be used in place of the cookie's raw value. This method can also decode cookie values created using CGI::Cookie or Apache2::Cookie 1.X.

    print $cookie->thaw;                    # prints "bar"
    @values = Apache2::Cookie->thaw($value); # ( "2+2", "=4" )

as_string

    $cookie->as_string()

Format the cookie object as a string. The quote-operator for Apache2::Cookie is overloaded to run this method whenever a cookie appears in quotes.

    ok "$cookie" eq $cookie->as_string;

name

    $cookie->name()

Get the name of the cookie.

value

    $cookie->value()

Get the (unswizzled) value of the cookie:

    my $value = $cookie->value;
    my @values = $cookie->value;

Note: if the cookie's value was created using a freeze method, one way to reconstitute the object is by subclassing Apache2::Cookie with a package that provides the associated thaw sub:

    {
        package My::COOKIE;
        @ISA = 'Apache2::Cookie';
        sub thaw { my $val = shift->raw_value; $val =~ tr/a-z/A-Z/; $val }
    }
    bless $cookie, "My::COOKIE";
    ok $cookie->value eq "BAR";

raw_value

    $cookie->raw_value()

Gets the raw (opaque) value string as it appears in the incoming "Cookie" header.

    ok $cookie->raw_value eq "bar";

bake

    $cookie->bake($r)

Adds a Set-Cookie header to the outgoing headers table.

bake2

    $cookie->bake2($r)

Adds a Set-Cookie2 header to the outgoing headers table.

domain

    $cookie->domain()
    $cookie->domain($set)

Get or set the domain for the cookie:

    $domain = $cookie->domain;
    $cookie->domain(".cp.net");

path

    $cookie->path()
    $cookie->path($set)

Get or set the path for the cookie:

    $path = $cookie->path;
    $cookie->path("/");

version

    $cookie->version()
    $cookie->version($set)

Get or set the cookie version for this cookie. Netscape spec cookies have version = 0; RFC-compliant cookies have version = 1.

    ok $cookie->version == 0;
    $cookie->version(1);
    ok $cookie->version == 1;

expires

    $cookie->expires()
    $cookie->expires($set)

Get or set the future expire time for the cookie. When assigning, the new value ($set) should match /^\+?(\d+)([YMDhms]?)$/ $2 qualifies the number in $1 as representing "Y"ears, "M"onths, "D"ays, "h"ours, "m"inutes, or "s"econds (if the qualifier is omitted, the number is interpreted as representing seconds). As a special case, $set = "now" is equivalent to $set = "0".

    my $expires = $cookie->expires;
    $cookie->expires("+3h"); # cookie is set to expire in 3 hours

secure

    $cookie->secure()
    $cookie->secure($set)

Get or set the secure flag for the cookie:

    $cookie->secure(1);
    $is_secure = $cookie->secure;
    $cookie->secure(0);

httponly

    $cookie->httponly()
    $cookie->httponly($set)

Get or set the HttpOnly flag for the cookie:

    $cookie->httponly(1);
    $is_HttpOnly = $cookie->httponly;
    $cookie->httponly(0);

httponly

    $cookie->httponly()
    $cookie->httponly($set)

Get or set the HttpOnly flag for the cookie:

    $cookie->httponly(1);
    $is_HttpOnly = $cookie->httponly;
    $cookie->httponly(0);

comment

    $cookie->comment()
    $cookie->comment($set)

Get or set the comment field of an RFC (Version > 0) cookie.

    $cookie->comment("Never eat yellow snow");
    print $cookie->comment;

commentURL

    $cookie->commentURL()
    $cookie->commentURL($set)

Get or set the commentURL field of an RFC (Version > 0) cookie.

    $cookie->commentURL("http://localhost/cookie.policy";);
    print $cookie->commentURL;

fetch

    Apache2::Cookie->fetch($r)

Fetch and parse the incoming Cookie header:

    my $cookies = Apache2::Cookie->fetch($r); # APR::Request::Cookie::Table ref
    It should be noted, that with perl 5.8+ Iterator magic, table is able
    to handle multiple cookies of the same name.
    my %cookies = Apache2::Cookie->fetch($r);


PORTING from 1.X

Changes to the 1.X API:


SEE ALSO

the Apache2::Request manpage, the APR::Request::Cookie manpage, the APR::Request::Error manpage, CGI::Cookie(3)


COPYRIGHT

  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.
libapreq2-2.13/docs/html/group__apreq__xs__request.html0000644000076400017500000004437011473533324022354 0ustar issacissac libapreq2-2.13: libapreq2: Apache2::Request

Apache2::Request
[Perl]

NAME

Apache2::Request - Methods for dealing with client request data


SYNOPSIS

    use Apache2::Request;
    $req = Apache2::Request->new($r);
    @foo = $req->param("foo");
    $bar = $req->args("bar");


DESCRIPTION

The Apache2::Request module provides methods for parsing GET and POST parameters encoded with either application/x-www-form-urlencoded or multipart/form-data. Although Apache2::Request provides a few new APIs for accessing the parsed data, it remains largely backwards-compatible with the original 1.X API. See the PORTING from 1.X section below for a list of known issues.

This manpage documents the Apache2::Request package.


Apache2::Request

The interface is designed to mimic the CGI.pm routines for parsing query parameters. The main differences are

new

    Apache2::Request->new($r, %args)

Creates a new Apache2::Request object.

    my $req = Apache2::Request->new($r, POST_MAX => "1M");

With mod_perl2, the environment object $r must be an Apache2::RequestRec object. In that case, all methods from Apache2::RequestRec are inherited. In the (default) CGI environment, $r must be an APR::Pool object.

The following args are optional:

  • POST_MAX, MAX_BODY

    Limit the size of POST data (in bytes).

  • DISABLE_UPLOADS

    Disable file uploads.

  • TEMP_DIR

    Sets the directory where upload files are spooled. On a *nix-like that supports link(2), the TEMP_DIR should be located on the same file system as the final destination file:

     use Apache2::Upload;
     my $req = Apache2::Request->new($r, TEMP_DIR => "/home/httpd/tmp");
     my $upload = $req->upload('file');
     $upload->link("/home/user/myfile");

    For more details on link, see the Apache2::Upload manpage.

  • HOOK_DATA

    Extra configuration info passed as the fourth argument to an upload hook. See the description for the next item, UPLOAD_HOOK.

  • UPLOAD_HOOK

    Sets up a callback to run whenever file upload data is read. This can be used to provide an upload progress meter during file uploads. Apache will automatically continue writing the original data to $upload->fh after the hook exits.

      my $transparent_hook = sub {
        my ($upload, $data, $data_len, $hook_data) = @_;
        warn "$hook_data: got $data_len bytes for " . $upload->name;
      };
      my $req = Apache2::Request->new($r,
                                      HOOK_DATA => "Note",
                                      UPLOAD_HOOK => $transparent_hook,
                                     );

instance

    Apache2::Request->instance($r)

The default (and only) behavior of Apache2::Request is to intelligently cache POST data for the duration of the request. Thus there is no longer the need for a separate instance() method as existed in Apache2::Request for Apache 1.3 - all POST data is always available from each and every Apache2::Request object created during the request's lifetime.

However an instance() method is aliased to new() in this release to ease the pain of porting from 1.X to 2.X.

param

    $req->param()
    $req->param($name)

Get the request parameters (using case-insensitive keys) by mimicing the OO interface of CGI::param.

    # similar to CGI.pm
    my $foo_value   = $req->param('foo');
    my @foo_values  = $req->param('foo');
    my @param_names = $req->param;
    # the following differ slightly from CGI.pm
    # returns ref to APR::Request::Param::Table object representing
    # all (args + body) params
    my $table = $req->param;
    @table_keys = keys %$table;

In list context, or when invoked with no arguments as $req->param(), param induces libapreq2 to read and parse all remaining data in the request body. However, scalar $req->param("foo") is lazy: libapreq2 will only read and parse more data if

    1) no "foo" param appears in the query string arguments, AND
    2) no "foo" param appears in the previously parsed POST data.

In this circumstance libapreq2 will read and parse additional blocks of the incoming request body until either

    1) it has found the the "foo" param, or
    2) parsing is completed.

Observe that scalar $req->param("foo") will not raise an exception if it can locate "foo" in the existing body or args tables, even if the query-string parser or the body parser has failed. In all other circumstances param will throw an Apache2::Request::Error object into $@ should either parser fail.

    $req->args_status(1); # set error state for query-string parser
    ok $req->param_status == 1;
    $foo = $req->param("foo");
    ok $foo == 1;
    eval { @foo = $req->param("foo") };
    ok $@->isa("Apache2::Request::Error");
    undef $@;
    eval { my $not_found = $req->param("non-existent-param") };
    ok $@->isa("Apache2::Request::Error");
    $req->args_status(0); # reset query-string parser state to "success"

Note: modifications to the scalar $req->param() table only affect the returned table object (the underlying C apr_table_t is generated from the parse data by apreq_params()). Modifications do not affect the actual request data, and will not be seen by other libapreq2 applications.

parms, params

The functionality of these functions is assumed by param, so they are no longer necessary. Aliases to param are provided in this release for backwards compatibility, however they are deprecated and may be removed from a future release.

body

    $req->body()
    $req->body($name)

Returns an APR::Request::Param::Table object containing the POST data parameters of the Apache2::Request object.

    my $body = $req->body;

An optional name parameter can be passed to return the POST data parameter associated with the given name:

    my $foo_body = $req->body("foo");

More generally, body() follows the same pattern as param() with respect to its return values and argument list. The main difference is that modifications to the scalar $req->body() table affect the underlying apr_table_t attribute in apreq_request_t, so their impact will be noticed by all libapreq2 applications during this request.

upload

    $req->upload()
    $req->upload($name)

Requires Apache2::Upload. With no arguments, this method returns an APR::Request::Param::Table object in scalar context, or the names of all Apache2::Upload objects in list context.

An optional name parameter can be passed to return the Apache2::Upload object associated with the given name:

    my $upload = $req->upload($name);

More generally, upload() follows the same pattern as param() with respect to its return values and argument list. The main difference is that its returned values are Apache2::Upload object refs, not simple scalars.

Note: modifications to the scalar $req->upload() table only affect the returned table object (the underlying C apr_table_t is generated by apreq_uploads()). They do not affect the actual request data, and will not be seen by other libapreq2 applications.

args_status

    $req->args_status()

Get the APR status code of the query-string parser. APR_SUCCESS on success, error otherwise.

body_status

    $req->body_status()

Get the current APR status code of the parsed POST data. APR_SUCCESS when parser has completed, APR_INCOMPLETE if parser has more data to parse, APR_EINIT if no post data has been parsed, error otherwise.

param_status

    $req->param_status()

In scalar context, this returns args_status if there was an error during the query-string parse, otherwise this returns body_status, ie

    $req->args_status || $req->body_status

In list context param_status returns the list (args_status, body_status).

parse

    $req->parse()

Forces the request to be parsed immediately. In void context, this will throw an APR::Request::Error should the either the query-string or body parser fail. In all other contexts it will return the two parsers' combined APR status code

    $req->body_status || $req->args_status

However parse should be avoided in most normal situations. For example, in a mod_perl content handler it is more efficient to write

    sub handler {
        my $r = shift;
        my $req = Apache2::Request->new($r);
        $r->discard_request_body;   # efficiently parses the request body
        my $parser_status = $req->body_status;
        #...
    }

Calling $r->discard_request_body outside the content handler is generally a mistake, so use $req->parse there, but only as a last resort. The Apache2::Request API is designed around a lazy-parsing scheme, so calling parse should not affect the behavior of any other methods.


SUBCLASSING Apache2::Request

If the instances of your subclass are hash references then you can actually inherit from Apache2::Request as long as the Apache2::Request object is stored in an attribute called "r" or "_r". (The Apache2::Request class effectively does the delegation for you automagically, as long as it knows where to find the Apache2::Request object to delegate to.) For example:

        package MySubClass;
        use Apache2::Request;
        our @ISA = qw(Apache2::Request);
        sub new {
                my($class, @args) = @_;
                return bless { r => Apache2::Request->new(@args) }, $class;
        }


PORTING from 1.X

This is the complete list of changes to existing methods from Apache2::Request 1.X. These issues need to be addressed when porting 1.X apps to the new 2.X API.


SEE ALSO

the APR::Request::Param manpage, the APR::Request::Error manpage, the Apache2::Upload manpage, the Apache2::Cookie manpage, APR::Table(3).


COPYRIGHT

  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.
libapreq2-2.13/docs/html/group__apreq__xs__upload.html0000644000076400017500000002625711473533324022154 0ustar issacissac libapreq2-2.13: libapreq2: Apache2::Upload

Apache2::Upload
[Perl]

NAME

Apache2::Upload - Methods for dealing with file uploads.


SYNOPSIS

    use Apache2::Upload;
    $req = Apache2::Request->new($r);
    $upload = $req->upload("foo");
    $size = $upload->size;
    # three methods to get at the upload's contents ... slurp, fh, io
    $upload->slurp($slurp_data);
    read $upload->fh, $fh_data, $size;
    ok $slurp_data eq $fh_data;
    my $io = $upload->io;
    print while <$io>;


DESCRIPTION

Apache2::Upload is a new module based on the original package included in Apache2::Request 1.X. Users requiring the upload API must now use Apache2::Upload, which adds the upload method to Apache2::Request. Apache2::Upload is largely backwards-compatible with the original 1.X API. See the PORTING from 1.X section below for a list of known issues.

This manpage documents the Apache2::Upload package.


Apache2::Upload

name

    $upload->name()

The name of the HTML form element which generated the upload.

filename

    $upload->filename()

The (client-side) filename as submitted in the HTML form. Note: some agents will submit the file's full pathname, while others may submit just the basename.

fh

    $upload->fh()

Creates filehandle reference to the upload's spooled tempfile, which contains the full contents of the upload.

io

    $upload->io()

Creates a tied IO handle. This method is a more efficient version of fh, but with io the handle ref returned is not seekable. It is tied to an APR::Request::Brigade object, so you may use the brigade API on the tied object if you want to manipulate the IO stream (beyond simply reading from it).

The returned reference is actually an object which has read and readline methods available. However these methods are just syntactic sugar for the underlying READ and READLINE methods from APR::Request::Brigade.

    $io = $upload->io;
    print while $io->read($_); # equivalent to: tied(*$io)->READ($_)

See READ and READLINE below for additional notes on their usage.

bb

    $upload->bb()
    $upload->bb($set)

Get/set the APR::Brigade which represents the upload's contents.

size

    $upload->size()

Returns the size of the upload in bytes.

info

    $upload->info()
    $upload->info($set)

Get/set the additional header information table for the uploaded file. Returns a hash reference tied to the APR::Table class. An optional $table argument can be passed to reassign the upload's internal (apr_table_t) info table to the one $table represents.

    my $info = $upload->info;
    while (my($hdr_name, $hdr_value) = each %$info) {
        # ...
    }
    # fetch upload's Content-Type header
    my $type = $upload->info->{"Content-type"};

type

    $upload->type()

Returns the MIME type of the given Apache2::Upload object.

    my $type = $upload->type;
    #same as
    my $content_type = $upload->info->{"Content-Type"};
    $content_type =~ s/;.*$//ms;

link

    $upload->link()

To avoid recopying the upload's internal tempfile brigade on a *nix-like system, link will create a hard link to it:

  my $upload = $req->upload('foo');
  $upload->link("/path/to/newfile") or
      die sprintf "link from '%s' failed: $!", $upload->tempname;

Typically the new name must lie on the same device and partition as the brigade's tempfile. If this or any other reason prevents the OS from linking the files, link() will instead copy the temporary file to the specified location.

slurp

    $upload->slurp($contents)

Reads the full contents of a file upload into the scalar argument. The return value is the length of the file.

    my $size = $upload->slurp($contents);

tempname

    $upload->tempname()

Provides the name of the spool file.

    my $tempname = $upload->tempname;


APR::Request::Brigade

This class is derived from APR::Brigade, providing additional methods for TIEHANDLE, READ and READLINE. To be memory efficient, these methods delete buckets from the brigade as soon as their data is actually read, so you cannot seek on handles tied to this class. Such handles have semantics similar to that of a read-only socket.

TIEHANDLE

    APR::Request::Brigade->TIEHANDLE($bb)

Creates a copy of the bucket brigade represented by $bb, and blesses that copy into the APR::Request::Brigade class. This provides syntactic sugar for using perl's builtin read, readline, and <> operations on handles tied to this package:

    use Symbol;
    $fh = gensym;
    tie *$fh, "APR::Request:Brigade", $bb;
    print while <$fh>;

READ

    $bb->READ($contents)
    $bb->READ($contents, $length)
    $bb->READ($contents, $length, $offset)

Reads data from the brigade $bb into $contents. When omitted $length defaults to -1, which reads the first bucket into $contents. A positive $length will read in $length bytes, or the remainder of the brigade, whichever is greater. $offset represents the index in $context to read the new data.

READLINE

    $bb->READLINE()

Returns the first line of data from the bride. Lines are terminated by linefeeds (the '\012' character), but we may eventually use $/ instead.


PORTING from 1.X


SEE ALSO

the APR::Request::Param::Table manpage, the APR::Request::Error manpage, the Apache2::Request manpage, APR::Table(3)


COPYRIGHT

  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.
libapreq2-2.13/docs/html/group__libapreq2.html0000644000076400017500000001247311473533324020344 0ustar issacissac libapreq2-2.13: libapreq2: Apache Request Library

Apache Request Library

libapreq2 Version 2.8.0 More...


Files

file  apreq.h
 Main header file...

Define the generic APREQ_ macros and common data structures.

file  apreq_cookie.h
 Cookies and Jars.

apreq_cookie.h describes a common server-side API for request (incoming) and response (outgoing) cookies. It aims towards compliance with the standard cookie specifications listed below.

file  apreq_error.h
 Error status codes.

Define the APREQ_ error codes.

file  apreq_module.h
 Module API.
file  apreq_param.h
 Request parsing and parameter API.
file  apreq_parser.h
 Request body parser API.
file  apreq_util.h
 Utility functions for apreq.
file  apreq_version.h
 Versioning API for libapreq

There are several different mechanisms for accessing the version. There is a string form, and a set of numbers; in addition, there are constants which can be compiled into your application, and you can query the library being used for its actual version.


Detailed Description

libapreq2 Version 2.8.0

libapreq2 is a shared library based on the Apache Portable Runtime libraries libapr and libaprutil.

See also:
http://apr.apache.org/

Configuring libapreq2 Applications

This package includes apreq2-config, a configuration script for building applications with libapreq2. Run apreq2-config --help to display its options. XXX add examples here XXX
libapreq2-2.13/docs/html/group__mod__apreq2.html0000644000076400017500000002441211473533324020647 0ustar issacissac libapreq2-2.13: libapreq2: Apache 2.X Filter Module

Apache 2.X Filter Module
[Modules]

mod_apreq2 - DSO that ties libapreq2 to Apache HTTPD 2.X. More...

Defines

#define APREQ_FILTER_NAME   "apreq2"
#define APREQ_APACHE2_MMN   20090110

Functions

apreq_handle_tapreq_handle_apache2 (request_rec *r)
 APR_DECLARE_OPTIONAL_FN (apreq_handle_t *, apreq_handle_apache2,(request_rec *r))

Detailed Description

mod_apreq2 - DSO that ties libapreq2 to Apache HTTPD 2.X.

mod_apreq2 provides the "APREQ2" input filter for using libapreq2 (and allow its parsed data structures to be shared) within the Apache 2.X webserver. Using it, libapreq2 works properly in every phase of the HTTP request, from translation handlers to output filters, and even for subrequests / internal redirects.


Activating mod_apreq2 in Apache 2.X

The installation process triggered by % make install will not modify your webserver's config file. Hence, be sure you activate it on startup by adding a LoadModule directive to your webserver config; e.g.

     LoadModule apreq_module    modules/mod_apreq2.so

The mod_apreq2 filter is named "apreq2", and may be used in Apache's input filter directives, e.g.

     AddInputFilter apreq2         # or
     SetInputFilter apreq2

However, this is not required because libapreq2 will add the filter (only) if it's necessary. You just need to ensure that your module invokes apreq_handle_apache2() before the content handler ultimately reads from the input filter chain. It is important to realize that no matter how the input filters are initially arranged, the APREQ2 filter will attempt to reposition itself to be the last input filter to read the data.

If you want to use other input filters to transform the incoming HTTP request data, is important to register those filters with Apache as having type AP_FTYPE_CONTENT_SET or AP_FTYPE_RESOURCE. Due to the limitations of Apache's current input filter design, types higher than AP_FTYPE_CONTENT_SET may not work properly whenever the apreq filter is active.

This is especially true when a content handler uses libapreq2 to parse some of the post data before doing an internal redirect. Any input filter subsequently added to the redirected request will bypass the original apreq filter (and therefore lose access to some of the original post data), unless its type is less than the type of the apreq filter (currently AP_FTYPE_PROTOCOL-1).

Server Configuration Directives

Per-directory commands for mod_apreq2
Directive Context DefaultDescription
APREQ2_ReadLimit directory APREQ_DEFAULT_READ_LIMIT Maximum number of bytes mod_apreq2 will send off to libapreq2 for parsing. mod_apreq2 will log this event and subsequently remove itself from the filter chain.
APREQ2_BrigadeLimit directory APREQ_DEFAULT_BRIGADE_LIMIT Maximum number of bytes mod_apreq2 will let accumulate within the heap-buckets in a brigade. Excess data will be spooled to an appended file bucket.
APREQ2_TempDir directory NULL Sets the location of the temporary directory apreq will use to spool overflow brigade data (based on the APREQ2_BrigadeLimit setting). If left unset, libapreq2 will select a platform-specific location via apr_temp_dir_get().

Implementation Details

   XXX apreq as a normal input filter
   XXX apreq as a "virtual" content handler.
   XXX apreq as a transparent "tee".
   XXX apreq parser registration in post_config
 

Define Documentation

#define APREQ_APACHE2_MMN   20090110

The Apache2 Module Magic Number for use in the Apache 2.x module structures This gets bumped if changes in th4e API will break third party applications using this apache2 module

See also:
APREQ_MODULE

#define APREQ_FILTER_NAME   "apreq2"

The mod_apreq2 filter is named "apreq2", and may be used in Apache's input filter directives, e.g.

     AddInputFilter apreq2         # or
     SetInputFilter apreq2
See above


Function Documentation

apreq_handle_t* apreq_handle_apache2 ( request_rec *  r  ) 

Create an apreq handle which communicates with an Apache 2.X request_rec.

libapreq2-2.13/docs/html/index.html0000644000076400017500000001157211473533324016216 0ustar issacissac libapreq2-2.13: libapreq2: Main Page

libapreq2 Documentation

2.13

Project Website: http://httpd.apache.org/apreq/

                    Apache HTTP Server Request Library

  What is it?
  -----------
  httpd-apreq is subproject of the Apache HTTP Server Project 
  whose committers develop and maintain the libapreq C library
  and its language bindings for Perl (contributions for additional 
  language bindings are most welcome).

  libapreq is a safe, standards-compliant, high-performance library 
  used for parsing HTTP cookies, query-strings and POST data.  The 
  original version (libapreq-1.X) was designed by Lincoln Stein and Doug 
  MacEachern.  The perl APIs Apache::Request and Apache::Cookie are the
  lightweight mod_perl analogs of the CGI and CGI::Cookie perl modules.

  Version 2 of libapreq is an improved codebase designed around APR
  and Apache-2's input filter API.  The C codebase is separated into
  two independent components:

      1) libapreq2, a shared library which is based on 
         libapr and libaprutil.

      2) A collection of modules:

          - mod_apreq2, a filter module for the Apache 2.X webserver,
          - a CGI module included in libapreq2 itself,
          - a custom module for general applications.

  Version 2 also includes the perl APIs for libapreq2- Apache2::Request,
  Apache2::Upload and Apache2::Cookie.  The corresponding XS modules 
  are generated by ExtUtils::XSBuilder, which is based on the new build
  system created specifically for mod_perl2.


  The Latest Version
  ------------------

  Details of the latest version can be found on the libapreq
  project page at 

                http://httpd.apache.org/apreq


  Documentation
  -------------

  The documentation is in the docs/ directory.  It is
  based on Doxygen, and can be regenerated by typing

        % make docs

  in the main directory.


  Installation
  ------------

  For full details please consult the INSTALL file.  Briefly,
  to install just the C API (libapreq2 + environment modules)
  on a Unix-like system:

            % ./configure --with-apache2-apxs=/path/to/apache2/bin/apxs
            % make
            % make test
            % make install

   To build and install the perl API as well, either add
   the "--enable-perl-glue" configure option, or let Makefile.PL
   enable it for you:

            % perl Makefile.PL --with-apache2-apxs=/path/to/apache2/bin/apxs
            % make
            % make test 
            % make install

  Licensing
  ---------

  Please see the file called LICENSE.


  Contacts
  --------

     o Project homepage:

        http://httpd.apache.org/apreq/

     o Mailing Lists:

        user lists:
               C/C++ API - modules-dev@httpd.apache.org
                Perl API - modperl@perl.apache.org
                 Tcl API - XXX
                Java API - XXX
              Python API - XXX

        developer list (bugs, patches, code contributions, etc.):
                apreq-dev@httpd.apache.org


  Acknowledgments
  ----------------

  We wish to acknowledge the following copyrighted works that
  make up portions of the Apache software:

  libapreq2 relies heavily on the use of the GNU auto-tools 
  to provide a build environment.  The tests are based on 
  the Apache::Test, Test::Harness and Test::Inline.

  Doxygen generates the documentation for libapreq2. The perl glue
  and pods are generated by ExtUtils::XSBuilder.
libapreq2-2.13/docs/html/installdox0000755000076400017500000000510411473533324016322 0ustar issacissac#!/home/issac/asf/perl510/bin/perl %subst = ( "apr.tag", "", "apu.tag", ""); $quiet = 0; if (open(F,"search.cfg")) { $_= ; s/[ \t\n]*$//g ; $subst{"_doc"} = $_; $_= ; s/[ \t\n]*$//g ; $subst{"_cgi"} = $_; } while ( @ARGV ) { $_ = shift @ARGV; if ( s/^-// ) { if ( /^l(.*)/ ) { $v = ($1 eq "") ? shift @ARGV : $1; ($v =~ /\/$/) || ($v .= "/"); $_ = $v; if ( /(.+)\@(.+)/ ) { if ( exists $subst{$1} ) { $subst{$1} = $2; } else { print STDERR "Unknown tag file $1 given with option -l\n"; &usage(); } } else { print STDERR "Argument $_ is invalid for option -l\n"; &usage(); } } elsif ( /^q/ ) { $quiet = 1; } elsif ( /^\?|^h/ ) { &usage(); } else { print STDERR "Illegal option -$_\n"; &usage(); } } else { push (@files, $_ ); } } foreach $sub (keys %subst) { if ( $subst{$sub} eq "" ) { print STDERR "No substitute given for tag file `$sub'\n"; &usage(); } elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) { print "Substituting $subst{$sub} for each occurence of tag file $sub\n"; } } if ( ! @files ) { if (opendir(D,".")) { foreach $file ( readdir(D) ) { $match = ".html"; next if ( $file =~ /^\.\.?$/ ); ($file =~ /$match/) && (push @files, $file); ($file =~ "tree.js") && (push @files, $file); } closedir(D); } } if ( ! @files ) { print STDERR "Warning: No input files given and none found!\n"; } foreach $f (@files) { if ( ! $quiet ) { print "Editing: $f...\n"; } $oldf = $f; $f .= ".bak"; unless (rename $oldf,$f) { print STDERR "Error: cannot rename file $oldf\n"; exit 1; } if (open(F,"<$f")) { unless (open(G,">$oldf")) { print STDERR "Error: opening file $oldf for writing\n"; exit 1; } if ($oldf ne "tree.js") { while () { s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; print G "$_"; } } else { while () { s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; print G "$_"; } } } else { print STDERR "Warning file $f does not exist\n"; } unlink $f; } sub usage { print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; print STDERR "Options:\n"; print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; print STDERR " -q Quiet mode\n\n"; exit 1; } libapreq2-2.13/docs/html/modules.html0000644000076400017500000000511711473533324016555 0ustar issacissac libapreq2-2.13: libapreq2: Module Index libapreq2-2.13/docs/html/pages.html0000644000076400017500000000355511473533324016210 0ustar issacissac libapreq2-2.13: libapreq2: Page Index

Related Pages

Here is a list of all related documentation pages:
libapreq2-2.13/docs/html/structapreq__cookie__t.html0000644000076400017500000002114711473533324021635 0ustar issacissac libapreq2-2.13: libapreq2: apreq_cookie_t Struct Reference

apreq_cookie_t Struct Reference

Cookie type, supporting both Netscape and RFC cookie specifications. More...

#include <apreq_cookie.h>


Data Fields

char * path
char * domain
char * port
char * comment
char * commentURL
apr_time_t max_age
unsigned flags
const apreq_value_t v


Detailed Description

Cookie type, supporting both Netscape and RFC cookie specifications.

Field Documentation

Restricts url path

Restricts server domain

Restricts server port

RFC cookies may send a comment

RFC cookies may place an URL here

total duration of cookie: -1 == session

charsets, taint marks, app-specific bits

"raw" cookie value


The documentation for this struct was generated from the following file:
libapreq2-2.13/docs/html/structapreq__handle__t.html0000644000076400017500000001301511473533324021612 0ustar issacissac libapreq2-2.13: libapreq2: apreq_handle_t Struct Reference

apreq_handle_t Struct Reference

#include <apreq_module.h>


Data Fields

struct apreq_module_tmodule
apr_pool_tpool
apr_bucket_alloc_tbucket_alloc


Detailed Description

An apreq handle associated with a module. The structure may have variable size, because the module may append its own data structures after it.

Field Documentation

the apreq module which implements this handle

the pool which defines the lifetime of the parsed data

the allocator, which persists at least as long as the pool


The documentation for this struct was generated from the following file:
libapreq2-2.13/docs/html/structapreq__hook__find__param__ctx__t.html0000644000076400017500000000643611473533324025023 0ustar issacissac libapreq2-2.13: libapreq2: apreq_hook_find_param_ctx_t Struct Reference

apreq_hook_find_param_ctx_t Struct Reference

#include <apreq_parser.h>


Data Fields

const char * name
apreq_param_tparam
apreq_hook_tprev


Detailed Description

Context struct for the apreq_hook_find_param hook.
The documentation for this struct was generated from the following file:
libapreq2-2.13/docs/html/structapreq__hook__t.html0000644000076400017500000001370311473533324021323 0ustar issacissac libapreq2-2.13: libapreq2: apreq_hook_t Struct Reference

apreq_hook_t Struct Reference

#include <apreq_parser.h>


Data Fields

apreq_hook_function_t hook
apreq_hook_tnext
apr_pool_tpool
void * ctx


Detailed Description

A hook is called by the parser whenever data arrives in a file upload parameter of the request body. You may associate any number of hooks with a parser instance with apreq_parser_add_hook().

Field Documentation

next item in the linked list

pool which allocated this hook

a user defined pointer passed to the hook function


The documentation for this struct was generated from the following file:
libapreq2-2.13/docs/html/structapreq__module__t.html0000644000076400017500000006364611473533324021663 0ustar issacissac libapreq2-2.13: libapreq2: apreq_module_t Struct Reference

apreq_module_t Struct Reference

Vtable describing the necessary module functions. More...

#include <apreq_module.h>


Data Fields

const char * name
apr_uint32_t magic_number
apr_status_t(* jar )(apreq_handle_t *, const apr_table_t **)
apr_status_t(* args )(apreq_handle_t *, const apr_table_t **)
apr_status_t(* body )(apreq_handle_t *, const apr_table_t **)
apreq_cookie_t *(* jar_get )(apreq_handle_t *, const char *)
apreq_param_t *(* args_get )(apreq_handle_t *, const char *)
apreq_param_t *(* body_get )(apreq_handle_t *, const char *)
apr_status_t(* parser_get )(apreq_handle_t *, const apreq_parser_t **)
apr_status_t(* parser_set )(apreq_handle_t *, apreq_parser_t *)
apr_status_t(* hook_add )(apreq_handle_t *, apreq_hook_t *)
apr_status_t(* brigade_limit_get )(apreq_handle_t *, apr_size_t *)
apr_status_t(* brigade_limit_set )(apreq_handle_t *, apr_size_t)
apr_status_t(* read_limit_get )(apreq_handle_t *, apr_uint64_t *)
apr_status_t(* read_limit_set )(apreq_handle_t *, apr_uint64_t)
apr_status_t(* temp_dir_get )(apreq_handle_t *, const char **)
apr_status_t(* temp_dir_set )(apreq_handle_t *, const char *)


Detailed Description

Vtable describing the necessary module functions.

Field Documentation

const char* apreq_module_t::name

name of this apreq module

magic number identifying the module and version

get a table with all cookies

get a table with all query string parameters

get a table with all body parameters

get a cookie by its name

get a query string parameter by its name

get a body parameter by its name

gets the parser associated with the request body

manually set a parser for the request body

determine the maximum in-memory bytes a brigade may use

set the maximum in-memory bytes a brigade may use

determine the maximum amount of data that will be fed into a parser

set the maximum amount of data that will be fed into a parser

determine the directory used by the parser for temporary files

set the directory used by the parser for temporary files


The documentation for this struct was generated from the following file:
libapreq2-2.13/docs/html/structapreq__param__t.html0000644000076400017500000001366511473533324021472 0ustar issacissac libapreq2-2.13: libapreq2: apreq_param_t Struct Reference

apreq_param_t Struct Reference

#include <apreq_param.h>


Data Fields

apr_table_tinfo
apr_bucket_brigadeupload
unsigned flags
const apreq_value_t v


Detailed Description

Common data structure for params and file uploads

Field Documentation

header table associated with the param

brigade used to spool upload files

charsets, taint marks, app-specific bits

underlying name/value info


The documentation for this struct was generated from the following file:
libapreq2-2.13/docs/html/structapreq__parser__t.html0000644000076400017500000002314511473533324021660 0ustar issacissac libapreq2-2.13: libapreq2: apreq_parser_t Struct Reference

apreq_parser_t Struct Reference

#include <apreq_parser.h>


Data Fields

apreq_parser_function_t parser
const char * content_type
apr_pool_tpool
apr_bucket_alloc_tbucket_alloc
apr_size_t brigade_limit
const char * temp_dir
apreq_hook_thook
void * ctx


Detailed Description

A request body parser instance.

Field Documentation

the function which parses chunks of body data

the Content-Type request header

a pool which outlasts the bucket_alloc.

bucket allocator used to create bucket brigades

the maximum in-memory bytes a brigade may use

the directory for generating temporary files

linked list of hooks

internal context pointer used by the parser function


The documentation for this struct was generated from the following file:
libapreq2-2.13/docs/html/structapreq__value__t.html0000644000076400017500000001524711473533324021504 0ustar issacissac libapreq2-2.13: libapreq2: apreq_value_t Struct Reference

apreq_value_t Struct Reference

libapreq's pre-extensible string type More...

#include <apreq.h>


Data Fields

char * name
apr_size_t nlen
apr_size_t dlen
char data [1]


Detailed Description

libapreq's pre-extensible string type
Examples:

/home/issac/asf/svn/v2_13/include/apreq.h.


Field Documentation


The documentation for this struct was generated from the following file:
libapreq2-2.13/docs/html/tab_b.gif0000644000076400017500000000004311473533324015746 0ustar issacissacGIF89a€„°Ç,D;libapreq2-2.13/docs/html/tab_l.gif0000644000076400017500000000130211473533324015757 0ustar issacissacGIF89a ,Õö÷ùñô÷öøúüýþúûüùúûøùúêïóïóöÆÕßÒÞæØâéÞçíÝæìåìñèîòô÷ùóöø³ÈÕÁÒÝËÙâÏÜäÖá薴ŹɯÂÍ»ÎÙÃÔÞÂÓÝÈ×àÌÚâÕáèÙäê×âèåìðëðó„°ÇÑÞåÜæëãëïëñôîóõ÷úûûüüÿÿÿþþþ, ,ÿ@–P±É`H$!%CqVe2X­ŠÌJ(“Ä +€˜3 2$ÀÆ ¼kvŠä-Ëçõu*…"}ã|}|~q(" $f„ 'Žl(Œ&&$r‘™ › & ! )¢¤›{¨£¥r­ª°©¯„±¯¬´¦·»º³®«§¾¶ÃÂÀ¿²¹ÇÄËÆ²ÌÉεҽͼ„ÔÈÓ×иÙÝÕÏÙÊâÜßãçæê¾äÛÅëÇíáîÖìéïøñ÷õüÑðåùü¤Pß?‚ƒœÇÛBm åAœÎáÀ†%V܈î!Çk÷Ø/áÄ;^¤¨²$Æ–#Mf)f͇(WÎL‰“æKçÒ„° ’I)L:eD ¡Cµ´x*4 U¨h  %A«£^ÁNKb¬Ùe§X±‚´k»x!ÁÖí—2tÝÖ !¯š5tÛæé—À]$¬´%ƒXíâ.i[¬]Y­•ÊfžEëõkg`µ††:zëçÒž;£}ºµj×aa‹–Mš¶é׸cçž½»vïÛºƒóî›8ðáÈ‹'?®¼9óç©G_>Ýyuè¬_ßž]zwêß­‡Ç¾º¼mîæµG~½ûôÞთ/ž>ùööÙ«Ïÿ¿ÿýÿÅà|ÖWà}v;libapreq2-2.13/docs/html/tab_r.gif0000644000076400017500000000503111473533324015770 0ustar issacissacGIF89a,Õö÷ùñô÷öøúüýþúûüùúûøùúêïóïóöÆÕßÒÞæØâéÞçíÝæìåìñèîòô÷ùóöø³ÈÕÁÒÝËÙâÏÜäÖá薴ŹɯÂÍ»ÎÙÃÔÞÂÓÝÈ×àÌÚâÕáèÙäê×âèåìðëðó„°ÇÑÞåÜæëãëïëñôîóõ÷úûûüüÿÿÿþþþ,,ÿ@’pH,ȤrÉl:ŸÐ¨tJ­Z¯Ø¬v •h<¬pkL.›Ïè´zÍn»ßð¸|N¯Ûïø¼~ÏwVa+‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ “*)^,*ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂö)'ÆÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæÚ¥(" ðñòóôõö÷øùúûüýþÿ H° ÁƒòK"ƒRHœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\éÅu&@€ Á²¦Í›8sêÜɳ§Oÿ–(±€DУH“*]Ê´©Ó§P£JJµªÕ«X³jÝʵ«×¯S84± ‰hÓª]˶­Û·pãÊK·®Ý»xóêÝË·¯ß¿€Ó} âDÌf(^̸±ãÇ#KžL¹²å˘3kÞ̹³çÏ C‹m¹ðCÄHœXͺµë×°cËžM»¶íÛ¸sëÞÍ»·ïßÀƒ N÷ÃJ” Á®¹óçУKŸN½ºõëØ³kßν»÷ïàËO¾úñ€ dÇ@€‚‚L¤"ÉÈF:ò‘Œ¤$9† (8…&ÉÉNzò“  ¥(G©FB^²!˨)WÉÊVºò•°l¤)1™ wÄò–¸Ì¥.wÊYºäƒà¥0‡IÌbó¾|ÉHpÌf:ó™Ðìe pJ±ˆ€}Ȧ6·ÉÍnzó›à §8û0Â%"¸æ8×ÉÎvºóðŒ§<ÉPÎQ`ò%×$€>÷ÉÏ~úóŸ ¨@JЂô M¨BÊІ:ô¡¨D'ZPKF Ö¼&16ÊÑŽzô£ ©HGJRb ÷Lç5ÏÁÒ–ºô¥ÿ0©LgJÓšš#(e>¯‰Óžúô§@ ªP‡JÔ¢õ¨HMªR—ÊÔ¦:õ©PªT§JÕª&5;%U·ÊÕ®zõ«` «XÇJV«ÂC§‹ÑjY×ÊÖ¶ºõ­p«\ŠU´À¦xÍ«^÷Ê×¾úõ¯ÐÀi)$‚”ô°ˆM¬bËØÆ:vˆ, ಘͬf7ËÙÎzö³  ­hGKÚÒšö´¨M­jWËÚÖºöµ°­*$ÛSPô¶¸Í­nwËÛÞúö·ÀÅm +„â¸ÈM®r—ËÜæ:÷¹ÐE®?±9ÏêZ÷ºØÍ®v¿9€î"‚ºÛ ¯xÇKÞòb—™ÑLÿ¯z×Ë^A¢·½ð¯|ç†÷Ò÷¾øÍ¯0í«ßþú÷¿¡ä/€Là»×ÀN°‚ï(à;øÁ n0„'LaýJ¸ÂÎ0{/¬á{ؘþ°ˆG|Ë“øÄ(¥‰SÌâCrÅ.ޱŒ ãÛøÆv¬1ŽwÌc6ê¸Ç@ÞñƒLd¹ÈHNñ‘“Ìd/¹ÉPÎð“£LeO¹ÊXŽp–·|â+sùËýõ2˜ÇL_1“ùÌí53š×M5³ùÍÇt3œç¼_:ÛÙÂwÎs™õÌgøÊ¹Ï€p ýÌ?úÐ/F´¢ë¼èFãÒÐŽŽt!-éJã‘Ò–Îô1­éN»‘ÓžuÿA-êP“ºÔ>5ª3­êUWºÕ®Ž4¬cÝèYÓZѶ¾õ¡s­ëAóº×€þ5°ù,ìaç¹ØÆ¶3²“=çe3ûÍÎ~öš£-í3S»Úc¾6¶¿¬ímo¹ÛÞÆ2¸ÃMåq“Êæ>7“Ó­n$³»ÝD~7¼,ïyó¸ÞöÆ1¾ómã}óÛÈÿvµ¿Þâ\É/µÁNâ…3ÜÉ÷´Ã#Þá‰S\ÊguÆ-mñO¸ã0ÈC¾à‘“\Ë'_´ÉS^à•³|À.ùc.ó0לÐ4¿9~s®ó=÷¼Ï<ÿy|ƒ.ô4]ÏD?ºz“®ô67]ÙO§3Ó£ÞÌ©SÄW‡vÖÙl>õ­3Úëdî:Øu)ö±?ÚìÙF;˜Ë®öW²½í­|;ÜW)÷¹²îvtÞ˽w¾÷Ý|à×=xÂÞÝA;libapreq2-2.13/docs/html/tabs.css0000644000076400017500000000334211473533324015660 0ustar issacissac/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ DIV.tabs { float : left; width : 100%; background : url("tab_b.gif") repeat-x bottom; margin-bottom : 4px; } DIV.tabs UL { margin : 0px; padding-left : 10px; list-style : none; } DIV.tabs LI, DIV.tabs FORM { display : inline; margin : 0px; padding : 0px; } DIV.tabs FORM { float : right; } DIV.tabs A { float : left; background : url("tab_r.gif") no-repeat right top; border-bottom : 1px solid #84B0C7; font-size : x-small; font-weight : bold; text-decoration : none; } DIV.tabs A:hover { background-position: 100% -150px; } DIV.tabs A:link, DIV.tabs A:visited, DIV.tabs A:active, DIV.tabs A:hover { color: #1A419D; } DIV.tabs SPAN { float : left; display : block; background : url("tab_l.gif") no-repeat left top; padding : 5px 9px; white-space : nowrap; } DIV.tabs INPUT { float : right; display : inline; font-size : 1em; } DIV.tabs TD { font-size : x-small; font-weight : bold; text-decoration : none; } /* Commented Backslash Hack hides rule from IE5-Mac \*/ DIV.tabs SPAN {float : none;} /* End IE5-Mac hack */ DIV.tabs A:hover SPAN { background-position: 0% -150px; } DIV.tabs LI.current A { background-position: 100% -150px; border-width : 0px; } DIV.tabs LI.current SPAN { background-position: 0% -150px; padding-bottom : 6px; } DIV.navpath { background : none; border : none; border-bottom : 1px solid #84B0C7; } libapreq2-2.13/docs/html/todo.html0000644000076400017500000000427211473533324016053 0ustar issacissac libapreq2-2.13: libapreq2: Todo List

Todo List

Global apreq_atoi64f
What happens when s is malformed? Should this return an unsigned value instead?

Global apreq_atoi64t
What happens when s is malformed? Should this return an unsigned value instead?

Global apreq_brigade_concat
Flesh out these error codes, making them as explicit as possible.
libapreq2-2.13/docs/man/man3/apreq.h.30000644000076400017500000002610511473533324016306 0ustar issacissac.TH "include/apreq.h" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME include/apreq.h \- Main header file... .PP Define the generic APREQ_ macros and common data structures. .SH SYNOPSIS .br .PP \fC#include 'apr_tables.h'\fP .br \fC#include \fP .br .SS "Data Structures" .in +1c .ti -1c .RI "struct \fBapreq_value_t\fP" .br .RI "\fIlibapreq's pre-extensible string type \fP" .in -1c .SS "Defines" .in +1c .ti -1c .RI "#define \fBAPREQ_DECLARE\fP(d) APR_DECLARE(d)" .br .ti -1c .RI "#define \fBAPREQ_DECLARE_NONSTD\fP(d) APR_DECLARE_NONSTD(d)" .br .ti -1c .RI "#define \fBAPREQ_DECLARE_DATA\fP" .br .ti -1c .RI "#define \fBAPREQ_DEFAULT_READ_BLOCK_SIZE\fP (64 * 1024)" .br .ti -1c .RI "#define \fBAPREQ_DEFAULT_READ_LIMIT\fP (64 * 1024 * 1024)" .br .ti -1c .RI "#define \fBAPREQ_DEFAULT_BRIGADE_LIMIT\fP (256 * 1024)" .br .ti -1c .RI "#define \fBAPREQ_DEFAULT_NELTS\fP 8" .br .ti -1c .RI "#define \fBAPREQ_FLAGS_OFF\fP(f, name) ((f) &= ~(name##_MASK << name##_BIT))" .br .ti -1c .RI "#define \fBAPREQ_FLAGS_ON\fP(f, name) ((f) |= (name##_MASK << name##_BIT))" .br .ti -1c .RI "#define \fBAPREQ_FLAGS_GET\fP(f, name) (((f) >> name##_BIT) & name##_MASK)" .br .ti -1c .RI "#define \fBAPREQ_FLAGS_SET\fP(f, name, value)" .br .ti -1c .RI "#define \fBAPREQ_CHARSET_BIT\fP 0" .br .ti -1c .RI "#define \fBAPREQ_CHARSET_MASK\fP 255" .br .ti -1c .RI "#define \fBAPREQ_TAINTED_BIT\fP 8" .br .ti -1c .RI "#define \fBAPREQ_TAINTED_MASK\fP 1" .br .ti -1c .RI "#define \fBAPREQ_COOKIE_VERSION_BIT\fP 11" .br .ti -1c .RI "#define \fBAPREQ_COOKIE_VERSION_MASK\fP 3" .br .ti -1c .RI "#define \fBAPREQ_COOKIE_SECURE_BIT\fP 13" .br .ti -1c .RI "#define \fBAPREQ_COOKIE_SECURE_MASK\fP 1" .br .ti -1c .RI "#define \fBAPREQ_COOKIE_HTTPONLY_BIT\fP 14" .br .ti -1c .RI "#define \fBAPREQ_COOKIE_HTTPONLY_MASK\fP 1" .br .ti -1c .RI "#define \fBapreq_attr_to_type\fP(T, A, P) ( (T*) ((char*)(P)-offsetof(T,A)) )" .br .in -1c .SS "Enumerations" .in +1c .ti -1c .RI "enum \fBapreq_charset_t\fP { \fBAPREQ_CHARSET_ASCII\fP = 0, \fBAPREQ_CHARSET_LATIN1\fP = 1, \fBAPREQ_CHARSET_CP1252\fP = 2, \fBAPREQ_CHARSET_UTF8\fP = 8 }" .br .ti -1c .RI "enum \fBapreq_join_t\fP { \fBAPREQ_JOIN_AS_IS\fP, \fBAPREQ_JOIN_ENCODE\fP, \fBAPREQ_JOIN_DECODE\fP, \fBAPREQ_JOIN_QUOTE\fP }" .br .ti -1c .RI "enum \fBapreq_match_t\fP { \fBAPREQ_MATCH_FULL\fP, \fBAPREQ_MATCH_PARTIAL\fP }" .br .ti -1c .RI "enum \fBapreq_expires_t\fP { \fBAPREQ_EXPIRES_HTTP\fP, \fBAPREQ_EXPIRES_NSCOOKIE\fP }" .br .in -1c .SS "Functions" .in +1c .ti -1c .RI "static APR_INLINE void \fBapreq_value_table_add\fP (const \fBapreq_value_t\fP *v, \fBapr_table_t\fP *t)" .br .ti -1c .RI "\fBapr_status_t\fP \fBapreq_initialize\fP (\fBapr_pool_t\fP *pool)" .br .ti -1c .RI "\fBapr_status_t\fP \fBapreq_pre_initialize\fP (\fBapr_pool_t\fP *pool)" .br .ti -1c .RI "\fBapr_status_t\fP \fBapreq_post_initialize\fP (\fBapr_pool_t\fP *pool)" .br .in -1c .SH "Detailed Description" .PP Main header file... .PP Define the generic APREQ_ macros and common data structures. .SH "Define Documentation" .PP .SS "#define apreq_attr_to_type(T, A, P) ( (T*) ((char*)(P)-offsetof(T,A)) )" .PP \fBParameters:\fP .RS 4 \fIT\fP type .br \fIA\fP attribute .br \fIP\fP XXX .RE .PP .SS "#define APREQ_CHARSET_BIT 0" .PP Charset Bit .PP \fBSee also:\fP .RS 4 \fBAPREQ_FLAGS_OFF\fP .PP \fBAPREQ_FLAGS_ON\fP .PP \fBAPREQ_FLAGS_GET\fP .PP \fBAPREQ_FLAGS_SET\fP .RE .PP .SS "#define APREQ_CHARSET_MASK 255" .PP Charset Mask .PP \fBSee also:\fP .RS 4 \fBAPREQ_FLAGS_OFF\fP .PP \fBAPREQ_FLAGS_ON\fP .PP \fBAPREQ_FLAGS_GET\fP .PP \fBAPREQ_FLAGS_SET\fP .RE .PP .SS "#define APREQ_COOKIE_HTTPONLY_BIT 14" .PP Cookie's HttpOnly Bit .PP \fBSee also:\fP .RS 4 \fBAPREQ_FLAGS_OFF\fP .PP \fBAPREQ_FLAGS_ON\fP .PP \fBAPREQ_FLAGS_GET\fP .PP \fBAPREQ_FLAGS_SET\fP .RE .PP .SS "#define APREQ_COOKIE_HTTPONLY_MASK 1" .PP Cookie's HttpOnly Mask .PP \fBSee also:\fP .RS 4 \fBAPREQ_FLAGS_OFF\fP .PP \fBAPREQ_FLAGS_ON\fP .PP \fBAPREQ_FLAGS_GET\fP .PP \fBAPREQ_FLAGS_SET\fP .RE .PP .SS "#define APREQ_COOKIE_SECURE_BIT 13" .PP Cookie's Secure Bit .PP \fBSee also:\fP .RS 4 \fBAPREQ_FLAGS_OFF\fP .PP \fBAPREQ_FLAGS_ON\fP .PP \fBAPREQ_FLAGS_GET\fP .PP \fBAPREQ_FLAGS_SET\fP .RE .PP .SS "#define APREQ_COOKIE_SECURE_MASK 1" .PP Cookie's Secure Mask .PP \fBSee also:\fP .RS 4 \fBAPREQ_FLAGS_OFF\fP .PP \fBAPREQ_FLAGS_ON\fP .PP \fBAPREQ_FLAGS_GET\fP .PP \fBAPREQ_FLAGS_SET\fP .RE .PP .SS "#define APREQ_COOKIE_VERSION_BIT 11" .PP Cookier Version Bit .PP \fBSee also:\fP .RS 4 \fBAPREQ_FLAGS_OFF\fP .PP \fBAPREQ_FLAGS_ON\fP .PP \fBAPREQ_FLAGS_GET\fP .PP \fBAPREQ_FLAGS_SET\fP .RE .PP .SS "#define APREQ_COOKIE_VERSION_MASK 3" .PP Cookie Version Mask .PP \fBSee also:\fP .RS 4 \fBAPREQ_FLAGS_OFF\fP .PP \fBAPREQ_FLAGS_ON\fP .PP \fBAPREQ_FLAGS_GET\fP .PP \fBAPREQ_FLAGS_SET\fP .RE .PP .SS "#define APREQ_DECLARE(d) APR_DECLARE(d)" .PP The public APREQ functions are declared with \fBAPREQ_DECLARE()\fP, so they may use the most appropriate calling convention. Public APR functions with variable arguments must use APR_DECLARE_NONSTD(). .PP \fBRemarks:\fP .RS 4 Both the declaration and implementations must use the same macro. \fBAPREQ_DECLARE(rettype)\fP apeq_func(args) .RE .PP .PP \fBExamples: \fP .in +1c \fB/home/issac/asf/svn/v2_13/include/apreq.h\fP. .SS "#define APREQ_DECLARE_DATA" .PP The public APREQ variables are declared with APREQ_DECLARE_DATA. This assures the appropriate indirection is invoked at compile time. .PP \fBSee also:\fP .RS 4 \fBAPREQ_DECLARE\fP .PP \fBAPREQ_DECLARE_NONSTD\fP .RE .PP \fBRemarks:\fP .RS 4 Note that the declaration and implementations use different forms, but both must include the macro. extern APREQ_DECLARE_DATA type apr_variable; .br APREQ_DECLARE_DATA type apr_variable = value; .RE .PP .SS "#define APREQ_DECLARE_NONSTD(d) APR_DECLARE_NONSTD(d)" .PP APEQ_DECLARE_NONSTD(rettype) apr_func(args, ...); .SS "#define APREQ_DEFAULT_BRIGADE_LIMIT (256 * 1024)" .PP Maximum number of bytes mod_apreq2 will let accumulate within the heap-buckets in a brigade. Excess data will be spooled to an appended file bucket .PP \fBSee also:\fP .RS 4 ap_set_brigade_read_limit .RE .PP .SS "#define APREQ_DEFAULT_NELTS 8" .PP Number of elements in the initial apr_table .PP \fBSee also:\fP .RS 4 \fBapr_table_make\fP .RE .PP .SS "#define APREQ_DEFAULT_READ_BLOCK_SIZE (64 * 1024)" .PP Read chucks of data in 64k blocks from the request .SS "#define APREQ_DEFAULT_READ_LIMIT (64 * 1024 * 1024)" .PP Maximum number of bytes mod_apreq2 will send off to libapreq2 for parsing. mod_apreq2 will log this event and subsequently remove itself from the filter chain. .PP \fBSee also:\fP .RS 4 ap_set_read_limit .RE .PP .SS "#define APREQ_FLAGS_GET(f, name) (((f) >> name##_BIT) & name##_MASK)" .PP Get specified bit f in bitfield name .SS "#define APREQ_FLAGS_OFF(f, name) ((f) &= ~(name##_MASK << name##_BIT))" .PP Check to see if specified bit f is off in bitfield name .SS "#define APREQ_FLAGS_ON(f, name) ((f) |= (name##_MASK << name##_BIT))" .PP Check to see if specified bit f is on in bitfield name .SS "#define APREQ_FLAGS_SET(f, name, value)" .PP \fBValue:\fP .PP .nf ((f) = (((f) & ~(name##_MASK << name##_BIT)) \ | ((name##_MASK & (value)) << name##_BIT))) .fi Set specified bit f in bitfield name to value Note the below BIT/Mask defines are used sans the _BIT, _MASK because of the this define's ##_MASK, ##_BIT usage. Each come in a pair .SS "#define APREQ_TAINTED_BIT 8" .PP Tainted Bit .PP \fBSee also:\fP .RS 4 \fBAPREQ_FLAGS_OFF\fP .PP \fBAPREQ_FLAGS_ON\fP .PP \fBAPREQ_FLAGS_GET\fP .PP \fBAPREQ_FLAGS_SET\fP .RE .PP .SS "#define APREQ_TAINTED_MASK 1" .PP Tainted Mask .PP \fBSee also:\fP .RS 4 \fBAPREQ_FLAGS_OFF\fP .PP \fBAPREQ_FLAGS_ON\fP .PP \fBAPREQ_FLAGS_GET\fP .PP \fBAPREQ_FLAGS_SET\fP .RE .PP .SH "Enumeration Type Documentation" .PP .SS "enum \fBapreq_charset_t\fP" .PP Character encodings. .SS "enum \fBapreq_expires_t\fP" .PP Expiration date format .PP \fBEnumerator: \fP .in +1c .TP \fB\fIAPREQ_EXPIRES_HTTP \fP\fP Use date formatting consistent with RFC 2616 .TP \fB\fIAPREQ_EXPIRES_NSCOOKIE \fP\fP Use format consistent with Netscape's Cookie Spec .SS "enum \fBapreq_join_t\fP" .PP Join type .PP \fBEnumerator: \fP .in +1c .TP \fB\fIAPREQ_JOIN_AS_IS \fP\fP Join the strings without modification .TP \fB\fIAPREQ_JOIN_ENCODE \fP\fP Url-encode the strings before joining them .TP \fB\fIAPREQ_JOIN_DECODE \fP\fP Url-decode the strings before joining them .TP \fB\fIAPREQ_JOIN_QUOTE \fP\fP Quote the strings, backslashing existing quote marks. .SS "enum \fBapreq_match_t\fP" .PP Match type .PP \fBEnumerator: \fP .in +1c .TP \fB\fIAPREQ_MATCH_FULL \fP\fP Full match only. .TP \fB\fIAPREQ_MATCH_PARTIAL \fP\fP Partial matches are ok. .SH "Function Documentation" .PP .SS "\fBapr_status_t\fP apreq_initialize (\fBapr_pool_t\fP * pool)" .PP Initialize libapreq2. Applications (except apache modules using mod_apreq) should call this exactly once before they use any libapreq2 modules. If you want to modify the list of default parsers with \fBapreq_register_parser()\fP, please use \fBapreq_pre_initialize()\fP and \fBapreq_post_initialize()\fP instead. .PP \fBParameters:\fP .RS 4 \fIpool\fP a base pool persisting while libapreq2 is used .RE .PP \fBRemarks:\fP .RS 4 after you detroy the pool, you have to call this function again with a new pool if you still plan to use libapreq2 .RE .PP .PP \fBExamples: \fP .in +1c \fB/home/issac/asf/svn/v2_13/include/apreq.h\fP. .SS "\fBapr_status_t\fP apreq_post_initialize (\fBapr_pool_t\fP * pool)" .PP Post-initialize libapreq2. Applications (except apache modules using mod_apreq2) should this exactly once before they use any libapreq2 modules for parsing. .PP \fBParameters:\fP .RS 4 \fIpool\fP the same pool that was used in \fBapreq_pre_initialize()\fP. .RE .PP .PP \fBExamples: \fP .in +1c \fB/home/issac/asf/svn/v2_13/include/apreq.h\fP. .SS "\fBapr_status_t\fP apreq_pre_initialize (\fBapr_pool_t\fP * pool)" .PP Pre-initialize libapreq2. Applications (except apache modules using mod_apreq2) should call this exactly once before they register custom parsers with libapreq2. mod_apreq2 does this automatically during the post-config phase, so modules that need call apreq_register_parser should create a post-config hook using APR_HOOK_MIDDLE. .PP \fBParameters:\fP .RS 4 \fIpool\fP a base pool persisting while libapreq2 is used .RE .PP \fBRemarks:\fP .RS 4 after you detroyed the pool, you have to call this function again with a new pool if you still plan to use libapreq2 .RE .PP .PP \fBExamples: \fP .in +1c \fB/home/issac/asf/svn/v2_13/include/apreq.h\fP. .SS "static APR_INLINE void apreq_value_table_add (const \fBapreq_value_t\fP * v, \fBapr_table_t\fP * t)\fC [static]\fP" .PP Adds the specified \fBapreq_value_t\fP to the apr_table_t. .PP \fBParameters:\fP .RS 4 \fIv\fP value to add .br \fIt\fP add v to this table .RE .PP \fBReturns:\fP .RS 4 void .RE .PP @ see apr_table_t .PP \fBSee also:\fP .RS 4 apr_value_t .RE .PP .PP \fBExamples: \fP .in +1c \fB/home/issac/asf/svn/v2_13/include/apreq.h\fP. .SH "Author" .PP Generated automatically by Doxygen for libapreq2 from the source code. libapreq2-2.13/docs/man/man3/apreq_changes.30000644000076400017500000007530311473533324017554 0ustar issacissac.TH "apreq_changes" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME apreq_changes \- CHANGES ! brief List of major changes. .SH "Changes with libapreq2-2.13 (released December 3, 2010)" .PP .IP "\(bu" 2 HTTP Only Cookie [Robert Stone & Adam Prime] The C and Perl Cookie APIs now support an HttpOnly flag to tell user agents to deny client-side script access to the cookie .PP .SH "Changes with libapreq2-2.12 (released March 13, 2009)" .PP .IP "\(bu" 2 C API [joes] Make the cookie parser a little more flexible. .PP .SH "Changes with libapreq2-2.11 (not released)" .PP .IP "\(bu" 2 Interactive CGI module [issac] Allow cgi module to interactively prompt for parameters and cookies when running a script from the command line and not from a CGI interface .PP .SH "Changes with libapreq2-2.10 (not released)" .PP .IP "\(bu" 2 Perl Glue [joes] Fix the linking of the perl modules to libapreq2 and libapr on Solaris. .PP .PP .IP "\(bu" 2 Perl Glue [joes] Fix install-time linking issue of the .so modules. Previously they would remain linked against the src library path, not the install path. .PP .PP .IP "\(bu" 2 C API [joes] Add optional interface for \fBapreq_handle_apache2()\fP. .PP .PP .IP "\(bu" 2 C API [joes] Clean up buggy apreq_hook_find_param(). .PP .PP .IP "\(bu" 2 Perl Glue Build [Philip M. Gollucci] config.status format changed format yet again in autoconf 2.62+. .PP .PP .IP "\(bu" 2 License [Mladen Turk] Add libapreq.rc and generate libapreq.res .PP .PP .IP "\(bu" 2 Build [Mladen Turk] Add APREQ_DECLARE_EXPORT/APREQ_DECLARE_STATIC in the same way as APR declares so that dllexport/dllimport get correctly handled. .PP .PP .IP "\(bu" 2 Build [Randy Kobes] Add appropriate manifest command to embed manifest files on Win32 when using VC8 .PP .PP .IP "\(bu" 2 C API [Andy Grundman, joes] Add missing bytes_read initializer to \fBapreq_handle_custom()\fP. .PP .PP .IP "\(bu" 2 C API [suggested by Vinay Y S, tested by Steve Hay and Peter Walsham] For Win32, remove the flag |= APR_FILE_NOCLEANUP | APR_SHARELOCK; in apreq_file_cleanup, to avoid problems with file uploads. .PP .SH "Changes with libapreq2-2.09 ( not released)" .PP .IP "\(bu" 2 C API [joes] Fix leak associated to calling \fBapreq_brigade_fwrite()\fP on an upload brigade. .PP .PP .IP "\(bu" 2 Build [Philip M. Gollucci] SunOS (Solaris) Users must use gmake not make for building. .PP .PP .IP "\(bu" 2 Build [Philip M. Gollucci] SunOS (Solaris) Code around bug in libtool (at least in 1.5.18, 1.5.20, 1.5.22) causing mod_apreq2 to be built instead of mod_apreq2.so .PP .PP .IP "\(bu" 2 C API [Philip M. Gollucci] Fix comparison signed vs unsigned comparison in apreq_fwritev() on SunOS/gcc where iovec.iov_len is a long. .PP .PP .IP "\(bu" 2 Build [Philip M. Gollucci] SunOS (Solaris) fix duplicate link error to libexpat.so -- by using the one from httpd exclusively now. .PP .PP .IP "\(bu" 2 Build [Philip M. Gollucci] code around |_!!_#| autoconf 2.60 bug. .PP .SH "Changes with libapreq2-2.08 (released August 8, 2006)" .PP .IP "\(bu" 2 Perl API [Randy Kobes] add APR_FILE_NOCLEANUP | APR_SHARELOCK to flags passed to \fBapreq_file_mktemp()\fP on Win32 in library/util.c, in order to clean up occasional stray temp files left behind in the Perl upload test (reported by Steve Hay) .PP .PP .IP "\(bu" 2 Build [Philip M. Gollucci, Bojan Smojver, joes] make input brigade volatile in order to give hints to GCC https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=193740 This fixes an infinite look split_on_bdry() of library/parser_multipart.c particularly on linux/gcc 4.x platforms. .PP .PP .IP "\(bu" 2 Perl Glue Fix 'value computed not used' gcc 4.1.x compile errors .PP .PP .IP "\(bu" 2 Build [Randy Kobes] Fix the location of apxs and the names of the apr and aprutil libraries on Win32 to enable building against Apache/2.2. .PP .PP .IP "\(bu" 2 Perl Glue docs [Philip M. Gollucci] Fix the 'docs_install' make target to actually install the docs for the perl glue. .PP .PP .IP "\(bu" 2 Perl Glue Build [Philip M. Gollucci] Regenerate glue/perl/xsbuilder/ppport.h to fix perl 5.8.8+ on some plaforms. .PP .PP .IP "\(bu" 2 C API [joes] Add code for \fBapreq_cookies()\fP. .PP .PP .IP "\(bu" 2 Perl API [joes] Expose the constants in \fBapreq_error.h\fP via the APR::Request::Error package. .PP .SH "Changes with libapreq2-2.07 (released February 12, 2006)" .PP .IP "\(bu" 2 C API [joes] SECURITY: CVE-2006-0042 (cve.mitre.org) Eliminate potential quadratic behavior in apreq_parse_headers() and apreq_parse_urlencoded(). .PP .PP .IP "\(bu" 2 Perl API [Philip M. Gollucci] Fix Apache2::Cookie->cookies() to comply with its documentation .PP .PP .IP "\(bu" 2 C API [Philip M. Gollucci] Use the APREQ_DEFAULT_READ_LIMIT constant for the read_limit .PP .PP .IP "\(bu" 2 C API [Ville Skyttä, Dirk Nehring] Add explicit cast in \fBapreq_escape()\fP/apreq_util.h to keep C++ compilers happy. .PP .PP .IP "\(bu" 2 C API [joes] Protect against arbitrary recursion depth in apreq_parse_multipart() by adding a reasonable compile-time MAX_LEVEL limit. .PP .PP .IP "\(bu" 2 C API [joes] Clean up end-of-file parsing for apreq_parse_multipart(), conforming to rfc-2046 § 5.1.1. .PP .PP .IP "\(bu" 2 Perl API [joes] Move APR::Request::Param::Table and APR::Request::Cookie::Table packages to APR::Request module. .PP .PP .IP "\(bu" 2 Perl XS [Steve Hay] Fix compile problems on Win32 without PERL_IMPLICIT_SYS related to link being an unresolved symbol. .PP .PP .IP "\(bu" 2 Perl API [joes] APR::Request::Cookie::thaw() isn't a class method. .PP .PP .IP "\(bu" 2 C API [joes] Fix off-by-one bug in the continuation-lines portion of the header parser. .PP .PP .IP "\(bu" 2 Perl API [joes] Move APR::Request::upload to APR::Request, where it belongs. .PP .PP .IP "\(bu" 2 Perl XS [Nikolay Ananiev] Use MP_STATIC declarations to allow Cygwin builds. .PP .PP .IP "\(bu" 2 Perl API [joes] encode()/decode() were busted with zero-length args. This caused Apache2::Cookie::new() to segfault on cookie value of ''. .PP .PP .IP "\(bu" 2 C API [joes] Add \fBapreq_charset_divine()\fP and eliminate charset offset from return value of apreq_decode(v). .PP .PP .IP "\(bu" 2 C API [joes] Improve the cp1252-charset heuristics for apreq_decode(v). .PP .PP .IP "\(bu" 2 C API [Ralph Mattes] Add explicit casts for apreq_param_charset_* to keep c++ compilers happy. .PP .SH "Changes with libapreq2-2.06-dev (released July 20, 2005)" .PP .IP "\(bu" 2 C API [Marc Gràcia, joes] Fix apreq_decode(v) when iso-latin-1 chars appear at the end of an encoded string. .PP .PP .IP "\(bu" 2 Perl API [Philip M. Gollucci] Fix 'Attempt to free temp prematurely' error in apreq_xs_croak(). .PP .PP .IP "\(bu" 2 C API [Philip M. Gollucci] Add mod_apreq2 to httpd's server tokens. .PP .PP .IP "\(bu" 2 Perl API [joes] Drop support for $req->env(), which also died with 2.05-dev. .PP .PP .IP "\(bu" 2 Perl API [joes] Support for table set/add/delete methods is formally withdrawn. Technically this feature died with the module API refactoring in 2.05-dev. .PP .PP .IP "\(bu" 2 C API [max] Right-hand limit of \fBapreq_brigade_move()\fP is declared as 'excluding', but APR_RING_UNSPLICE() wants an 'including' right-hand limit. Fixed this by passing the previous bucket. .PP .PP .IP "\(bu" 2 Perl API [joes] Drop support for Apache2::Request::new's HOOK_DATA. UPLOAD_HOOK now takes only two arguments: ($upload, $data). .PP .PP .IP "\(bu" 2 Perl API [joes] Drop support for Apache2::Cookie::Jar::new's VALUE_CLASS. 2.05-dev broke that API, and it's not worth trying to fix. People who need that should use APR::Request::Cookie::Table's cookie_class() API instead. .PP .PP .IP "\(bu" 2 Perl API [joes] Fix cookie domain/path munging in Apache2::Cookie::new(). .PP .SH "Changes with libapreq2-2.05-dev (released May 5, 2005)" .PP .IP "\(bu" 2 Win32 build [Randy Kobes] Have top-level 'nmake', 'nmake test', and 'nmake install' targets, respectively, also include building, testing, and installing the corresponding perl glue targets. .PP .PP .IP "\(bu" 2 C API [geoff] Minimum httpd version is now 2.0.48, which includes the official apr 0.9.4 release. .PP .PP .IP "\(bu" 2 C API [Max Kellermann] Fix apreq_quote. .PP .PP .IP "\(bu" 2 Perl API [joes] Remove Apache2::Request::args. WARNING: through inheritance, args() now maps to Apache2::RequestRec::args. Folks that want the pre-2.05-dev behavior need to invoke APR::Request::args by name. .PP .PP .IP "\(bu" 2 C API [joes, Max Kellermann] Add apreq_initialize, apreq_pre_initialize and apreq_post_initialize. These are not thread-safe operations, so applications need to ensure they are invoked (in the correct sequence) prior to using any apreq2 modules. .PP .PP .IP "\(bu" 2 C, Perl API [joes] Add pool, bucket_alloc to \fBapreq_handle_t\fP. .PP .PP .IP "\(bu" 2 Perl API [joes] Drop $data argument from UPLOAD_HOOK, and also drop HOOK_DATA option. Perl folks should use a closure instead of passing in context data. .PP .PP .IP "\(bu" 2 Perl API [joes] Move bake, bake2 to Apache2::Cookie, now requiring an extra $r argument. Also ''-operator is mapped to as_string() for Apache2::Cookie; but APR::Request::Cookie maps it to value(). .PP .PP .IP "\(bu" 2 C API [joes] Remove header_in & header_out from \fBapreq_module_t\fP. Remove apreq_ua_cookie_version() and apreq_cookie_bake*(). Remove cookie2 argument to \fBapreq_handle_custom()\fP. .PP .PP .IP "\(bu" 2 C API [joes] s/APREQ/APREQ2/g in webserver configuration directives. .PP .PP .IP "\(bu" 2 C API [Igor Shevchenko, Philip Gollucci] Fix segfault in mfd parser caused by parts w/ empty param names. .PP .PP .IP "\(bu" 2 C API [joes] Add \fBapreq_cp1252_to_utf8()\fP. .PP .PP .IP "\(bu" 2 C, Perl API [joes] Add charset support for params and couple the SvUTF8 flag to the param's taint flag. .PP .PP .IP "\(bu" 2 C API [joes] Replace v->size with v->nlen + v->dlen. Added supporting \fBapreq_value_table_add()\fP. .PP .PP .IP "\(bu" 2 C API [joes] Remove apreq_cookie_attr(). .PP .PP .IP "\(bu" 2 C API [joes] .IP " \(bu" 4 Add \fBapreq_error.h\fP, \fBapreq_module.h\fP. .IP " \(bu" 4 Rename apreq_run* and apreq_make* funcs to conform with apreq_$obj_$meth scheme. .IP " \(bu" 4 Replace c->version & c->secure with flags. .IP " \(bu" 4 Parsers are assumed to be working with external data, so the cookies & params they produce are marked tainted. .PP .PP .PP .IP "\(bu" 2 C API [joes] \fBapreq_parse_cookie_header()\fP failed to parse RFC Cookie headers which contained no space chars after the '$Version=1' preamble. .PP .PP .IP "\(bu" 2 C API [joes] Reorganize around include/, library/, and module/ dirs. .PP .PP .IP "\(bu" 2 C Tests [joes] Replace CuTest-based tests with custom TAP-compliant framework. .PP .PP .IP "\(bu" 2 C API [Max Kellermann] Continue the API improvements: .PP .PP .IP "\(bu" 2 Convert APREQ_RUN_PARSER and APREQ_RUN_HOOK to inline, and downcase them. .IP "\(bu" 2 Remove apreq_memmem. .IP "\(bu" 2 Convert apreq_(un)escape to inline. .IP "\(bu" 2 apreq_escape does not create an apreq_value_t*. .IP "\(bu" 2 Initialize default_parsers explicitly to NULL. .IP "\(bu" 2 Convert APREQ_BRIGADE_COPY to inline, and downcase it. .IP "\(bu" 2 Lowercase APREQ_BRIGADE_SETASIDE, APREQ_BRIGADE_COPY. .IP "\(bu" 2 Convert apreq_cookie_name and apreq_cookie_value macros to inline. .IP "\(bu" 2 Convert apreq_param_name, apreq_param_value, apreq_param_info, and apreq_param_brigade to inline. .PP .PP .IP "\(bu" 2 C API [joes] Widespread API refactorization to remove apreq_jar_t and apreq_request_t: .PP .PP .IP "\(bu" 2 Header includes reorganized; apreq_parsers.h added (back again). .IP "\(bu" 2 Replaced apreq_jar_t and apreq_request_t with single apreq_env_handle_t. .IP "\(bu" 2 Added const qualifier to 'v' attribute of \fBapreq_cookie_t\fP and \fBapreq_param_t\fP. .IP "\(bu" 2 Use union type-puns to drop const qualifiers inside the new apreq_value_to_cookie and apreq_value_to_param implementations (gcc generates same object code as the macro versions did). .IP "\(bu" 2 Moved 'flags' attribute from \fBapreq_value_t\fP to \fBapreq_cookie_t\fP and \fBapreq_param_t\fP. .IP "\(bu" 2 Remove env argument from hooks and parsers. .IP "\(bu" 2 Reduce apreq_env_module to minimal set of operations. .IP "\(bu" 2 Replace apreq_log calls with apreq-specific error codes. .IP "\(bu" 2 Hooks are called on each body param now, not just during file uploads. .IP "\(bu" 2 Tie the cgi handle to its creator pool. .PP .PP Detailed changes by header file: .PP [\fBapreq.h\fP] .IP "\(bu" 2 Remove flags from \fBapreq_value_t\fP. .IP "\(bu" 2 Remove const qualifier from apreq_value_t's 'name' attribute. .IP "\(bu" 2 Remove apreq_value_merge* and apreq_value_copy*. .IP "\(bu" 2 Remove apreq_char_to_value, apreq_strtoval, and apreq_strlen. .IP "\(bu" 2 Move apreq_enctype to apreq_env.h. .IP "\(bu" 2 Move apreq_env_handle_t struct definition to apreq_env.h .IP "\(bu" 2 Change signature of apreq_decode. .IP "\(bu" 2 Move apreq_brigade_concat here, changed its signature and improved it alot. .IP "\(bu" 2 Remove apreq_brigade_spoolfile. .IP "\(bu" 2 Dropped APREQ_*_ENCTYPE, renamed some APREQ_$foo defaults APREQ_DEFAULT_$foo. .IP "\(bu" 2 Added APREQ_ERROR_*. .PP .PP [\fBapreq_cookie.h\fP] .IP "\(bu" 2 Remove apreq_env.h include. .IP "\(bu" 2 Remove apreq_jar_t. .IP "\(bu" 2 Add 'flags' to \fBapreq_cookie_t\fP, add const qualifier to its 'v' attr. .IP "\(bu" 2 Remove apreq_jar* functions. .IP "\(bu" 2 Add apreq_parse_cookie_header. .IP "\(bu" 2 Move apreq_cookie, apreq_cookie_bake(2), and apreq_ua_cookie_version to apreq_env.h. .PP .PP [apreq_params.h] .IP "\(bu" 2 Remove apreq_env.h include. .IP "\(bu" 2 Remove apreq_request_t. .IP "\(bu" 2 Add 'flags' to \fBapreq_param_t\fP, and const qualifier to its 'v' attr. .IP "\(bu" 2 Rename 'bb' attribute 'upload' in \fBapreq_param_t\fP. .IP "\(bu" 2 Remove apreq_request* functions. .IP "\(bu" 2 Remove apreq_parse_request. .IP "\(bu" 2 Changed apreq_decode_param signature. .IP "\(bu" 2 Replace env argument with apr_table_t in apreq_params_as_array, apreq_params_as_string, .IP "\(bu" 2 Move remaining apreq_param* to apreq_env.h. .IP "\(bu" 2 Move parser and hook sections to apreq_parsers.h. .IP "\(bu" 2 Change apreq_upload(s) old apreq_request_t arg to apr_table_t. .PP .PP [apreq_parsers.h] .IP "\(bu" 2 Acquire the hook and parser sections of original apreq_params.h. .IP "\(bu" 2 Remove env argument from APREQ_PARSER_ARGS and APREQ_HOOK_ARGS .IP "\(bu" 2 Augment \fBapreq_hook_t\fP and \fBapreq_parser_t\fP to replace missing env features. .IP "\(bu" 2 Change apreq_make_parser and apreq_make_hook signatures. .IP "\(bu" 2 Rename apreq_add_hook to apreq_parser_add_hook, returning apr_status_t. .IP "\(bu" 2 Change apreq_parser signature. .PP .PP [apreq_env.h] .IP "\(bu" 2 Remove read, log, pool, bucket_alloc, request, jar, and query_string methods. .IP "\(bu" 2 Include apreq_parsers.h. .IP "\(bu" 2 Reorganize apreq_env_module_t to provide hook, parser, jar, args, & body table ops. .IP "\(bu" 2 Rename max_brigade to 'brigade_limit', max_body to 'read_limit'. .IP "\(bu" 2 Change related module sigs, including temp_dir, to get/set methods. .IP "\(bu" 2 Add parser and read_limit args to apreq_env_make_custom_handle. .IP "\(bu" 2 Drop 'name' arg and APREQ_ENV_MODULE =~ s/_ENV//. .IP "\(bu" 2 s/apreq_env_make/apreq_handle/ in the handle constructor names. .PP .PP [mod_apreq.c, apreq_env_apache2.h] .IP "\(bu" 2 Changed APREQ_Max* configs to APREQ_BrigadeLimit and APREQ_ReadLimit. .IP "\(bu" 2 Handle constructor renamed apreq_handle_apache2. .PP .PP .IP "\(bu" 2 C API [joes] Make our 'libtool current interface' number depend on apr's major number. This allows libapreq2 to be installed into a system-wide location while avoiding ABI conflicts arising from our apr-based interfaces. .PP .PP .IP "\(bu" 2 C API [Max Kellermann] Introduce apreq_env_handle_t to replace the void *env usage. Also added apreq_env_custom for making private handles, and new apreq_env_apache2.h to let mod_apreq export apreq_env_make_apache2. .PP .PP .IP "\(bu" 2 C API [Max Kellermann] Rename apreq_env_t to apreq_env_module_t, to prepare for a new thread-safe apreq_env API. .PP .PP .IP "\(bu" 2 C API [Max Kellermann] mod_apreq must check the return value of apreq_brigade_concat to avoid a RAM-consuming infinite loop. A bad APREQ_TempDir setting can cause this situation. .PP .PP .IP "\(bu" 2 C API [joes] Provide workaround for chunked trailers bug in ap_http_filter. .PP .PP .IP "\(bu" 2 C, Perl API [joes] Several upload-related bugfixes: 1) apreq_upload and apreq_uploads did not search the full body table, 2) $upload->slurp and $io->read did not autovivify the resultant string. .PP .PP .IP "\(bu" 2 C API [joes] Add 'flags' attribute to \fBapreq_value_t\fP, planning for charset support. This is an ABI change, starting with libapreq2.so.2.0.24. .PP .PP .IP "\(bu" 2 C API [joes] Add apreq_env_bucket_alloc() to get an allocator directly from the environment instead of creating them from a pool. This is an ABI change, starting with libapreq2.so.2.0.23. .PP .PP .IP "\(bu" 2 Build system [joes] Add --with-apache2-httpd option so users can override apxs's notion of where the httpd executable is. XSBuilder's header parser runs from buildconf now instead of configure, so we will include those tables in the release tarball. buildconf gets an additional --with-perl option for running the xsbuilder.pl parsing script. The XS generation code in xsbuilder.pl has moved to glue/perl/Makefile.PL. .PP .PP .IP "\(bu" 2 Perl API [joes] Allow ctors for Apache::Cookie, Apache::Cookie::Jar and \fBApache\fP:Request to accept Apache::Request objects (instead of requiring an Apache::RequestRec object). This thread details the bug http://thread.gmane.org/gmane.comp.apache.mod-perl/15727 .PP .PP .IP "\(bu" 2 C API [Bojan Smojver] Bake cookies with err_headers_out so they are sent on non-2xx server responses (ie. a 304 redirect). Also ensure that headers are copied with apr_table_add instead of apr_table_addn. Since apreq_cookie_bake() allocates from the stack, the Set-Cookie headers would occasionally get mangled without this patch. .PP .PP .IP "\(bu" 2 C API [joes] Add \fBapreq_register_parser()\fP, which allows users to add their own parsers to \fBapreq_parser()\fP's recognized MIME types. .PP .PP .IP "\(bu" 2 C API [joes] Support 'multipart/mixed' file uploads. Support XForms' 'multipart/related' enctype. .PP .PP .IP "\(bu" 2 C API [joes] Add apreq_hook_apr_xml_parser(), which is a simple wrapper hook around APR's expat-based apr_xml_parser. Add a generic parser apreq_parse_generic() to parse arbitrary enctypes using the hook API. .PP .SH "Changes with libapreq2-2.04-dev (released August 30, 2004)" .PP .IP "\(bu" 2 Perl API [joes] Add TAINT checks, marking all parsed data as tainted. .PP .PP .IP "\(bu" 2 C API [joes] Add body_status attribute to apreq_request_t, to allow the both environment and the parser to report any errors encountered. .PP .PP .IP "\(bu" 2 C API [randyk, joes] Cookie parser was locking up on non-alphanumeric chars in cookie names. Also RFC Cookie attributes are always checked for quotes during bake(2), and the quotes are now stripped from incoming RFC cookies during parsing (but they are never stripped from the actual cookie value). .PP .PP .IP "\(bu" 2 Perl API [joes] Apache::Cookie::Jar->new accepts a VALUE_CLASS argument, which effectively blesses all the jar's cookies into that class, which simplifies subclassing Apache::Cookie. Accordingly Apache::Cookie->freeze($value) no longer accepts a freeze()-able object in $value. .PP .PP .IP "\(bu" 2 C API [Markus Wichitill, randyk, joes] Drop APR_DELONCLOSE from apreq_file_mktemp implementation and install apreq_file_cleanup. When passed to apr_file_open on Win32, APR_DELONCLOSE sets the FILE_SHARED_DELETE flag, which is, unfortunately, a property that is preserved across NTFS 'hard' links. This breaks apps that link() the temp file to a permanent location, and subsequently expect to open it without FILE_SHARED_DELETE before the original tempfile is closed+deleted. In fact, even Apache::Upload does this, so it is a common enough event that the apreq_file_cleanup workaround is necessary. .PP .PP .IP "\(bu" 2 C API [Ken Burcham, joes] Fix bug in url parser that occurs when a XX-encoded sequence is split across multiple buckets. Added apreq_decode_decodev to make this problem less inconvenient. .PP .PP .IP "\(bu" 2 Perl API [joes] Exception objects inherit from the object which raised it, which allows $@ to invoke its methods with impunity (exceptions are disabled for objects which derive from an exception class). .PP .PP .IP "\(bu" 2 Perl API [joes] Implement HOOK_DATA and UPLOAD_HOOK. .PP .PP .IP "\(bu" 2 Perl API [joes] Add safe XS wrappers for $table->add, $table->set, $table->STORE, and $table_class->new. .PP .PP .IP "\(bu" 2 Perl API [joes] Add exceptions to $upload->link, $upload->tempname, $upload->slurp, and $cookie->set_attr. Return value of $upload->slurp is now the upload length. Also document new $upload->io. .PP .PP .IP "\(bu" 2 C API [joes] Restrict all apr_status_t codes to APR_SUCCESS, APR_INCOMPLETE, APR_EGENERAL, APR_EINIT, APR_ENOTIMPL, since any others will generate confusing error messages from apr_strerror. .PP .PP .IP "\(bu" 2 Perl API [joes] Added $upload->io with a TIEHANDLE API layered over APR::Brigade. $upload->fh remains implemented as an APR::PerlIO object, which is seekable but less efficient and currently suffers some portability issues associated with largefile support in perl and apr. .PP .PP .IP "\(bu" 2 Perl API [joes] Added apreq_xs_croak for throwing APR::Error exceptions and included error-checking on $req->param, $req->args, $req->body, $req->upload, and $jar->get. .PP .PP .IP "\(bu" 2 Perl API [joes] Added $jar->status, $req->args_status and $req->body_status to report parsing errors. Also add $upload->tempname per user request. .PP .PP .IP "\(bu" 2 C API [joes] Dropped status attribute of \fBapreq_value_t\fP. Added status field to apreq_jar_t and added args_status field to apreq_request_t. Parsers also must return their public status code when a NULL brigade is passed. apreq_hook_disable_uploads() is also added. .PP .PP This is an ABI change affecting all versions of libapreq2 prior to 2.0.12. .PP .IP "\(bu" 2 Perl API [joes] $upload->info returns a proper APR::Table object now. Also implemented $upload->size, $upload->fh, and $upload->type. .PP .PP .IP "\(bu" 2 C API [Jean-François Meesse] mfd parser fails to parse CRLF-terminated files when the terminating boundary string is at the start of a new bucket. This is reportedly a common event for PDF files uploaded with Netscape 7. .PP .PP .IP "\(bu" 2 Perl API [joes] Add back-compat support for Apache::Cookie->fetch() via Apache->request. .PP .PP .IP "\(bu" 2 C API [joes] Add MaxBody, MaxBrigade, and TempDir per-dir directives to mod_apreq filter. .PP .PP .IP "\(bu" 2 C API [joes] Replace free/tempnam dependency in \fBapreq_file_mktemp()\fP with \fBapr_temp_dir_get()\fP. Add additional gcc warning flags when --enable-maintainer-mode is set. .PP .PP .IP "\(bu" 2 C API [joes, Scott Hutton] Replace apreq_brigade_copy with more effective APREQ_BRIGADE_COPY macro. Also introduce APREQ_BRIGADE_SETASIDE to deal with buckets that need to be set aside for use in future function calls. mod_ssl generates transient buckets which tickled this bug. .PP .PP .IP "\(bu" 2 Perl API [joes] Separate Apache::Upload module from Apache::Request for better organization. .PP .SH "Changes with libapreq2-2.03-dev (released June 12, 2004)" .PP .IP "\(bu" 2 C API [joes] 'Objectify' cookie/jar API: s/apreq_(make|serialize)_cookie/apreq_cookie_$1/ and reordering args so the cookie/jar object is always the first argument. Macros added to provide source-compatibility with the old names. .PP .PP .IP "\(bu" 2 Perl API [joes] Added $upload->slurp($data), which reads the contents of the file upload '$upload' into the scalar '$data'. .PP .PP .IP "\(bu" 2 C API [joes, randyk] apreq_run_(hook|parser) are macros, so they are capitalized now. Fixed \fBapreq_params_as_string()\fP and added \fBapreq_params_as_array()\fP. Reworked definitions of APREQ_DECLARE_HOOK, APREQ_DECLARE_PARSER and apreq_(parser|hook)_t, hopefully to be more Win32 friendly. Also updated the documentation. .PP .PP .IP "\(bu" 2 C API [joes] Compensate for a missing CRLF in empty file upload block, which actually complies with RFC 2046 Section 5.1.1. Konqueror (version unknown) and Mozilla 0.9.7 are known to emit such blocks. .PP .PP .IP "\(bu" 2 Perl API [joes] $req->upload() in list context failed to filter out non-uploads. Also $req->upload('nonexistent-key-name') segfaults. .PP .PP .IP "\(bu" 2 Perl test suite t/TEST.PL must run parent class' pre_configure to get the configuration right .PP .PP .IP "\(bu" 2 C API [joes] \fBapreq_brigade_concat()\fP wasn't supplying the final EOS bucket to large brigades (>256K), which somtimes caused the prefetch loop in mod_apreq.c's apreq_filter() to hang. .PP .PP .IP "\(bu" 2 Documentation [joes] CHANGES file reformatted, removing dates & other clutter as Stas suggests. .PP .PP .IP "\(bu" 2 C API [joes] Rewrote cgi_read() in apreq_env.c and reworked mod_apreq.c to enforce apreq_env_max_body() settings. .PP .PP .IP "\(bu" 2 C API [joes] Fixed bug in url_parser code- missing context brigade was needed to track key-value pairs which span multiple buckets. .PP .PP .IP "\(bu" 2 C API [joes] API modifications: removed struct apreq_cfg_t, adding new apreq_env hooks max_body, max_brigade_len, and temp_dir. Folded apreq_parsers.h into apreq_params.h and modified the arguments to apreq_run_parser() and apreq_run_hook(). Renamed apreq_parser_t's content_type as enctype and apreq_copy_brigade() as \fBapreq_brigade_copy()\fP. These changes make libapreq2.so.2.0.5 incompatible with earlier versions. .PP .PP .IP "\(bu" 2 Perl API [stas] Include ppport.h from blead-perl to support older perls. Add a proper support for ithreads. .PP .PP .IP "\(bu" 2 C API [Swen Schillig, joes] Fixed bug in calculation of Netscape cookie expiration dates. apr_time_t is measured in microseconds, not seconds, which threw off the arithmetic; apr_time_from_sec was needed for the conversion. .PP .PP .IP "\(bu" 2 C API [Max Kellermann] Fix segfault caused by invalid -escape sequence in query string. .PP .SH "Changes with libapreq2-2.02-dev (released Nov 15, 2003)" .PP .IP "\(bu" 2 Perl API [joes] Fix bogus pool/cookie initializers in Apache::Cookie::set_attr(), which caused Apache::Cookie::new to segfault. Bug first reported to modperl list by Wolfgang Kubens. .PP .SH "Changes with libapreq2-2.01-dev (released Nov 10, 2003)" .PP .IP "\(bu" 2 build system [joes] Skip Apache::Test tests in env/ when Apache::Test is unavailable. This allows the C API to be build and installed without requiring Apache::Test (it is still a requirement for compiling the perl glue). .PP .PP .IP "\(bu" 2 C API mod_apreq.c [joes] Parser errors were creeping into the return value of apreq_filter, which breaks the 'transparent tee' paradigm. This caused bogus '400 Bad Request' responses (first reported by Vladimir Dudo) to occur when libapreq2 was used by an output filter during a GET request (handled by apache2's default handler). The test suite has been updated accordingly. .PP .PP .IP "\(bu" 2 C API [joes] Incorporate libapreq_cgi into libapreq2 as the default environment, and add apreq_env_t and initializer apreq_env_module() to manage the environment at runtime (determining the environment at load-time was problematic on non-ELF systems). .PP .SH "Changes with libapreq2-2.00-dev (Oct 25, 2003)" .PP .IP "\(bu" 2 C API: libapreq_cgi.c [randyk, joes] CGI environment defined by env/libapreq_cgi.c is functional (with tests added to env/t). This library may soon be incorporated directly into libapreq2 as a default enviroment. .PP .PP .IP "\(bu" 2 C API: mod_apreq.c [joes] Added ctx->saw_eos to ensure we don't read from upstream filters after receiving an eos bucket. Otherwise it was possible for two eos buckets to appear when a prefetch read is involved, which breaks other modules like mod_proxy. This bug was uncovered by Philippe Chiasson. mod_apreq's apreq_env_majic_number bumped to reflect the added fixes. .PP .PP .IP "\(bu" 2 configure: --enable-perl-glue [joes] The --enable-perl-glue option integrates the perl glue into the normal Unix build cycle. It is disabled by default, but is silently reenabled if the user configures the source tree via Makefile.PL. .PP .PP .IP "\(bu" 2 C API [joes] Added \fBapreq_header_attribute()\fP and fixed mfd parser to allow 'charset' attribute to appear in the Content-Type header. Sven Geisler points out that Opera 7.20 does generate such headers. .PP .PP .IP "\(bu" 2 C API [joes] Added versioning API following http://apr.apache.org/versioning.html apreq_env renamed apreq_env_name, and apreq_env_magic_number added to provide versioning for environments (modules). The header files are now installed to 'include/apreq2', and the library is renamed 'libapreq2'. Also added an apreq2-config script based on apu-config. .PP .PP .IP "\(bu" 2 configure: static mod_apreq.c [Bojan Smojver, joes] Add --with-apache2-src configure option, along with --with-apr-config and --with-apu-config, and provide support for compiling mod_apreq into httpd as a static apache module. .PP .PP .IP "\(bu" 2 C API: mod_apreq.c [joes] Support for internal redirects added to the mod_apreq filter. This ensures any POST data prefetched in the main request gets passed along to the subrequest handler(s). .PP .PP .IP "\(bu" 2 C bugfix: apreq_decode [Graham Clark] If the source and destination strings are represented by the same pointer - e.g. if called as apreq_unescape(s) - string s is modified incorrectly in general. Patch includes new unit test. .PP .PP .IP "\(bu" 2 Perl API [joes] Added $req->parse, $req->status, & 'preparse' logic to $req->param & $req->upload. .PP .PP .IP "\(bu" 2 C API [joes] Added 'preparse' logic to apreq_params & apreq_uploads to bring behavior in line with libapreq-1.x. .PP .PP .IP "\(bu" 2 C API [joes] Dropped param->charset. Make apreq_brigade_concat public, so mod_apreq can use it for its ctx->spool brigade. .PP .PP .IP "\(bu" 2 Documentation [joes] Updated Cookie_pod to reflect API changes over v1.X. .PP .PP .IP "\(bu" 2 Documentation [joes] Added doxygen links to Apache::Request and Apache::Cookie perl docs. .PP .PP .IP "\(bu" 2 C API [joes] Added apreq_copy_brigade(bb) to \fBapreq.h\fP. .PP .PP .IP "\(bu" 2 C API [joes] The new filter-based design required a complete departure from libapreq-1.X codebase. libapreq-2 is based solely on APR, and to be fully functional, requires a supporting environment similar to Apache-2. A person wishing to port libapreq-2 to a new environment needs to provide definitions for the declarations in apreq_env.h. .PP .PP .IP "\(bu" 2 Perl API [joes] Aggregates are always collected into an APR::Table-based package. New table packages: Apache::Cookie::Table, Apache::Request::Table, and Apache::Upload::Table. .PP .PP .IP "\(bu" 2 Perl API [joes] Apache::Cookie->fetch now requires an 'environment' argument ($r). Its return value is blessed into the Apache::Cookie::Jar class. .PP .PP .IP "\(bu" 2 Perl API [joes] Two new request lookup functions: .IP " 1." 6 $req->args - param lookup using only the query string .IP " 2." 6 $req->body - param lookup using only the POST data .PP .PP libapreq2-2.13/docs/man/man3/apreq_cookie.h.30000644000076400017500000002003311473533324017631 0ustar issacissac.TH "include/apreq_cookie.h" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME include/apreq_cookie.h \- Cookies and Jars. .PP \fBapreq_cookie.h\fP describes a common server-side API for request (incoming) and response (outgoing) cookies. It aims towards compliance with the standard cookie specifications listed below. .SH SYNOPSIS .br .PP \fC#include 'apreq.h'\fP .br \fC#include 'apr_time.h'\fP .br .SS "Data Structures" .in +1c .ti -1c .RI "struct \fBapreq_cookie_t\fP" .br .RI "\fICookie type, supporting both Netscape and RFC cookie specifications. \fP" .in -1c .SS "Defines" .in +1c .ti -1c .RI "#define \fBAPREQ_COOKIE_MAX_LENGTH\fP 4096" .br .in -1c .SS "Functions" .in +1c .ti -1c .RI "static APR_INLINE \fBapreq_cookie_t\fP * \fBapreq_value_to_cookie\fP (const char *val)" .br .ti -1c .RI "static APR_INLINE unsigned \fBapreq_cookie_version\fP (const \fBapreq_cookie_t\fP *c)" .br .ti -1c .RI "static APR_INLINE void \fBapreq_cookie_version_set\fP (\fBapreq_cookie_t\fP *c, unsigned v)" .br .ti -1c .RI "static APR_INLINE unsigned \fBapreq_cookie_is_secure\fP (const \fBapreq_cookie_t\fP *c)" .br .ti -1c .RI "static APR_INLINE void \fBapreq_cookie_secure_on\fP (\fBapreq_cookie_t\fP *c)" .br .ti -1c .RI "static APR_INLINE void \fBapreq_cookie_secure_off\fP (\fBapreq_cookie_t\fP *c)" .br .ti -1c .RI "static APR_INLINE unsigned \fBapreq_cookie_is_httponly\fP (const \fBapreq_cookie_t\fP *c)" .br .ti -1c .RI "static APR_INLINE void \fBapreq_cookie_httponly_on\fP (\fBapreq_cookie_t\fP *c)" .br .ti -1c .RI "static APR_INLINE void \fBapreq_cookie_httponly_off\fP (\fBapreq_cookie_t\fP *c)" .br .ti -1c .RI "static APR_INLINE unsigned \fBapreq_cookie_is_tainted\fP (const \fBapreq_cookie_t\fP *c)" .br .ti -1c .RI "static APR_INLINE void \fBapreq_cookie_tainted_on\fP (\fBapreq_cookie_t\fP *c)" .br .ti -1c .RI "static APR_INLINE void \fBapreq_cookie_tainted_off\fP (\fBapreq_cookie_t\fP *c)" .br .ti -1c .RI "\fBapr_status_t\fP \fBapreq_parse_cookie_header\fP (\fBapr_pool_t\fP *pool, \fBapr_table_t\fP *jar, const char *header)" .br .ti -1c .RI "\fBapreq_cookie_t\fP * \fBapreq_cookie_make\fP (\fBapr_pool_t\fP *pool, const char *name, const \fBapr_size_t\fP nlen, const char *value, const \fBapr_size_t\fP vlen)" .br .ti -1c .RI "char * \fBapreq_cookie_as_string\fP (const \fBapreq_cookie_t\fP *c, \fBapr_pool_t\fP *p)" .br .ti -1c .RI "int \fBapreq_cookie_serialize\fP (const \fBapreq_cookie_t\fP *c, char *buf, \fBapr_size_t\fP len)" .br .ti -1c .RI "void \fBapreq_cookie_expires\fP (\fBapreq_cookie_t\fP *c, const char *time_str)" .br .in -1c .SH "Detailed Description" .PP Cookies and Jars. .PP \fBapreq_cookie.h\fP describes a common server-side API for request (incoming) and response (outgoing) cookies. It aims towards compliance with the standard cookie specifications listed below. \fBSee also:\fP .RS 4 http://wp.netscape.com/newsref/std/cookie_spec.html .PP http://www.ietf.org/rfc/rfc2109.txt .PP http://www.ietf.org/rfc/rfc2964.txt .PP http://www.ietf.org/rfc/rfc2965.txt .RE .PP .SH "Define Documentation" .PP .SS "#define APREQ_COOKIE_MAX_LENGTH 4096" .PP This macro is deprecated. .PP Maximum length of a single Set-Cookie(2) header. .SH "Function Documentation" .PP .SS "char* apreq_cookie_as_string (const \fBapreq_cookie_t\fP * c, \fBapr_pool_t\fP * p)" .PP Returns a string that represents the cookie as it would appear in a valid 'Set-Cookie*' header. .PP \fBParameters:\fP .RS 4 \fIc\fP cookie. .br \fIp\fP pool which allocates the returned string. .RE .PP \fBReturns:\fP .RS 4 header string. .RE .PP .SS "void apreq_cookie_expires (\fBapreq_cookie_t\fP * c, const char * time_str)" .PP Set the Cookie's expiration date. .PP \fBParameters:\fP .RS 4 \fIc\fP The cookie. .br \fItime_str\fP If NULL, the Cookie's expiration date is unset, making it a session cookie. This means no 'expires' or 'max-age' attribute will appear in the cookie's serialized form. If time_str is not NULL, the expiration date will be reset to the offset (from now) represented by time_str. The time_str should be in a format that \fBapreq_atoi64t()\fP can understand, namely /[+-]?\\d+\\s*[YMDhms]/. .RE .PP \fBRemarks:\fP .RS 4 Now time_str may also be a fixed date; see \fBapr_date_parse_rfc()\fP for admissible formats. .RE .PP .SS "static APR_INLINE void apreq_cookie_httponly_off (\fBapreq_cookie_t\fP * c)\fC [static]\fP" .PP Turns off the cookie's HttpOnly flag. .SS "static APR_INLINE void apreq_cookie_httponly_on (\fBapreq_cookie_t\fP * c)\fC [static]\fP" .PP Sets the cookie's HttpOnly flag, meaning it is not accessible through client-side script in supported browsers. .SS "static APR_INLINE unsigned apreq_cookie_is_httponly (const \fBapreq_cookie_t\fP * c)\fC [static]\fP" .PP \fBReturns:\fP .RS 4 1 if the HttpOnly flag is set, 0 otherwise. .RE .PP .SS "static APR_INLINE unsigned apreq_cookie_is_secure (const \fBapreq_cookie_t\fP * c)\fC [static]\fP" .PP \fBReturns:\fP .RS 4 1 if the secure flag is set, 0 otherwise. .RE .PP .SS "static APR_INLINE unsigned apreq_cookie_is_tainted (const \fBapreq_cookie_t\fP * c)\fC [static]\fP" .PP \fBReturns:\fP .RS 4 1 if the taint flag is set, 0 otherwise. .RE .PP .SS "\fBapreq_cookie_t\fP* apreq_cookie_make (\fBapr_pool_t\fP * pool, const char * name, const \fBapr_size_t\fP nlen, const char * value, const \fBapr_size_t\fP vlen)" .PP Returns a new cookie, made from the argument list. .PP \fBParameters:\fP .RS 4 \fIpool\fP Pool which allocates the cookie. .br \fIname\fP The cookie's name. .br \fInlen\fP Length of name. .br \fIvalue\fP The cookie's value. .br \fIvlen\fP Length of value. .RE .PP \fBReturns:\fP .RS 4 the new cookie .RE .PP .SS "static APR_INLINE void apreq_cookie_secure_off (\fBapreq_cookie_t\fP * c)\fC [static]\fP" .PP Turns off the cookie's secure flag. .SS "static APR_INLINE void apreq_cookie_secure_on (\fBapreq_cookie_t\fP * c)\fC [static]\fP" .PP Sets the cookie's secure flag, meaning it only comes back over an SSL-encrypted connction. .SS "int apreq_cookie_serialize (const \fBapreq_cookie_t\fP * c, char * buf, \fBapr_size_t\fP len)" .PP Same functionality as apreq_cookie_as_string. Stores the string representation in buf, using up to len bytes in buf as storage. The return value has the same semantics as that of apr_snprintf, including the special behavior for a 'len = 0' argument. .PP \fBParameters:\fP .RS 4 \fIc\fP cookie. .br \fIbuf\fP storage location for the result. .br \fIlen\fP size of buf's storage area. .RE .PP \fBReturns:\fP .RS 4 size of resulting header string. .RE .PP .SS "static APR_INLINE void apreq_cookie_tainted_off (\fBapreq_cookie_t\fP * c)\fC [static]\fP" .PP Turns off the cookie's tainted flag. .SS "static APR_INLINE void apreq_cookie_tainted_on (\fBapreq_cookie_t\fP * c)\fC [static]\fP" .PP Sets the cookie's tainted flag. .SS "static APR_INLINE unsigned apreq_cookie_version (const \fBapreq_cookie_t\fP * c)\fC [static]\fP" .PP \fBReturns:\fP .RS 4 1 if this is an RFC cookie, 0 if its a Netscape cookie. .RE .PP .SS "static APR_INLINE void apreq_cookie_version_set (\fBapreq_cookie_t\fP * c, unsigned v)\fC [static]\fP" .PP Sets the cookie's protocol version. .SS "\fBapr_status_t\fP apreq_parse_cookie_header (\fBapr_pool_t\fP * pool, \fBapr_table_t\fP * jar, const char * header)" .PP Parse a cookie header and store the cookies in an apr_table_t. .PP \fBParameters:\fP .RS 4 \fIpool\fP pool which allocates the cookies .br \fIjar\fP table where parsed cookies are stored .br \fIheader\fP the header value .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS. .PP \fBAPREQ_ERROR_BADSEQ\fP if an unparseable character sequence appears. .PP \fBAPREQ_ERROR_MISMATCH\fP if an rfc-cookie attribute appears in a netscape cookie header. .PP APR_ENOTIMPL if an unrecognized rfc-cookie attribute appears. .PP \fBAPREQ_ERROR_NOTOKEN\fP if a required token was not present. .PP \fBAPREQ_ERROR_BADCHAR\fP if an unexpected token was present. .RE .PP .SS "static APR_INLINE \fBapreq_cookie_t\fP* apreq_value_to_cookie (const char * val)\fC [static]\fP" .PP Upgrades a jar's table values to \fBapreq_cookie_t\fP structs. .SH "Author" .PP Generated automatically by Doxygen for libapreq2 from the source code. libapreq2-2.13/docs/man/man3/apreq_cookie_t.30000644000076400017500000000267411473533324017741 0ustar issacissac.TH "apreq_cookie_t" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME apreq_cookie_t \- Cookie type, supporting both Netscape and RFC cookie specifications. .PP .SH SYNOPSIS .br .PP \fC#include \fP .PP .SS "Data Fields" .in +1c .ti -1c .RI "char * \fBpath\fP" .br .ti -1c .RI "char * \fBdomain\fP" .br .ti -1c .RI "char * \fBport\fP" .br .ti -1c .RI "char * \fBcomment\fP" .br .ti -1c .RI "char * \fBcommentURL\fP" .br .ti -1c .RI "\fBapr_time_t\fP \fBmax_age\fP" .br .ti -1c .RI "unsigned \fBflags\fP" .br .ti -1c .RI "const \fBapreq_value_t\fP \fBv\fP" .br .in -1c .SH "Detailed Description" .PP Cookie type, supporting both Netscape and RFC cookie specifications. .SH "Field Documentation" .PP .SS "char* \fBapreq_cookie_t::path\fP" .PP Restricts url path .SS "char* \fBapreq_cookie_t::domain\fP" .PP Restricts server domain .SS "char* \fBapreq_cookie_t::port\fP" .PP Restricts server port .SS "char* \fBapreq_cookie_t::comment\fP" .PP RFC cookies may send a comment .SS "char* \fBapreq_cookie_t::commentURL\fP" .PP RFC cookies may place an URL here .SS "\fBapr_time_t\fP \fBapreq_cookie_t::max_age\fP" .PP total duration of cookie: -1 == session .SS "unsigned \fBapreq_cookie_t::flags\fP" .PP charsets, taint marks, app-specific bits .SS "const \fBapreq_value_t\fP \fBapreq_cookie_t::v\fP" .PP 'raw' cookie value .SH "Author" .PP Generated automatically by Doxygen for libapreq2 from the source code. libapreq2-2.13/docs/man/man3/apreq_error.h.30000644000076400017500000001013211473533324017510 0ustar issacissac.TH "include/apreq_error.h" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME include/apreq_error.h \- Error status codes. .PP Define the APREQ_ error codes. .SH SYNOPSIS .br .PP \fC#include 'apr_errno.h'\fP .br \fC#include 'apreq.h'\fP .br .SS "Defines" .in +1c .ti -1c .RI "#define \fBAPR_EBADARG\fP APR_BADARG" .br .ti -1c .RI "#define \fBAPREQ_ERROR_GENERAL\fP APR_OS_START_USERERR" .br .ti -1c .RI "#define \fBAPREQ_ERROR_TAINTED\fP (APREQ_ERROR_GENERAL + 1)" .br .ti -1c .RI "#define \fBAPREQ_ERROR_INTERRUPT\fP (APREQ_ERROR_GENERAL + 2)" .br .ti -1c .RI "#define \fBAPREQ_ERROR_BADDATA\fP (APREQ_ERROR_GENERAL + 10)" .br .ti -1c .RI "#define \fBAPREQ_ERROR_BADCHAR\fP (APREQ_ERROR_BADDATA + 1)" .br .ti -1c .RI "#define \fBAPREQ_ERROR_BADSEQ\fP (APREQ_ERROR_BADDATA + 2)" .br .ti -1c .RI "#define \fBAPREQ_ERROR_BADATTR\fP (APREQ_ERROR_BADDATA + 3)" .br .ti -1c .RI "#define \fBAPREQ_ERROR_BADHEADER\fP (APREQ_ERROR_BADDATA + 4)" .br .ti -1c .RI "#define \fBAPREQ_ERROR_BADUTF8\fP (APREQ_ERROR_BADDATA + 5)" .br .ti -1c .RI "#define \fBAPREQ_ERROR_NODATA\fP (APREQ_ERROR_GENERAL + 20)" .br .ti -1c .RI "#define \fBAPREQ_ERROR_NOTOKEN\fP (APREQ_ERROR_NODATA + 1)" .br .ti -1c .RI "#define \fBAPREQ_ERROR_NOATTR\fP (APREQ_ERROR_NODATA + 2)" .br .ti -1c .RI "#define \fBAPREQ_ERROR_NOHEADER\fP (APREQ_ERROR_NODATA + 3)" .br .ti -1c .RI "#define \fBAPREQ_ERROR_NOPARSER\fP (APREQ_ERROR_NODATA + 4)" .br .ti -1c .RI "#define \fBAPREQ_ERROR_MISMATCH\fP (APREQ_ERROR_GENERAL + 30)" .br .ti -1c .RI "#define \fBAPREQ_ERROR_OVERLIMIT\fP (APREQ_ERROR_MISMATCH + 1)" .br .ti -1c .RI "#define \fBAPREQ_ERROR_UNDERLIMIT\fP (APREQ_ERROR_MISMATCH + 2)" .br .ti -1c .RI "#define \fBAPREQ_ERROR_NOTEMPTY\fP (APREQ_ERROR_MISMATCH + 3)" .br .in -1c .SS "Functions" .in +1c .ti -1c .RI "char * \fBapreq_strerror\fP (\fBapr_status_t\fP s, char *buf, \fBapr_size_t\fP bufsize)" .br .in -1c .SH "Detailed Description" .PP Error status codes. .PP Define the APREQ_ error codes. .SH "Define Documentation" .PP .SS "#define APR_EBADARG APR_BADARG" .PP Bad Arguments return value .PP \fBSee also:\fP .RS 4 APR_BADARG .RE .PP .SS "#define APREQ_ERROR_BADATTR (APREQ_ERROR_BADDATA + 3)" .PP Invalid attribute. .SS "#define APREQ_ERROR_BADCHAR (APREQ_ERROR_BADDATA + 1)" .PP Invalid character. .SS "#define APREQ_ERROR_BADDATA (APREQ_ERROR_GENERAL + 10)" .PP Invalid input data. .SS "#define APREQ_ERROR_BADHEADER (APREQ_ERROR_BADDATA + 4)" .PP Invalid header. .SS "#define APREQ_ERROR_BADSEQ (APREQ_ERROR_BADDATA + 2)" .PP Invalid byte sequence. .SS "#define APREQ_ERROR_BADUTF8 (APREQ_ERROR_BADDATA + 5)" .PP Invalid utf8 encoding. .SS "#define APREQ_ERROR_GENERAL APR_OS_START_USERERR" .PP Internal apreq error. .SS "#define APREQ_ERROR_INTERRUPT (APREQ_ERROR_GENERAL + 2)" .PP Parsing interrupted. .SS "#define APREQ_ERROR_MISMATCH (APREQ_ERROR_GENERAL + 30)" .PP Conflicting information. .SS "#define APREQ_ERROR_NOATTR (APREQ_ERROR_NODATA + 2)" .PP Missing attribute. .SS "#define APREQ_ERROR_NODATA (APREQ_ERROR_GENERAL + 20)" .PP Missing input data. .SS "#define APREQ_ERROR_NOHEADER (APREQ_ERROR_NODATA + 3)" .PP Missing header. .SS "#define APREQ_ERROR_NOPARSER (APREQ_ERROR_NODATA + 4)" .PP Missing parser. .SS "#define APREQ_ERROR_NOTEMPTY (APREQ_ERROR_MISMATCH + 3)" .PP Setting already configured. .SS "#define APREQ_ERROR_NOTOKEN (APREQ_ERROR_NODATA + 1)" .PP Missing required token. .SS "#define APREQ_ERROR_OVERLIMIT (APREQ_ERROR_MISMATCH + 1)" .PP Exceeds configured maximum limit. .SS "#define APREQ_ERROR_TAINTED (APREQ_ERROR_GENERAL + 1)" .PP Attempted to perform unsafe action with tainted data. .SS "#define APREQ_ERROR_UNDERLIMIT (APREQ_ERROR_MISMATCH + 2)" .PP Below configured minimum limit. .SH "Function Documentation" .PP .SS "char* apreq_strerror (\fBapr_status_t\fP s, char * buf, \fBapr_size_t\fP bufsize)" .PP apreq's wrapper around \fBapr_strerror()\fP; recognizes APREQ_ERROR_* status codes. .SH "Author" .PP Generated automatically by Doxygen for libapreq2 from the source code. libapreq2-2.13/docs/man/man3/apreq_faq.30000644000076400017500000000016311473533324016703 0ustar issacissac.TH "apreq_faq" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME apreq_faq \- FAQ libapreq2-2.13/docs/man/man3/apreq_handle_t.30000644000076400017500000000203411473533324017711 0ustar issacissac.TH "apreq_handle_t" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME apreq_handle_t \- .SH SYNOPSIS .br .PP \fC#include \fP .PP .SS "Data Fields" .in +1c .ti -1c .RI "struct \fBapreq_module_t\fP * \fBmodule\fP" .br .ti -1c .RI "\fBapr_pool_t\fP * \fBpool\fP" .br .ti -1c .RI "\fBapr_bucket_alloc_t\fP * \fBbucket_alloc\fP" .br .in -1c .SH "Detailed Description" .PP An apreq handle associated with a module. The structure may have variable size, because the module may append its own data structures after it. .SH "Field Documentation" .PP .SS "struct \fBapreq_module_t\fP* \fBapreq_handle_t::module\fP\fC [read]\fP" .PP the apreq module which implements this handle .SS "\fBapr_pool_t\fP* \fBapreq_handle_t::pool\fP" .PP the pool which defines the lifetime of the parsed data .SS "\fBapr_bucket_alloc_t\fP* \fBapreq_handle_t::bucket_alloc\fP" .PP the allocator, which persists at least as long as the pool .SH "Author" .PP Generated automatically by Doxygen for libapreq2 from the source code. libapreq2-2.13/docs/man/man3/apreq_hook_find_param_ctx_t.30000644000076400017500000000105311473533324022454 0ustar issacissac.TH "apreq_hook_find_param_ctx_t" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME apreq_hook_find_param_ctx_t \- .SH SYNOPSIS .br .PP \fC#include \fP .PP .SS "Data Fields" .in +1c .ti -1c .RI "const char * \fBname\fP" .br .ti -1c .RI "\fBapreq_param_t\fP * \fBparam\fP" .br .ti -1c .RI "\fBapreq_hook_t\fP * \fBprev\fP" .br .in -1c .SH "Detailed Description" .PP Context struct for the apreq_hook_find_param hook. .SH "Author" .PP Generated automatically by Doxygen for libapreq2 from the source code. libapreq2-2.13/docs/man/man3/apreq_hook_t.30000644000076400017500000000210511473533324017415 0ustar issacissac.TH "apreq_hook_t" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME apreq_hook_t \- .SH SYNOPSIS .br .PP \fC#include \fP .PP .SS "Data Fields" .in +1c .ti -1c .RI "\fBapreq_hook_function_t\fP \fBhook\fP" .br .ti -1c .RI "\fBapreq_hook_t\fP * \fBnext\fP" .br .ti -1c .RI "\fBapr_pool_t\fP * \fBpool\fP" .br .ti -1c .RI "void * \fBctx\fP" .br .in -1c .SH "Detailed Description" .PP A hook is called by the parser whenever data arrives in a file upload parameter of the request body. You may associate any number of hooks with a parser instance with \fBapreq_parser_add_hook()\fP. .SH "Field Documentation" .PP .SS "\fBapreq_hook_function_t\fP \fBapreq_hook_t::hook\fP" .PP the hook function .SS "\fBapreq_hook_t\fP* \fBapreq_hook_t::next\fP" .PP next item in the linked list .SS "\fBapr_pool_t\fP* \fBapreq_hook_t::pool\fP" .PP pool which allocated this hook .SS "void* \fBapreq_hook_t::ctx\fP" .PP a user defined pointer passed to the hook function .SH "Author" .PP Generated automatically by Doxygen for libapreq2 from the source code. libapreq2-2.13/docs/man/man3/apreq_install.30000644000076400017500000000361011473533324017602 0ustar issacissac.TH "apreq_install" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME apreq_install \- INSTALL .PP .nf PREREQUISITES: Please see the PREREQUISITES file. If you are building httpd-apreq-2 directly from svn, you can generate the list of prerequisites: % perl build/version_check.pl INSTRUCTIONS: FreeBSD/Solaris users must substitute "gmake" for "make" below. Unix build, where libtool/automake/autoconf works: % ./configure --with-apache2-apxs=/path/to/apache2/bin/apxs % make (optional)% make test % make install (optional)% make docs_install Or using the CPAN/perlish way (which includes the Apache2::Request and Apache2::Cookie modules): % perl Makefile.PL --with-apache2-apxs=/path/to/apache2/bin/apxs % make (optional)% make test % make install (optional)% make docs_install Developers and other folks using httpd-apreq-2 directly from svn need to execute "./buildconf" prior to running "./configure". Win32 build: C:\httpd-apreq-2> perl Makefile.PL C:\httpd-apreq-2> nmake C:\httpd-apreq-2> nmake test C:\httpd-apreq-2> nmake docs C:\httpd-apreq-2> nmake install SVN (Subversion) ACCESS Development of httpd-apreq-2 can be followed through the svn repository: $ svn checkout http://svn.apache.org/repos/asf/httpd/apreq/trunk/ httpd-apreq-2 Developers with commit access must use the https protocol instead; note that, if you are compiling svn from sources, you must supply the configure script with the appropriate switch to enable ssl. Subversion sources, and binaries for some platforms, may be obtained through the home page: http://subversion.tigris.org/ Documentation on using svn is available at http://svnbook.red-bean.com/ In particular, http://svnbook.red-bean.com/en/1.0/apa.html contains a guide for users familiar with cvs. .fi .PP libapreq2-2.13/docs/man/man3/apreq_lang.30000644000076400017500000000056311473533324017061 0ustar issacissac.TH "Language Bindings" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME Language Bindings \- libapreq2 APIs for programming languages other than C .PP .SS "Modules" .in +1c .ti -1c .RI "\fBPerl\fP" .br .RI "\fIXS Modules. \fP" .PP .in -1c .SH "Detailed Description" .PP libapreq2 APIs for programming languages other than C .PP XXX libapreq2-2.13/docs/man/man3/apreq_license.30000644000076400017500000002635511473533324017571 0ustar issacissac.TH "apreq_license" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME apreq_license \- LICENSE .PP .nf 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. .fi .PP libapreq2-2.13/docs/man/man3/apreq_module.30000644000076400017500000000062111473533324017420 0ustar issacissac.TH "Modules" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME Modules \- apreq2 modules included in libapreq2-2.13. .PP .SS "Modules" .in +1c .ti -1c .RI "\fBApache 2.X Filter Module\fP" .br .RI "\fImod_apreq2 - DSO that ties libapreq2 to \fBApache\fP HTTPD 2.X. \fP" .PP .in -1c .SH "Detailed Description" .PP apreq2 modules included in libapreq2-2.13. .PP XXX libapreq2-2.13/docs/man/man3/apreq_module.h.30000644000076400017500000003153511473533324017656 0ustar issacissac.TH "include/apreq_module.h" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME include/apreq_module.h \- Module API. .SH SYNOPSIS .br .PP \fC#include 'apreq_cookie.h'\fP .br \fC#include 'apreq_parser.h'\fP .br \fC#include 'apreq_error.h'\fP .br .SS "Data Structures" .in +1c .ti -1c .RI "struct \fBapreq_handle_t\fP" .br .ti -1c .RI "struct \fBapreq_module_t\fP" .br .RI "\fIVtable describing the necessary module functions. \fP" .in -1c .SS "Defines" .in +1c .ti -1c .RI "#define \fBAPREQ_MODULE\fP(pre, mmn)" .br .ti -1c .RI "#define \fBapreq_cookie\fP(req, name) apreq_jar_get(req, name)" .br .in -1c .SS "Functions" .in +1c .ti -1c .RI "static APR_INLINE unsigned \fBapreq_module_status_is_error\fP (\fBapr_status_t\fP s)" .br .ti -1c .RI "static APR_INLINE \fBapr_status_t\fP \fBapreq_jar\fP (\fBapreq_handle_t\fP *req, const \fBapr_table_t\fP **t)" .br .ti -1c .RI "static APR_INLINE \fBapr_status_t\fP \fBapreq_args\fP (\fBapreq_handle_t\fP *req, const \fBapr_table_t\fP **t)" .br .ti -1c .RI "static APR_INLINE \fBapr_status_t\fP \fBapreq_body\fP (\fBapreq_handle_t\fP *req, const \fBapr_table_t\fP **t)" .br .ti -1c .RI "static APR_INLINE \fBapreq_cookie_t\fP * \fBapreq_jar_get\fP (\fBapreq_handle_t\fP *req, const char *name)" .br .ti -1c .RI "static APR_INLINE \fBapreq_param_t\fP * \fBapreq_args_get\fP (\fBapreq_handle_t\fP *req, const char *name)" .br .ti -1c .RI "static APR_INLINE \fBapreq_param_t\fP * \fBapreq_body_get\fP (\fBapreq_handle_t\fP *req, const char *name)" .br .ti -1c .RI "static APR_INLINE \fBapr_status_t\fP \fBapreq_parser_get\fP (\fBapreq_handle_t\fP *req, const \fBapreq_parser_t\fP **parser)" .br .ti -1c .RI "static APR_INLINE \fBapr_status_t\fP \fBapreq_parser_set\fP (\fBapreq_handle_t\fP *req, \fBapreq_parser_t\fP *parser)" .br .ti -1c .RI "static APR_INLINE \fBapr_status_t\fP \fBapreq_hook_add\fP (\fBapreq_handle_t\fP *req, \fBapreq_hook_t\fP *hook)" .br .ti -1c .RI "static APR_INLINE \fBapr_status_t\fP \fBapreq_brigade_limit_set\fP (\fBapreq_handle_t\fP *req, \fBapr_size_t\fP bytes)" .br .ti -1c .RI "static APR_INLINE \fBapr_status_t\fP \fBapreq_brigade_limit_get\fP (\fBapreq_handle_t\fP *req, \fBapr_size_t\fP *bytes)" .br .ti -1c .RI "static APR_INLINE \fBapr_status_t\fP \fBapreq_read_limit_set\fP (\fBapreq_handle_t\fP *req, \fBapr_uint64_t\fP bytes)" .br .ti -1c .RI "static APR_INLINE \fBapr_status_t\fP \fBapreq_read_limit_get\fP (\fBapreq_handle_t\fP *req, \fBapr_uint64_t\fP *bytes)" .br .ti -1c .RI "static APR_INLINE \fBapr_status_t\fP \fBapreq_temp_dir_set\fP (\fBapreq_handle_t\fP *req, const char *path)" .br .ti -1c .RI "static APR_INLINE \fBapr_status_t\fP \fBapreq_temp_dir_get\fP (\fBapreq_handle_t\fP *req, const char **path)" .br .ti -1c .RI "\fBapreq_handle_t\fP * \fBapreq_handle_cgi\fP (\fBapr_pool_t\fP *pool)" .br .ti -1c .RI "\fBapreq_handle_t\fP * \fBapreq_handle_custom\fP (\fBapr_pool_t\fP *pool, const char *query_string, const char *cookie, \fBapreq_parser_t\fP *parser, \fBapr_uint64_t\fP read_limit, \fBapr_bucket_brigade\fP *in)" .br .ti -1c .RI "\fBapreq_param_t\fP * \fBapreq_param\fP (\fBapreq_handle_t\fP *req, const char *key)" .br .ti -1c .RI "\fBapr_table_t\fP * \fBapreq_params\fP (\fBapreq_handle_t\fP *req, \fBapr_pool_t\fP *p)" .br .ti -1c .RI "\fBapr_table_t\fP * \fBapreq_cookies\fP (\fBapreq_handle_t\fP *req, \fBapr_pool_t\fP *p)" .br .in -1c .SH "Detailed Description" .PP Module API. .SH "Define Documentation" .PP .SS "#define apreq_cookie(req, name) apreq_jar_get(req, name)" .PP Find the first cookie with the specified name. The match is case-insensitive. .PP \fBParameters:\fP .RS 4 \fIreq\fP request handle. .br \fIname\fP desired cookie name .RE .PP \fBReturns:\fP .RS 4 The first matching cookie or NULL. .RE .PP .SS "#define APREQ_MODULE(pre, mmn)" .PP \fBValue:\fP .PP .nf const apreq_module_t \ pre##_module = { #pre, mmn, \ pre##_jar, pre##_args, pre##_body, \ pre##_jar_get, pre##_args_get, pre##_body_get, \ pre##_parser_get, pre##_parser_set, pre##_hook_add, \ pre##_brigade_limit_get, pre##_brigade_limit_set, \ pre##_read_limit_get, pre##_read_limit_set, \ pre##_temp_dir_get, pre##_temp_dir_set, \ } .fi Convenience macro for defining a module by mapping a function prefix to an associated \fBapreq_module_t\fP structure. .PP \fBParameters:\fP .RS 4 \fIpre\fP Prefix to define new module. All attributes of the \fBapreq_module_t\fP struct are defined with this as their prefix. The generated struct is named by appending '_module' to the prefix. .br \fImmn\fP Magic number (i.e. version number) of this module. .RE .PP .SH "Function Documentation" .PP .SS "static APR_INLINE \fBapr_status_t\fP apreq_args (\fBapreq_handle_t\fP * req, const \fBapr_table_t\fP ** t)\fC [static]\fP" .PP Expose the parsed 'query string' associated to this handle. .PP \fBParameters:\fP .RS 4 \fIreq\fP The request handle .br \fIt\fP The resulting table, which will either be NULL or a valid table object on return. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS or a module-specific error status code. .RE .PP .SS "static APR_INLINE \fBapreq_param_t\fP* apreq_args_get (\fBapreq_handle_t\fP * req, const char * name)\fC [static]\fP" .PP Fetch the first query string param with the given name. .PP \fBParameters:\fP .RS 4 \fIreq\fP The request handle .br \fIname\fP Case-insensitive param name. .RE .PP \fBReturns:\fP .RS 4 First matching param, or NULL if none match. .RE .PP .SS "static APR_INLINE \fBapr_status_t\fP apreq_body (\fBapreq_handle_t\fP * req, const \fBapr_table_t\fP ** t)\fC [static]\fP" .PP Expose the parsed 'request body' associated to this handle. .PP \fBParameters:\fP .RS 4 \fIreq\fP The request handle .br \fIt\fP The resulting table, which will either be NULL or a valid table object on return. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS or a module-specific error status code. .RE .PP .SS "static APR_INLINE \fBapreq_param_t\fP* apreq_body_get (\fBapreq_handle_t\fP * req, const char * name)\fC [static]\fP" .PP Fetch the first body param with the given name. .PP \fBParameters:\fP .RS 4 \fIreq\fP The request handle .br \fIname\fP Case-insensitive cookie name. .RE .PP \fBReturns:\fP .RS 4 First matching param, or NULL if none match. .RE .PP .SS "static APR_INLINE \fBapr_status_t\fP apreq_brigade_limit_get (\fBapreq_handle_t\fP * req, \fBapr_size_t\fP * bytes)\fC [static]\fP" .PP Get the active brigade limit. .PP \fBParameters:\fP .RS 4 \fIreq\fP The handle. .br \fIbytes\fP Pointer to resulting (current) limit. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS or a module-specific error, which may leave bytes undefined. .RE .PP .SS "static APR_INLINE \fBapr_status_t\fP apreq_brigade_limit_set (\fBapreq_handle_t\fP * req, \fBapr_size_t\fP bytes)\fC [static]\fP" .PP Set the active brigade limit. .PP \fBParameters:\fP .RS 4 \fIreq\fP The handle. .br \fIbytes\fP New limit to use. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS or module-specific error. .RE .PP .SS "\fBapr_table_t\fP* apreq_cookies (\fBapreq_handle_t\fP * req, \fBapr_pool_t\fP * p)" .PP Returns a table containing all request cookies. .PP \fBParameters:\fP .RS 4 \fIreq\fP the apreq request handle .br \fIp\fP Allocates the returned table. .RE .PP .SS "\fBapreq_handle_t\fP* apreq_handle_cgi (\fBapr_pool_t\fP * pool)" .PP Create an apreq handle which is suitable for a CGI program. It reads input from stdin and writes output to stdout. .PP \fBParameters:\fP .RS 4 \fIpool\fP Pool associated to this handle. .RE .PP \fBReturns:\fP .RS 4 New handle; can only be NULL if the pool allocation failed. .RE .PP \fBRemarks:\fP .RS 4 The handle gets cached in the pool's userdata, so subsequent calls will retrieve the original cached handle. .RE .PP .SS "\fBapreq_handle_t\fP* apreq_handle_custom (\fBapr_pool_t\fP * pool, const char * query_string, const char * cookie, \fBapreq_parser_t\fP * parser, \fBapr_uint64_t\fP read_limit, \fBapr_bucket_brigade\fP * in)" .PP Create a custom apreq handle which knows only some static values. Useful if you want to test the parser code or if you have got data from a custom source (neither \fBApache\fP 2 nor CGI). .PP \fBParameters:\fP .RS 4 \fIpool\fP allocates the parse data, .br \fIquery_string\fP parsed into args table .br \fIcookie\fP value of the request 'Cookie' header .br \fIparser\fP parses the request body .br \fIread_limit\fP maximum bytes to read from the body .br \fIin\fP brigade containing the request body .RE .PP \fBReturns:\fP .RS 4 new handle; can only be NULL if the pool allocation failed. .RE .PP .SS "static APR_INLINE \fBapr_status_t\fP apreq_hook_add (\fBapreq_handle_t\fP * req, \fBapreq_hook_t\fP * hook)\fC [static]\fP" .PP Add a parser hook for this request. .PP \fBParameters:\fP .RS 4 \fIreq\fP The request handle .br \fIhook\fP Hook to add. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS or module-specific error. .RE .PP .SS "static APR_INLINE \fBapr_status_t\fP apreq_jar (\fBapreq_handle_t\fP * req, const \fBapr_table_t\fP ** t)\fC [static]\fP" .PP Expose the parsed 'cookie' header associated to this handle. .PP \fBParameters:\fP .RS 4 \fIreq\fP The request handle .br \fIt\fP The resulting table, which will either be NULL or a valid table object on return. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS or a module-specific error status code. .RE .PP .SS "static APR_INLINE \fBapreq_cookie_t\fP* apreq_jar_get (\fBapreq_handle_t\fP * req, const char * name)\fC [static]\fP" .PP Fetch the first cookie with the given name. .PP \fBParameters:\fP .RS 4 \fIreq\fP The request handle .br \fIname\fP Case-insensitive cookie name. .RE .PP \fBReturns:\fP .RS 4 First matching cookie, or NULL if none match. .RE .PP .SS "static APR_INLINE unsigned apreq_module_status_is_error (\fBapr_status_t\fP s)\fC [static]\fP" .PP Defines the module-specific status codes which are commonly considered to be non-fatal. .PP \fBParameters:\fP .RS 4 \fIs\fP status code returned by an \fBapreq_module_t\fP method. .RE .PP \fBReturns:\fP .RS 4 1 if s is fatal, 0 otherwise. .RE .PP .SS "\fBapreq_param_t\fP* apreq_param (\fBapreq_handle_t\fP * req, const char * key)" .PP Find the first query string parameter or body parameter with the specified name. The match is case-insensitive. .PP \fBParameters:\fP .RS 4 \fIreq\fP request handle. .br \fIkey\fP desired parameter name .RE .PP \fBReturns:\fP .RS 4 The first matching parameter (with args searched first) or NULL. .RE .PP .SS "\fBapr_table_t\fP* apreq_params (\fBapreq_handle_t\fP * req, \fBapr_pool_t\fP * p)" .PP Returns a table containing key-value pairs for the full request (args + body). .PP \fBParameters:\fP .RS 4 \fIreq\fP request handle .br \fIp\fP allocates the returned table. .RE .PP \fBReturns:\fP .RS 4 table representing all available params; is never NULL. .RE .PP .SS "static APR_INLINE \fBapr_status_t\fP apreq_parser_get (\fBapreq_handle_t\fP * req, const \fBapreq_parser_t\fP ** parser)\fC [static]\fP" .PP Fetch the active body parser. .PP \fBParameters:\fP .RS 4 \fIreq\fP The request handle .br \fIparser\fP Points to the active parser on return. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS or module-specific error. .RE .PP .SS "static APR_INLINE \fBapr_status_t\fP apreq_parser_set (\fBapreq_handle_t\fP * req, \fBapreq_parser_t\fP * parser)\fC [static]\fP" .PP Set the body parser for this request. .PP \fBParameters:\fP .RS 4 \fIreq\fP The request handle .br \fIparser\fP New parser to use. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS or module-specific error. .RE .PP .SS "static APR_INLINE \fBapr_status_t\fP apreq_read_limit_get (\fBapreq_handle_t\fP * req, \fBapr_uint64_t\fP * bytes)\fC [static]\fP" .PP Get the active read limit. .PP \fBParameters:\fP .RS 4 \fIreq\fP The request handle. .br \fIbytes\fP Pointer to resulting (current) limit. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS or a module-specific error, which may leave bytes undefined. .RE .PP .SS "static APR_INLINE \fBapr_status_t\fP apreq_read_limit_set (\fBapreq_handle_t\fP * req, \fBapr_uint64_t\fP bytes)\fC [static]\fP" .PP Set the active read limit. .PP \fBParameters:\fP .RS 4 \fIreq\fP The handle. .br \fIbytes\fP New limit to use. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS or a module-specific error. .RE .PP .SS "static APR_INLINE \fBapr_status_t\fP apreq_temp_dir_get (\fBapreq_handle_t\fP * req, const char ** path)\fC [static]\fP" .PP Get the active temp directory. .PP \fBParameters:\fP .RS 4 \fIreq\fP The handle. .br \fIpath\fP Resulting path to temp dir. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS implies path is valid, but may also be NULL. Any other return value is module-specific, and may leave path undefined. .RE .PP .SS "static APR_INLINE \fBapr_status_t\fP apreq_temp_dir_set (\fBapreq_handle_t\fP * req, const char * path)\fC [static]\fP" .PP Set the active temp directory. .PP \fBParameters:\fP .RS 4 \fIreq\fP The handle. .br \fIpath\fP New path to use; may be NULL. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS or a module-specific error . .RE .PP .SH "Author" .PP Generated automatically by Doxygen for libapreq2 from the source code. libapreq2-2.13/docs/man/man3/apreq_module_t.30000644000076400017500000001105511473533324017746 0ustar issacissac.TH "apreq_module_t" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME apreq_module_t \- Vtable describing the necessary module functions. .PP .SH SYNOPSIS .br .PP \fC#include \fP .PP .SS "Data Fields" .in +1c .ti -1c .RI "const char * \fBname\fP" .br .ti -1c .RI "\fBapr_uint32_t\fP \fBmagic_number\fP" .br .ti -1c .RI "\fBapr_status_t\fP(* \fBjar\fP )(\fBapreq_handle_t\fP *, const \fBapr_table_t\fP **)" .br .ti -1c .RI "\fBapr_status_t\fP(* \fBargs\fP )(\fBapreq_handle_t\fP *, const \fBapr_table_t\fP **)" .br .ti -1c .RI "\fBapr_status_t\fP(* \fBbody\fP )(\fBapreq_handle_t\fP *, const \fBapr_table_t\fP **)" .br .ti -1c .RI "\fBapreq_cookie_t\fP *(* \fBjar_get\fP )(\fBapreq_handle_t\fP *, const char *)" .br .ti -1c .RI "\fBapreq_param_t\fP *(* \fBargs_get\fP )(\fBapreq_handle_t\fP *, const char *)" .br .ti -1c .RI "\fBapreq_param_t\fP *(* \fBbody_get\fP )(\fBapreq_handle_t\fP *, const char *)" .br .ti -1c .RI "\fBapr_status_t\fP(* \fBparser_get\fP )(\fBapreq_handle_t\fP *, const \fBapreq_parser_t\fP **)" .br .ti -1c .RI "\fBapr_status_t\fP(* \fBparser_set\fP )(\fBapreq_handle_t\fP *, \fBapreq_parser_t\fP *)" .br .ti -1c .RI "\fBapr_status_t\fP(* \fBhook_add\fP )(\fBapreq_handle_t\fP *, \fBapreq_hook_t\fP *)" .br .ti -1c .RI "\fBapr_status_t\fP(* \fBbrigade_limit_get\fP )(\fBapreq_handle_t\fP *, \fBapr_size_t\fP *)" .br .ti -1c .RI "\fBapr_status_t\fP(* \fBbrigade_limit_set\fP )(\fBapreq_handle_t\fP *, \fBapr_size_t\fP)" .br .ti -1c .RI "\fBapr_status_t\fP(* \fBread_limit_get\fP )(\fBapreq_handle_t\fP *, \fBapr_uint64_t\fP *)" .br .ti -1c .RI "\fBapr_status_t\fP(* \fBread_limit_set\fP )(\fBapreq_handle_t\fP *, \fBapr_uint64_t\fP)" .br .ti -1c .RI "\fBapr_status_t\fP(* \fBtemp_dir_get\fP )(\fBapreq_handle_t\fP *, const char **)" .br .ti -1c .RI "\fBapr_status_t\fP(* \fBtemp_dir_set\fP )(\fBapreq_handle_t\fP *, const char *)" .br .in -1c .SH "Detailed Description" .PP Vtable describing the necessary module functions. .SH "Field Documentation" .PP .SS "const char* \fBapreq_module_t::name\fP" .PP name of this apreq module .SS "\fBapr_uint32_t\fP \fBapreq_module_t::magic_number\fP" .PP magic number identifying the module and version .SS "\fBapr_status_t\fP(* \fBapreq_module_t::jar\fP)(\fBapreq_handle_t\fP *, const \fBapr_table_t\fP **)" .PP get a table with all cookies .SS "\fBapr_status_t\fP(* \fBapreq_module_t::args\fP)(\fBapreq_handle_t\fP *, const \fBapr_table_t\fP **)" .PP get a table with all query string parameters .SS "\fBapr_status_t\fP(* \fBapreq_module_t::body\fP)(\fBapreq_handle_t\fP *, const \fBapr_table_t\fP **)" .PP get a table with all body parameters .SS "\fBapreq_cookie_t\fP*(* \fBapreq_module_t::jar_get\fP)(\fBapreq_handle_t\fP *, const char *)" .PP get a cookie by its name .SS "\fBapreq_param_t\fP*(* \fBapreq_module_t::args_get\fP)(\fBapreq_handle_t\fP *, const char *)" .PP get a query string parameter by its name .SS "\fBapreq_param_t\fP*(* \fBapreq_module_t::body_get\fP)(\fBapreq_handle_t\fP *, const char *)" .PP get a body parameter by its name .SS "\fBapr_status_t\fP(* \fBapreq_module_t::parser_get\fP)(\fBapreq_handle_t\fP *, const \fBapreq_parser_t\fP **)" .PP gets the parser associated with the request body .SS "\fBapr_status_t\fP(* \fBapreq_module_t::parser_set\fP)(\fBapreq_handle_t\fP *, \fBapreq_parser_t\fP *)" .PP manually set a parser for the request body .SS "\fBapr_status_t\fP(* \fBapreq_module_t::hook_add\fP)(\fBapreq_handle_t\fP *, \fBapreq_hook_t\fP *)" .PP add a hook function .SS "\fBapr_status_t\fP(* \fBapreq_module_t::brigade_limit_get\fP)(\fBapreq_handle_t\fP *, \fBapr_size_t\fP *)" .PP determine the maximum in-memory bytes a brigade may use .SS "\fBapr_status_t\fP(* \fBapreq_module_t::brigade_limit_set\fP)(\fBapreq_handle_t\fP *, \fBapr_size_t\fP)" .PP set the maximum in-memory bytes a brigade may use .SS "\fBapr_status_t\fP(* \fBapreq_module_t::read_limit_get\fP)(\fBapreq_handle_t\fP *, \fBapr_uint64_t\fP *)" .PP determine the maximum amount of data that will be fed into a parser .SS "\fBapr_status_t\fP(* \fBapreq_module_t::read_limit_set\fP)(\fBapreq_handle_t\fP *, \fBapr_uint64_t\fP)" .PP set the maximum amount of data that will be fed into a parser .SS "\fBapr_status_t\fP(* \fBapreq_module_t::temp_dir_get\fP)(\fBapreq_handle_t\fP *, const char **)" .PP determine the directory used by the parser for temporary files .SS "\fBapr_status_t\fP(* \fBapreq_module_t::temp_dir_set\fP)(\fBapreq_handle_t\fP *, const char *)" .PP set the directory used by the parser for temporary files .SH "Author" .PP Generated automatically by Doxygen for libapreq2 from the source code. libapreq2-2.13/docs/man/man3/apreq_notice.30000644000076400017500000000036111473533324017415 0ustar issacissac.TH "apreq_notice" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME apreq_notice \- NOTICE .PP .nf This product includes software developed by The Apache Software Foundation (http://www.apache.org/). .fi .PP libapreq2-2.13/docs/man/man3/apreq_param.h.30000644000076400017500000001666611473533324017501 0ustar issacissac.TH "include/apreq_param.h" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME include/apreq_param.h \- Request parsing and parameter API. .SH SYNOPSIS .br .PP \fC#include 'apreq.h'\fP .br \fC#include 'apr_buckets.h'\fP .br .SS "Data Structures" .in +1c .ti -1c .RI "struct \fBapreq_param_t\fP" .br .in -1c .SS "Functions" .in +1c .ti -1c .RI "static APR_INLINE unsigned \fBapreq_param_is_tainted\fP (const \fBapreq_param_t\fP *p)" .br .ti -1c .RI "static APR_INLINE void \fBapreq_param_tainted_on\fP (\fBapreq_param_t\fP *p)" .br .ti -1c .RI "static APR_INLINE void \fBapreq_param_tainted_off\fP (\fBapreq_param_t\fP *p)" .br .ti -1c .RI "static APR_INLINE \fBapreq_charset_t\fP \fBapreq_param_charset_set\fP (\fBapreq_param_t\fP *p, \fBapreq_charset_t\fP c)" .br .ti -1c .RI "static APR_INLINE \fBapreq_charset_t\fP \fBapreq_param_charset_get\fP (\fBapreq_param_t\fP *p)" .br .ti -1c .RI "static APR_INLINE \fBapreq_param_t\fP * \fBapreq_value_to_param\fP (const char *val)" .br .ti -1c .RI "\fBapreq_param_t\fP * \fBapreq_param_make\fP (\fBapr_pool_t\fP *p, const char *name, const \fBapr_size_t\fP nlen, const char *val, const \fBapr_size_t\fP vlen)" .br .ti -1c .RI "\fBapr_status_t\fP \fBapreq_param_decode\fP (\fBapreq_param_t\fP **param, \fBapr_pool_t\fP *pool, const char *word, \fBapr_size_t\fP nlen, \fBapr_size_t\fP vlen)" .br .ti -1c .RI "char * \fBapreq_param_encode\fP (\fBapr_pool_t\fP *pool, const \fBapreq_param_t\fP *param)" .br .ti -1c .RI "\fBapr_status_t\fP \fBapreq_parse_query_string\fP (\fBapr_pool_t\fP *pool, \fBapr_table_t\fP *t, const char *qs)" .br .ti -1c .RI "\fBapr_array_header_t\fP * \fBapreq_params_as_array\fP (\fBapr_pool_t\fP *p, const \fBapr_table_t\fP *t, const char *key)" .br .ti -1c .RI "const char * \fBapreq_params_as_string\fP (\fBapr_pool_t\fP *p, const \fBapr_table_t\fP *t, const char *key, \fBapreq_join_t\fP mode)" .br .ti -1c .RI "const \fBapr_table_t\fP * \fBapreq_uploads\fP (const \fBapr_table_t\fP *body, \fBapr_pool_t\fP *pool)" .br .ti -1c .RI "const \fBapreq_param_t\fP * \fBapreq_upload\fP (const \fBapr_table_t\fP *body, const char *name)" .br .in -1c .SH "Detailed Description" .PP Request parsing and parameter API. .SH "Function Documentation" .PP .SS "static APR_INLINE \fBapreq_charset_t\fP apreq_param_charset_get (\fBapreq_param_t\fP * p)\fC [static]\fP" .PP Gets the character encoding for this parameter. .SS "static APR_INLINE \fBapreq_charset_t\fP apreq_param_charset_set (\fBapreq_param_t\fP * p, \fBapreq_charset_t\fP c)\fC [static]\fP" .PP Sets the character encoding for this parameter. .SS "\fBapr_status_t\fP apreq_param_decode (\fBapreq_param_t\fP ** param, \fBapr_pool_t\fP * pool, const char * word, \fBapr_size_t\fP nlen, \fBapr_size_t\fP vlen)" .PP Url-decodes a name=value pair into a param. .PP \fBParameters:\fP .RS 4 \fIparam\fP points to the decoded parameter on success .br \fIpool\fP Pool from which the param is allocated. .br \fIword\fP Start of the name=value pair. .br \fInlen\fP Length of urlencoded name. .br \fIvlen\fP Length of urlencoded value. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS on success. .PP \fBAPREQ_ERROR_BADSEQ\fP or \fBAPREQ_ERROR_BADCHAR\fP on malformed input. .RE .PP \fBRemarks:\fP .RS 4 Unless vlen == 0, this function assumes there is exactly one character ('=') which separates the pair. .RE .PP .SS "char* apreq_param_encode (\fBapr_pool_t\fP * pool, const \fBapreq_param_t\fP * param)" .PP Url-encodes the param into a name-value pair. .PP \fBParameters:\fP .RS 4 \fIpool\fP Pool which allocates the returned string. .br \fIparam\fP Param to encode. .RE .PP \fBReturns:\fP .RS 4 name-value pair representing the param. .RE .PP .SS "static APR_INLINE unsigned apreq_param_is_tainted (const \fBapreq_param_t\fP * p)\fC [static]\fP" .PP \fBReturns:\fP .RS 4 1 if the taint flag is set, 0 otherwise. .RE .PP .SS "\fBapreq_param_t\fP* apreq_param_make (\fBapr_pool_t\fP * p, const char * name, const \fBapr_size_t\fP nlen, const char * val, const \fBapr_size_t\fP vlen)" .PP creates a param from name/value information .SS "static APR_INLINE void apreq_param_tainted_off (\fBapreq_param_t\fP * p)\fC [static]\fP" .PP Turns off the taint flag. .SS "static APR_INLINE void apreq_param_tainted_on (\fBapreq_param_t\fP * p)\fC [static]\fP" .PP Sets the tainted flag. .SS "\fBapr_array_header_t\fP* apreq_params_as_array (\fBapr_pool_t\fP * p, const \fBapr_table_t\fP * t, const char * key)" .PP Returns an array of parameters (\fBapreq_param_t\fP *) matching the given key. The key is case-insensitive. .PP \fBParameters:\fP .RS 4 \fIp\fP Allocates the returned array. .br \fIt\fP the parameter table returned by \fBapreq_args()\fP, \fBapreq_body()\fP or \fBapreq_params()\fP .br \fIkey\fP Null-terminated search key, case insensitive. key==NULL fetches all parameters. .RE .PP \fBReturns:\fP .RS 4 an array of apreq_param_t* (pointers) .RE .PP \fBRemarks:\fP .RS 4 Also parses the request if necessary. .RE .PP .SS "const char* apreq_params_as_string (\fBapr_pool_t\fP * p, const \fBapr_table_t\fP * t, const char * key, \fBapreq_join_t\fP mode)" .PP Returns a ', ' -joined string containing all parameters for the requested key, an empty string if none are found. The key is case-insensitive. .PP \fBParameters:\fP .RS 4 \fIp\fP Allocates the return string. .br \fIt\fP the parameter table returned by \fBapreq_args()\fP, \fBapreq_body()\fP or \fBapreq_params()\fP .br \fIkey\fP Null-terminated parameter name, case insensitive. key==NULL fetches all values. .br \fImode\fP Join type- see \fBapreq_join()\fP. .RE .PP \fBReturns:\fP .RS 4 the joined string or NULL on error .RE .PP \fBRemarks:\fP .RS 4 Also parses the request if necessary. .RE .PP .SS "\fBapr_status_t\fP apreq_parse_query_string (\fBapr_pool_t\fP * pool, \fBapr_table_t\fP * t, const char * qs)" .PP Parse a url-encoded string into a param table. .PP \fBParameters:\fP .RS 4 \fIpool\fP pool used to allocate the param data. .br \fIt\fP table to which the params are added. .br \fIqs\fP Query string to url-decode. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS if successful, error otherwise. .RE .PP \fBRemarks:\fP .RS 4 This function uses [&;] as the set of tokens to delineate words, and will treat a word w/o '=' as a name-value pair with value-length = 0. .RE .PP .SS "const \fBapreq_param_t\fP* apreq_upload (const \fBapr_table_t\fP * body, const char * name)" .PP Returns the first param in req->body which has both param->v.name matching key (case insensitive) and param->upload != NULL. .PP \fBParameters:\fP .RS 4 \fIbody\fP parameter table returned by \fBapreq_body()\fP or \fBapreq_params()\fP .br \fIname\fP Parameter name. key == NULL returns first upload. .RE .PP \fBReturns:\fP .RS 4 Corresponding upload, NULL if none found. .RE .PP \fBRemarks:\fP .RS 4 Will parse the request as necessary. .RE .PP .SS "const \fBapr_table_t\fP* apreq_uploads (const \fBapr_table_t\fP * body, \fBapr_pool_t\fP * pool)" .PP Returns a table of all params in req->body with non-NULL upload brigades. .PP \fBParameters:\fP .RS 4 \fIbody\fP parameter table returned by \fBapreq_body()\fP or \fBapreq_params()\fP .br \fIpool\fP Pool which allocates the table struct. .RE .PP \fBReturns:\fP .RS 4 Upload table. .RE .PP \fBRemarks:\fP .RS 4 Will parse the request if necessary. .RE .PP .SS "static APR_INLINE \fBapreq_param_t\fP* apreq_value_to_param (const char * val)\fC [static]\fP" .PP Upgrades args and body table values to \fBapreq_param_t\fP structs. .SH "Author" .PP Generated automatically by Doxygen for libapreq2 from the source code. libapreq2-2.13/docs/man/man3/apreq_param_t.30000644000076400017500000000172411473533324017563 0ustar issacissac.TH "apreq_param_t" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME apreq_param_t \- .SH SYNOPSIS .br .PP \fC#include \fP .PP .SS "Data Fields" .in +1c .ti -1c .RI "\fBapr_table_t\fP * \fBinfo\fP" .br .ti -1c .RI "\fBapr_bucket_brigade\fP * \fBupload\fP" .br .ti -1c .RI "unsigned \fBflags\fP" .br .ti -1c .RI "const \fBapreq_value_t\fP \fBv\fP" .br .in -1c .SH "Detailed Description" .PP Common data structure for params and file uploads .SH "Field Documentation" .PP .SS "\fBapr_table_t\fP* \fBapreq_param_t::info\fP" .PP header table associated with the param .SS "\fBapr_bucket_brigade\fP* \fBapreq_param_t::upload\fP" .PP brigade used to spool upload files .SS "unsigned \fBapreq_param_t::flags\fP" .PP charsets, taint marks, app-specific bits .SS "const \fBapreq_value_t\fP \fBapreq_param_t::v\fP" .PP underlying name/value info .SH "Author" .PP Generated automatically by Doxygen for libapreq2 from the source code. libapreq2-2.13/docs/man/man3/apreq_parser.h.30000644000076400017500000002360611473533324017665 0ustar issacissac.TH "include/apreq_parser.h" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME include/apreq_parser.h \- Request body parser API. .SH SYNOPSIS .br .PP \fC#include 'apreq_param.h'\fP .br .SS "Data Structures" .in +1c .ti -1c .RI "struct \fBapreq_hook_t\fP" .br .ti -1c .RI "struct \fBapreq_parser_t\fP" .br .ti -1c .RI "struct \fBapreq_hook_find_param_ctx_t\fP" .br .in -1c .SS "Defines" .in +1c .ti -1c .RI "#define \fBAPREQ_PARSER_ARGS\fP" .br .ti -1c .RI "#define \fBAPREQ_HOOK_ARGS\fP" .br .ti -1c .RI "#define \fBAPREQ_DECLARE_PARSER\fP(f)" .br .ti -1c .RI "#define \fBAPREQ_DECLARE_HOOK\fP(f)" .br .in -1c .SS "Typedefs" .in +1c .ti -1c .RI "typedef struct \fBapreq_hook_t\fP \fBapreq_hook_t\fP" .br .ti -1c .RI "typedef struct \fBapreq_parser_t\fP \fBapreq_parser_t\fP" .br .ti -1c .RI "typedef \fBapr_status_t\fP(* \fBapreq_parser_function_t\fP )(APREQ_PARSER_ARGS)" .br .ti -1c .RI "typedef \fBapr_status_t\fP(* \fBapreq_hook_function_t\fP )(APREQ_HOOK_ARGS)" .br .in -1c .SS "Functions" .in +1c .ti -1c .RI "static APR_INLINE \fBapr_status_t\fP \fBapreq_parser_run\fP (struct \fBapreq_parser_t\fP *psr, \fBapr_table_t\fP *t, \fBapr_bucket_brigade\fP *bb)" .br .ti -1c .RI "static APR_INLINE \fBapr_status_t\fP \fBapreq_hook_run\fP (struct \fBapreq_hook_t\fP *h, \fBapreq_param_t\fP *param, \fBapr_bucket_brigade\fP *bb)" .br .ti -1c .RI "\fBAPREQ_DECLARE_PARSER\fP (apreq_parse_headers)" .br .ti -1c .RI "\fBAPREQ_DECLARE_PARSER\fP (apreq_parse_urlencoded)" .br .ti -1c .RI "\fBAPREQ_DECLARE_PARSER\fP (apreq_parse_multipart)" .br .ti -1c .RI "\fBAPREQ_DECLARE_PARSER\fP (apreq_parse_generic)" .br .ti -1c .RI "\fBAPREQ_DECLARE_HOOK\fP (apreq_hook_apr_xml_parser)" .br .ti -1c .RI "\fBapreq_parser_t\fP * \fBapreq_parser_make\fP (\fBapr_pool_t\fP *pool, \fBapr_bucket_alloc_t\fP *ba, const char *content_type, \fBapreq_parser_function_t\fP pfn, \fBapr_size_t\fP brigade_limit, const char *temp_dir, \fBapreq_hook_t\fP *hook, void *ctx)" .br .ti -1c .RI "\fBapreq_hook_t\fP * \fBapreq_hook_make\fP (\fBapr_pool_t\fP *pool, \fBapreq_hook_function_t\fP hook, \fBapreq_hook_t\fP *next, void *ctx)" .br .ti -1c .RI "\fBapr_status_t\fP \fBapreq_parser_add_hook\fP (\fBapreq_parser_t\fP *p, \fBapreq_hook_t\fP *h)" .br .ti -1c .RI "\fBapreq_parser_function_t\fP \fBapreq_parser\fP (const char *enctype)" .br .ti -1c .RI "\fBapr_status_t\fP \fBapreq_register_parser\fP (const char *enctype, \fBapreq_parser_function_t\fP pfn)" .br .ti -1c .RI "\fBAPREQ_DECLARE_HOOK\fP (apreq_hook_disable_uploads)" .br .ti -1c .RI "\fBAPREQ_DECLARE_HOOK\fP (apreq_hook_discard_brigade)" .br .ti -1c .RI "\fBAPREQ_DECLARE_HOOK\fP (apreq_hook_find_param)" .br .in -1c .SH "Detailed Description" .PP Request body parser API. .SH "Define Documentation" .PP .SS "#define APREQ_DECLARE_HOOK(f)" .PP \fBValue:\fP .PP .nf APREQ_DECLARE_NONSTD(apr_status_t) \ (f) (APREQ_HOOK_ARGS) .fi Declares an API hook. .SS "#define APREQ_DECLARE_PARSER(f)" .PP \fBValue:\fP .PP .nf APREQ_DECLARE_NONSTD(apr_status_t) \ (f) (APREQ_PARSER_ARGS) .fi Declares a API parser. .SS "#define APREQ_HOOK_ARGS" .PP \fBValue:\fP .PP .nf apreq_hook_t *hook, \ apreq_param_t *param, \ apr_bucket_brigade *bb .fi Hook arguments .SS "#define APREQ_PARSER_ARGS" .PP \fBValue:\fP .PP .nf apreq_parser_t *parser, \ apr_table_t *t, \ apr_bucket_brigade *bb .fi Parser arguments. .SH "Typedef Documentation" .PP .SS "typedef \fBapr_status_t\fP(* \fBapreq_hook_function_t\fP)(APREQ_HOOK_ARGS)" .PP The callback function of a hook. See \fBapreq_hook_t\fP. .SS "typedef struct \fBapreq_hook_t\fP \fBapreq_hook_t\fP" .PP A hook is called by the parser whenever data arrives in a file upload parameter of the request body. You may associate any number of hooks with a parser instance with \fBapreq_parser_add_hook()\fP. .SS "typedef \fBapr_status_t\fP(* \fBapreq_parser_function_t\fP)(APREQ_PARSER_ARGS)" .PP The callback function implementing a request body parser. .SS "typedef struct \fBapreq_parser_t\fP \fBapreq_parser_t\fP" .PP A request body parser instance. .SH "Function Documentation" .PP .SS "APREQ_DECLARE_HOOK (apreq_hook_find_param)" .PP Special purpose utility for locating a parameter during parsing. The hook's ctx shoud be initialized to an \fBapreq_hook_find_param_ctx_t\fP *, with the name attribute set to the sought parameter name, the param attribute set to NULL, and the prev attribute set to the address of the previous hook. The param attribute will be reassigned to the first param found, and once that happens this hook is immediately removed from the chain. .PP \fBRemarks:\fP .RS 4 When used, this should always be the first hook invoked, so add it manually with ctx->prev = &parser->hook instead of using apreq_parser_add_hook. .RE .PP .SS "APREQ_DECLARE_HOOK (apreq_hook_discard_brigade)" .PP Calls apr_brigade_cleanup on the incoming brigade after passing the brigade to any subsequent hooks. .SS "APREQ_DECLARE_HOOK (apreq_hook_disable_uploads)" .PP Returns APREQ_ERROR_GENERAL. Effectively disables mfd parser if a file-upload field is present. .SS "APREQ_DECLARE_HOOK (apreq_hook_apr_xml_parser)" .PP apr_xml_parser hook. It will parse until EOS appears. The parsed document isn't available until parsing has completed successfully. The hook's ctx pointer may be cast as (\fBapr_xml_doc\fP **) to retrieve the parsed document. .SS "APREQ_DECLARE_PARSER (apreq_parse_generic)" .PP Generic parser. No table entries will be added to the req->body table by this parser. The parser creates a dummy \fBapreq_param_t\fP to pass to any configured hooks. If no hooks are configured, the dummy param's bb slot will contain a copy of the request body. It can be retrieved by casting the parser's ctx pointer to (\fBapreq_param_t\fP **). .SS "APREQ_DECLARE_PARSER (apreq_parse_multipart)" .PP RFC 2388 multipart/form-data (and XForms 1.0 multipart/related) parser. It will reject any buckets representing preamble and postamble text (this is normal behavior, not an error condition). See \fBapreq_parser_run()\fP for more info on rejected data. .SS "APREQ_DECLARE_PARSER (apreq_parse_urlencoded)" .PP RFC 2396 application/x-www-form-urlencoded parser. .SS "APREQ_DECLARE_PARSER (apreq_parse_headers)" .PP RFC 822 Header parser. It will reject all data after the first CRLF CRLF sequence (an empty line). See \fBapreq_parser_run()\fP for more info on rejected data. .SS "\fBapreq_hook_t\fP* apreq_hook_make (\fBapr_pool_t\fP * pool, \fBapreq_hook_function_t\fP hook, \fBapreq_hook_t\fP * next, void * ctx)" .PP Construct a hook. .PP \fBParameters:\fP .RS 4 \fIpool\fP used to allocate the hook. .br \fIhook\fP The hook function. .br \fInext\fP List of other hooks for this hook to call on. .br \fIctx\fP Hook's internal scratch pad. .RE .PP \fBReturns:\fP .RS 4 New hook. .RE .PP .SS "static APR_INLINE \fBapr_status_t\fP apreq_hook_run (struct \fBapreq_hook_t\fP * h, \fBapreq_param_t\fP * param, \fBapr_bucket_brigade\fP * bb)\fC [static]\fP" .PP Run the hook with the current parameter and the incoming bucket brigade. The hook may modify the brigade if necessary. Once all hooks have completed, the contents of the brigade will be added to the parameter's bb attribute. .PP \fBReturns:\fP .RS 4 APR_SUCCESS on success. All other values represent errors. .RE .PP .SS "\fBapreq_parser_function_t\fP apreq_parser (const char * enctype)" .PP Fetch the default parser function associated with the given MIME type. .PP \fBParameters:\fP .RS 4 \fIenctype\fP The desired enctype (can also be a full 'Content-Type' header). .RE .PP \fBReturns:\fP .RS 4 The parser function, or NULL if the enctype is unrecognized. .RE .PP .SS "\fBapr_status_t\fP apreq_parser_add_hook (\fBapreq_parser_t\fP * p, \fBapreq_hook_t\fP * h)" .PP Add a new hook to the end of the parser's hook list. .PP \fBParameters:\fP .RS 4 \fIp\fP Parser. .br \fIh\fP Hook to append. .RE .PP .SS "\fBapreq_parser_t\fP* apreq_parser_make (\fBapr_pool_t\fP * pool, \fBapr_bucket_alloc_t\fP * ba, const char * content_type, \fBapreq_parser_function_t\fP pfn, \fBapr_size_t\fP brigade_limit, const char * temp_dir, \fBapreq_hook_t\fP * hook, void * ctx)" .PP Construct a parser. .PP \fBParameters:\fP .RS 4 \fIpool\fP Pool used to allocate the parser. .br \fIba\fP bucket allocator used to create bucket brigades .br \fIcontent_type\fP Content-type that this parser can deal with. .br \fIpfn\fP The parser function. .br \fIbrigade_limit\fP the maximum in-memory bytes a brigade may use .br \fItemp_dir\fP the directory used by the parser for temporary files .br \fIhook\fP Hooks to associate this parser with. .br \fIctx\fP Parser's internal scratch pad. .RE .PP \fBReturns:\fP .RS 4 New parser. .RE .PP .SS "static APR_INLINE \fBapr_status_t\fP apreq_parser_run (struct \fBapreq_parser_t\fP * psr, \fBapr_table_t\fP * t, \fBapr_bucket_brigade\fP * bb)\fC [static]\fP" .PP Parse the incoming brigade into a table. Parsers normally consume all the buckets of the brigade during parsing. However parsers may leave 'rejected' data in the brigade, even during a successful parse, so callers may need to clean up the brigade themselves (in particular, rejected buckets should not be passed back to the parser again). .PP \fBRemarks:\fP .RS 4 bb == NULL is valid: the parser should return its public status: APR_INCOMPLETE, APR_SUCCESS, or an error code. .RE .PP .SS "\fBapr_status_t\fP apreq_register_parser (const char * enctype, \fBapreq_parser_function_t\fP pfn)" .PP Register a new parsing function with a MIME enctype. Registered parsers are added to \fBapreq_parser()\fP's internal lookup table. .PP \fBParameters:\fP .RS 4 \fIenctype\fP The MIME type. .br \fIpfn\fP The function to use during parsing. Setting parser == NULL will remove an existing parser. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS or error. .RE .PP .SH "Author" .PP Generated automatically by Doxygen for libapreq2 from the source code. libapreq2-2.13/docs/man/man3/apreq_parser_t.30000644000076400017500000000311411473533324017752 0ustar issacissac.TH "apreq_parser_t" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME apreq_parser_t \- .SH SYNOPSIS .br .PP \fC#include \fP .PP .SS "Data Fields" .in +1c .ti -1c .RI "\fBapreq_parser_function_t\fP \fBparser\fP" .br .ti -1c .RI "const char * \fBcontent_type\fP" .br .ti -1c .RI "\fBapr_pool_t\fP * \fBpool\fP" .br .ti -1c .RI "\fBapr_bucket_alloc_t\fP * \fBbucket_alloc\fP" .br .ti -1c .RI "\fBapr_size_t\fP \fBbrigade_limit\fP" .br .ti -1c .RI "const char * \fBtemp_dir\fP" .br .ti -1c .RI "\fBapreq_hook_t\fP * \fBhook\fP" .br .ti -1c .RI "void * \fBctx\fP" .br .in -1c .SH "Detailed Description" .PP A request body parser instance. .SH "Field Documentation" .PP .SS "\fBapreq_parser_function_t\fP \fBapreq_parser_t::parser\fP" .PP the function which parses chunks of body data .SS "const char* \fBapreq_parser_t::content_type\fP" .PP the Content-Type request header .SS "\fBapr_pool_t\fP* \fBapreq_parser_t::pool\fP" .PP a pool which outlasts the bucket_alloc. .SS "\fBapr_bucket_alloc_t\fP* \fBapreq_parser_t::bucket_alloc\fP" .PP bucket allocator used to create bucket brigades .SS "\fBapr_size_t\fP \fBapreq_parser_t::brigade_limit\fP" .PP the maximum in-memory bytes a brigade may use .SS "const char* \fBapreq_parser_t::temp_dir\fP" .PP the directory for generating temporary files .SS "\fBapreq_hook_t\fP* \fBapreq_parser_t::hook\fP" .PP linked list of hooks .SS "void* \fBapreq_parser_t::ctx\fP" .PP internal context pointer used by the parser function .SH "Author" .PP Generated automatically by Doxygen for libapreq2 from the source code. libapreq2-2.13/docs/man/man3/apreq_status.30000644000076400017500000000664511473533324017472 0ustar issacissac.TH "apreq_status" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME apreq_status \- STATUS 2.13 Released on December 3, 2010 .PP Contributors looking for a mission: .PP .IP "\(bu" 2 just do an egrep on 'TODO' or 'XXX' and see what's there .PP .PP CURRENT RELEASE NOTES: .PP RELEASE SHOWSTOPPERS: .PP CURRENT VOTES: .PP .IP "\(bu" 2 Should we switch to EU::MM for determining the full path to perl? The problem is that some folks move their perl binary post-installation, but never adjust Config.pm. EU::MM is smart, by accepting a full path in $^X or by searching the user's $PATH for $^X, before resorting to Config.pm. However, if we change apreq2, we should also lobby test-dev to adopt the same solution for Apache::Test. Otherwise our test suite will likely fail, even though the rest of the perl build system will presumably still work. .PP .PP +1: joes 0: -1: .PP .IP "\(bu" 2 Drop ExtUtils::XSBuilder as the C API is fairly stable now. The header parsing + xs generation stuff may be too difficult for the community to maintain over ordinary .xs files. .PP .PP +1: pgollucci .PP TODO: .PP .IP "\(bu" 2 Get -libmodperl to work like it does in mod_perl land. .PP .PP .IP "\(bu" 2 Get static builds working again. .PP .PP .IP "\(bu" 2 Implement (some of) RFC 2184 in the multipart parser. .PP .PP .IP "\(bu" 2 Dump automake, preferably replacing that with more stuff from httpd/apr's build system. .PP .PP .IP "\(bu" 2 Move module/t to module/apache2/t. .PP .PP .IP "\(bu" 2 Figure out how and where the apreq_xs_ headers, and typemap file, should be installed. .PP .PP .IP "\(bu" 2 Write tests for the apache 1.3.x module. .PP .PP .IP "\(bu" 2 Fix the broken make dependencies, especially in the module and glue subdirs. The libtool workaround (for OSX IIRC) that copies module/.libs to module/t is especially bogus. .PP .PP .IP "\(bu" 2 Round out the unit tests in library/t. Ideally each API function should have its own tests, and each possible error status should be both tested & documented. Also upgrade these tests to use the Apache::Test framework. .PP .PP .IP "\(bu" 2 in glue/perl/t/apreq/cgi.t on Win32, printing to the error log hangs if the strings involved are about 10000 in size. This doesn't occur in the env/cgi tests - why? .PP .PP .IP "\(bu" 2 Why must fprintf(stderr, ...), rather than apr_file_printf(err, ...), be used on Win32 in cgi_log() of src/apreq_env.c? .PP .PP .IP "\(bu" 2 Get env/ (Apache::Test) tests to work for --with-apache2-src option. Also add a test to configure that prevents simultaneous use of --with-apache2-src and --with-apache2-apxs. .PP .PP .IP "\(bu" 2 symbol exports files: .IP " 1." 6 aix needs .exp files .PP .PP .PP .IP "\(bu" 2 Install the html dox during 'make install'. Should we do this for the doxy manpages also? .PP .PP .IP "\(bu" 2 Rework glue/perl build system to use apreq2-config instead of relying on paths like '../../src'. .PP .PP OPEN ISSUES: .PP .IP "\(bu" 2 Should we bundle an apr-based 'application/xml' parser? If so, how should we parse the xml data into an apr_table? .PP .PP BUGS: .PP .IP "\(bu" 2 Fix build automake/libtool/autoconf build system so it works properly on OSX & AIX. .PP .PP WISH LIST: .PP .IP "\(bu" 2 I [joes] wish folks would contribute some glue code for one of these: .PP .PP .IP "\(bu" 2 php, .IP "\(bu" 2 Rivet, .IP "\(bu" 2 mod_dtcl, .IP "\(bu" 2 mod_python, .IP "\(bu" 2 mod_jk, .IP "\(bu" 2 tomcat, .IP "\(bu" 2 mod_ruby, .IP "\(bu" 2 mod_parrot. .PP libapreq2-2.13/docs/man/man3/apreq_util.h.30000644000076400017500000003523511473533324017347 0ustar issacissac.TH "include/apreq_util.h" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME include/apreq_util.h \- Utility functions for apreq. .SH SYNOPSIS .br .PP \fC#include 'apr_file_io.h'\fP .br \fC#include 'apr_buckets.h'\fP .br \fC#include 'apreq.h'\fP .br .SS "Functions" .in +1c .ti -1c .RI "char * \fBapreq_join\fP (\fBapr_pool_t\fP *p, const char *sep, const \fBapr_array_header_t\fP *arr, \fBapreq_join_t\fP mode)" .br .ti -1c .RI "\fBapr_ssize_t\fP \fBapreq_index\fP (const char *hay, \fBapr_size_t\fP hlen, const char *ndl, \fBapr_size_t\fP nlen, const \fBapreq_match_t\fP type)" .br .ti -1c .RI "\fBapr_size_t\fP \fBapreq_quote\fP (char *dest, const char *src, const \fBapr_size_t\fP slen)" .br .ti -1c .RI "\fBapr_size_t\fP \fBapreq_quote_once\fP (char *dest, const char *src, const \fBapr_size_t\fP slen)" .br .ti -1c .RI "\fBapr_size_t\fP \fBapreq_encode\fP (char *dest, const char *src, const \fBapr_size_t\fP slen)" .br .ti -1c .RI "\fBapr_size_t\fP \fBapreq_cp1252_to_utf8\fP (char *dest, const char *src, \fBapr_size_t\fP slen)" .br .ti -1c .RI "\fBapreq_charset_t\fP \fBapreq_charset_divine\fP (const char *src, \fBapr_size_t\fP slen)" .br .ti -1c .RI "\fBapr_status_t\fP \fBapreq_decode\fP (char *dest, \fBapr_size_t\fP *dlen, const char *src, \fBapr_size_t\fP slen)" .br .ti -1c .RI "\fBapr_status_t\fP \fBapreq_decodev\fP (char *dest, \fBapr_size_t\fP *dlen, struct iovec *v, int nelts)" .br .ti -1c .RI "static APR_INLINE char * \fBapreq_escape\fP (\fBapr_pool_t\fP *p, const char *src, const \fBapr_size_t\fP slen)" .br .ti -1c .RI "static APR_INLINE \fBapr_ssize_t\fP \fBapreq_unescape\fP (char *str)" .br .ti -1c .RI "\fBapr_int64_t\fP \fBapreq_atoi64f\fP (const char *s)" .br .ti -1c .RI "\fBapr_int64_t\fP \fBapreq_atoi64t\fP (const char *s)" .br .ti -1c .RI "\fBapr_status_t\fP \fBapreq_brigade_fwrite\fP (\fBapr_file_t\fP *f, \fBapr_off_t\fP *wlen, \fBapr_bucket_brigade\fP *bb)" .br .ti -1c .RI "\fBapr_status_t\fP \fBapreq_file_mktemp\fP (\fBapr_file_t\fP **fp, \fBapr_pool_t\fP *pool, const char *path)" .br .ti -1c .RI "static APR_INLINE \fBapr_status_t\fP \fBapreq_brigade_setaside\fP (\fBapr_bucket_brigade\fP *bb, \fBapr_pool_t\fP *p)" .br .ti -1c .RI "static APR_INLINE \fBapr_status_t\fP \fBapreq_brigade_copy\fP (\fBapr_bucket_brigade\fP *d, \fBapr_bucket_brigade\fP *s)" .br .ti -1c .RI "static APR_INLINE void \fBapreq_brigade_move\fP (\fBapr_bucket_brigade\fP *d, \fBapr_bucket_brigade\fP *s, \fBapr_bucket\fP *e)" .br .ti -1c .RI "\fBapr_status_t\fP \fBapreq_header_attribute\fP (const char *hdr, const char *name, const \fBapr_size_t\fP nlen, const char **val, \fBapr_size_t\fP *vlen)" .br .ti -1c .RI "\fBapr_status_t\fP \fBapreq_brigade_concat\fP (\fBapr_pool_t\fP *pool, const char *temp_dir, \fBapr_size_t\fP brigade_limit, \fBapr_bucket_brigade\fP *out, \fBapr_bucket_brigade\fP *in)" .br .ti -1c .RI "\fBapr_file_t\fP * \fBapreq_brigade_spoolfile\fP (\fBapr_bucket_brigade\fP *bb)" .br .in -1c .SH "Detailed Description" .PP Utility functions for apreq. This header contains useful functions for creating new parsers, hooks or modules. It includes .PP .IP "\(bu" 2 string <-> array converters .IP "\(bu" 2 substring search functions .IP "\(bu" 2 simple encoders & decoders for urlencoded strings .IP "\(bu" 2 simple time, date, & file-size converters .PP .SH "Function Documentation" .PP .SS "\fBapr_int64_t\fP apreq_atoi64f (const char * s)" .PP Converts file sizes (KMG) to bytes .PP \fBParameters:\fP .RS 4 \fIs\fP file size matching m/^\\d+[KMG]b?$/i .RE .PP \fBReturns:\fP .RS 4 64-bit integer representation of s. .RE .PP \fBTodo\fP .RS 4 What happens when s is malformed? Should this return an unsigned value instead? .RE .PP .SS "\fBapr_int64_t\fP apreq_atoi64t (const char * s)" .PP Converts time strings (YMDhms) to seconds .PP \fBParameters:\fP .RS 4 \fIs\fP time string matching m/^\\+?\\d+[YMDhms]$/ .RE .PP \fBReturns:\fP .RS 4 64-bit integer representation of s as seconds. .RE .PP \fBTodo\fP .RS 4 What happens when s is malformed? Should this return an unsigned value instead? .RE .PP .SS "\fBapr_status_t\fP apreq_brigade_concat (\fBapr_pool_t\fP * pool, const char * temp_dir, \fBapr_size_t\fP brigade_limit, \fBapr_bucket_brigade\fP * out, \fBapr_bucket_brigade\fP * in)" .PP Concatenates the brigades, spooling large brigades into a tempfile (APREQ_SPOOL) bucket. .PP \fBParameters:\fP .RS 4 \fIpool\fP Pool for creating a tempfile bucket. .br \fItemp_dir\fP Directory for tempfile creation. .br \fIbrigade_limit\fP If out's length would exceed this value, the appended buckets get written to a tempfile. .br \fIout\fP Resulting brigade. .br \fIin\fP Brigade to append. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS. .PP Error status code resulting from either \fBapr_brigade_length()\fP, \fBapreq_file_mktemp()\fP, \fBapreq_brigade_fwrite()\fP, or \fBapr_file_seek()\fP. .RE .PP \fBTodo\fP .RS 4 Flesh out these error codes, making them as explicit as possible. .RE .PP .SS "static APR_INLINE \fBapr_status_t\fP apreq_brigade_copy (\fBapr_bucket_brigade\fP * d, \fBapr_bucket_brigade\fP * s)\fC [static]\fP" .PP Copy a brigade. .PP \fBParameters:\fP .RS 4 \fId\fP (destination) Copied buckets are appended to this brigade. .br \fIs\fP (source) Brigade to copy from. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS. .PP Error status code from an unsuccessful apr_bucket_copy(). .RE .PP \fBRemarks:\fP .RS 4 s == d produces Undefined Behavior. .RE .PP .SS "\fBapr_status_t\fP apreq_brigade_fwrite (\fBapr_file_t\fP * f, \fBapr_off_t\fP * wlen, \fBapr_bucket_brigade\fP * bb)" .PP Writes brigade to a file. .PP \fBParameters:\fP .RS 4 \fIf\fP File that gets the brigade. .br \fIwlen\fP On a successful return, wlen holds the length of the brigade, which is the amount of data written to the file. .br \fIbb\fP Bucket brigade. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS. .PP Error status code from either an unsuccessful apr_bucket_read(), or a failed \fBapr_file_writev()\fP. .RE .PP \fBRemarks:\fP .RS 4 This function leaks a bucket brigade into bb->p whenever the final bucket in bb is a spool bucket. .RE .PP .SS "static APR_INLINE void apreq_brigade_move (\fBapr_bucket_brigade\fP * d, \fBapr_bucket_brigade\fP * s, \fBapr_bucket\fP * e)\fC [static]\fP" .PP Move the front of a brigade. .PP \fBParameters:\fP .RS 4 \fId\fP (destination) Append buckets to this brigade. .br \fIs\fP (source) Brigade to take buckets from. .br \fIe\fP First bucket of s after the move. All buckets before e are appended to d. .RE .PP \fBRemarks:\fP .RS 4 This moves all buckets when e == APR_BRIGADE_SENTINEL(s). .RE .PP .SS "static APR_INLINE \fBapr_status_t\fP apreq_brigade_setaside (\fBapr_bucket_brigade\fP * bb, \fBapr_pool_t\fP * p)\fC [static]\fP" .PP Set aside all buckets in the brigade. .PP \fBParameters:\fP .RS 4 \fIbb\fP Brigade. .br \fIp\fP Setaside buckets into this pool. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS. .PP Error status code from an unsuccessful apr_bucket_setaside(). .RE .PP .SS "\fBapr_file_t\fP* apreq_brigade_spoolfile (\fBapr_bucket_brigade\fP * bb)" .PP Determines the spool file used by the brigade. Returns NULL if the brigade is not spooled in a file (does not use an APREQ_SPOOL bucket). .PP \fBParameters:\fP .RS 4 \fIbb\fP the bucket brigade .RE .PP \fBReturns:\fP .RS 4 the spool file, or NULL. .RE .PP .SS "\fBapreq_charset_t\fP apreq_charset_divine (const char * src, \fBapr_size_t\fP slen)" .PP Heuristically determine the charset of a string. .PP \fBParameters:\fP .RS 4 \fIsrc\fP String to scan. .br \fIslen\fP Length of string. .RE .PP \fBReturns:\fP .RS 4 APREQ_CHARSET_ASCII if the string contains only 7-bit chars; .PP APREQ_CHARSET_UTF8 if the string is a valid utf8 byte sequence; .PP APREQ_CHARSET_LATIN1 if the string has no control chars; .PP APREQ_CHARSET_CP1252 if the string has control chars. .RE .PP .SS "\fBapr_size_t\fP apreq_cp1252_to_utf8 (char * dest, const char * src, \fBapr_size_t\fP slen)" .PP Convert a string from cp1252 to utf8. Caller must ensure it is large enough to hold the encoded string and trailing '\\0'. .PP \fBParameters:\fP .RS 4 \fIdest\fP Location of utf8-encoded result string. Caller must ensure it is large enough to hold the encoded string and trailing '\\0'. .br \fIsrc\fP Original string. .br \fIslen\fP Length of original string. .RE .PP \fBReturns:\fP .RS 4 length of utf8-encoded string in dest; does not exceed 3 * slen. .RE .PP .SS "\fBapr_status_t\fP apreq_decode (char * dest, \fBapr_size_t\fP * dlen, const char * src, \fBapr_size_t\fP slen)" .PP Url-decodes a string. .PP \fBParameters:\fP .RS 4 \fIdest\fP Location of url-encoded result string. Caller must ensure dest is large enough to hold the encoded string and trailing null character. .br \fIdlen\fP points to resultant length of url-decoded string in dest .br \fIsrc\fP Original string. .br \fIslen\fP Length of original string. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS. .PP APR_INCOMPLETE if the string ends in the middle of an escape sequence. .PP \fBAPREQ_ERROR_BADSEQ\fP or \fBAPREQ_ERROR_BADCHAR\fP on malformed input. .RE .PP \fBRemarks:\fP .RS 4 In the non-success case, dlen will be set to include the last succesfully decoded value. This function decodes %uXXXX into a utf8 (wide) character, following ECMA-262 (the Javascript spec) Section B.2.1. .RE .PP .SS "\fBapr_status_t\fP apreq_decodev (char * dest, \fBapr_size_t\fP * dlen, struct iovec * v, int nelts)" .PP Url-decodes an iovec array. .PP \fBParameters:\fP .RS 4 \fIdest\fP Location of url-encoded result string. Caller must ensure dest is large enough to hold the encoded string and trailing null character. .br \fIdlen\fP Resultant length of dest. .br \fIv\fP Array of iovecs that represent the source string .br \fInelts\fP Number of iovecs in the array. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS. .PP APR_INCOMPLETE if the iovec ends in the middle of an escape sequence. .PP \fBAPREQ_ERROR_BADSEQ\fP or \fBAPREQ_ERROR_BADCHAR\fP on malformed input. .RE .PP \fBRemarks:\fP .RS 4 In the non-APR_SUCCESS case, dlen will be set to include the last succesfully decoded value. This function decodes %uXXXX into a utf8 (wide) character, following ECMA-262 (the Javascript spec) Section B.2.1. .RE .PP .SS "\fBapr_size_t\fP apreq_encode (char * dest, const char * src, const \fBapr_size_t\fP slen)" .PP Url-encodes a string. .PP \fBParameters:\fP .RS 4 \fIdest\fP Location of url-encoded result string. Caller must ensure it is large enough to hold the encoded string and trailing '\\0'. .br \fIsrc\fP Original string. .br \fIslen\fP Length of original string. .RE .PP \fBReturns:\fP .RS 4 length of url-encoded string in dest; does not exceed 3 * slen. .RE .PP .SS "static APR_INLINE char* apreq_escape (\fBapr_pool_t\fP * p, const char * src, const \fBapr_size_t\fP slen)\fC [static]\fP" .PP Returns an url-encoded copy of a string. .PP \fBParameters:\fP .RS 4 \fIp\fP Pool used to allocate the return value. .br \fIsrc\fP Original string. .br \fIslen\fP Length of original string. .RE .PP \fBReturns:\fP .RS 4 The url-encoded string. .RE .PP \fBRemarks:\fP .RS 4 Use this function insead of apreq_encode if its caller might otherwise overflow dest. .RE .PP .SS "\fBapr_status_t\fP apreq_file_mktemp (\fBapr_file_t\fP ** fp, \fBapr_pool_t\fP * pool, const char * path)" .PP Makes a temporary file. .PP \fBParameters:\fP .RS 4 \fIfp\fP Points to the temporary apr_file_t on success. .br \fIpool\fP Pool to associate with the temp file. When the pool is destroyed, the temp file will be closed and deleted. .br \fIpath\fP The base directory which will contain the temp file. If param == NULL, the directory will be selected via tempnam(). See the tempnam manpage for details. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS. .PP Error status code from unsuccessful \fBapr_filepath_merge()\fP, or a failed \fBapr_file_mktemp()\fP. .RE .PP .SS "\fBapr_status_t\fP apreq_header_attribute (const char * hdr, const char * name, const \fBapr_size_t\fP nlen, const char ** val, \fBapr_size_t\fP * vlen)" .PP Search a header string for the value of a particular named attribute. .PP \fBParameters:\fP .RS 4 \fIhdr\fP Header string to scan. .br \fIname\fP Name of attribute to search for. .br \fInlen\fP Length of name. .br \fIval\fP Location of (first) matching value. .br \fIvlen\fP Length of matching value. .RE .PP \fBReturns:\fP .RS 4 APR_SUCCESS. .PP \fBAPREQ_ERROR_NOATTR\fP if the attribute is not found. .PP \fBAPREQ_ERROR_BADSEQ\fP if an unpaired quote mark was detected. .RE .PP .SS "\fBapr_ssize_t\fP apreq_index (const char * hay, \fBapr_size_t\fP hlen, const char * ndl, \fBapr_size_t\fP nlen, const \fBapreq_match_t\fP type)" .PP Returns offset of match string's location, or -1 if no match is found. .PP \fBParameters:\fP .RS 4 \fIhay\fP Location of bytes to scan. .br \fIhlen\fP Number of bytes available for scanning. .br \fIndl\fP Search string .br \fInlen\fP Length of search string. .br \fItype\fP Match type. .RE .PP \fBReturns:\fP .RS 4 Offset of match string, or -1 if no match is found. .RE .PP .SS "char* apreq_join (\fBapr_pool_t\fP * p, const char * sep, const \fBapr_array_header_t\fP * arr, \fBapreq_join_t\fP mode)" .PP Join an array of values. The result is an empty string if there are no values. .PP \fBParameters:\fP .RS 4 \fIp\fP Pool to allocate return value. .br \fIsep\fP String that is inserted between the joined values. .br \fIarr\fP Array of \fBapreq_value_t\fP entries. .br \fImode\fP Join type- see apreq_join_t. .RE .PP \fBReturns:\fP .RS 4 Joined string, or NULL on error .RE .PP .SS "\fBapr_size_t\fP apreq_quote (char * dest, const char * src, const \fBapr_size_t\fP slen)" .PP Places a quoted copy of src into dest. Embedded quotes are escaped with a backslash ('\\'). .PP \fBParameters:\fP .RS 4 \fIdest\fP Location of quoted copy. Must be large enough to hold the copy and trailing null byte. .br \fIsrc\fP Original string. .br \fIslen\fP Length of original string. .br \fIdest\fP Destination string. .RE .PP \fBReturns:\fP .RS 4 length of quoted copy in dest. .RE .PP .SS "\fBapr_size_t\fP apreq_quote_once (char * dest, const char * src, const \fBapr_size_t\fP slen)" .PP Same as \fBapreq_quote()\fP except when src begins and ends in quote marks. In that case it assumes src is quoted correctly, and just copies src to dest. .PP \fBParameters:\fP .RS 4 \fIdest\fP Location of quoted copy. Must be large enough to hold the copy and trailing null byte. .br \fIsrc\fP Original string. .br \fIslen\fP Length of original string. .br \fIdest\fP Destination string. .RE .PP \fBReturns:\fP .RS 4 length of quoted copy in dest. .RE .PP .SS "static APR_INLINE \fBapr_ssize_t\fP apreq_unescape (char * str)\fC [static]\fP" .PP An \fIin-situ\fP url-decoder. .PP \fBParameters:\fP .RS 4 \fIstr\fP The string to decode .RE .PP \fBReturns:\fP .RS 4 Length of decoded string, or < 0 on error. .RE .PP .SH "Author" .PP Generated automatically by Doxygen for libapreq2 from the source code. libapreq2-2.13/docs/man/man3/apreq_value_t.30000644000076400017500000000233611473533324017577 0ustar issacissac.TH "apreq_value_t" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME apreq_value_t \- libapreq's pre-extensible string type .PP .SH SYNOPSIS .br .PP \fC#include \fP .PP .SS "Data Fields" .in +1c .ti -1c .RI "char * \fBname\fP" .br .ti -1c .RI "\fBapr_size_t\fP \fBnlen\fP" .br .ti -1c .RI "\fBapr_size_t\fP \fBdlen\fP" .br .ti -1c .RI "char \fBdata\fP [1]" .br .in -1c .SH "Detailed Description" .PP libapreq's pre-extensible string type .PP \fBExamples: \fP .in +1c .PP \fB/home/issac/asf/svn/v2_13/include/apreq.h\fP. .SH "Field Documentation" .PP .SS "char* \fBapreq_value_t::name\fP" .PP value name .PP \fBExamples: \fP .in +1c \fB/home/issac/asf/svn/v2_13/include/apreq.h\fP. .SS "\fBapr_size_t\fP \fBapreq_value_t::nlen\fP" .PP length of name .PP \fBExamples: \fP .in +1c \fB/home/issac/asf/svn/v2_13/include/apreq.h\fP. .SS "\fBapr_size_t\fP \fBapreq_value_t::dlen\fP" .PP length of data .PP \fBExamples: \fP .in +1c \fB/home/issac/asf/svn/v2_13/include/apreq.h\fP. .SS "char \fBapreq_value_t::data\fP[1]" .PP value data .PP \fBExamples: \fP .in +1c \fB/home/issac/asf/svn/v2_13/include/apreq.h\fP. .SH "Author" .PP Generated automatically by Doxygen for libapreq2 from the source code. libapreq2-2.13/docs/man/man3/apreq_version.h.30000644000076400017500000000575011473533324020056 0ustar issacissac.TH "include/apreq_version.h" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME include/apreq_version.h \- Versioning API for libapreq .PP There are several different mechanisms for accessing the version. There is a string form, and a set of numbers; in addition, there are constants which can be compiled into your application, and you can query the library being used for its actual version. .SH SYNOPSIS .br .PP \fC#include 'apr_version.h'\fP .br \fC#include 'apreq.h'\fP .br .SS "Defines" .in +1c .ti -1c .RI "#define \fBAPREQ_MAJOR_VERSION\fP 2" .br .ti -1c .RI "#define \fBAPREQ_MINOR_VERSION\fP 8" .br .ti -1c .RI "#define \fBAPREQ_PATCH_VERSION\fP 0" .br .ti -1c .RI "#define \fBAPREQ_VERSION_STRING\fP" .br .ti -1c .RI "#define \fBAPREQ_IS_DEV_STRING\fP ''" .br .in -1c .SS "Functions" .in +1c .ti -1c .RI "void \fBapreq_version\fP (\fBapr_version_t\fP *pvsn)" .br .ti -1c .RI "const char * \fBapreq_version_string\fP (void)" .br .in -1c .SH "Detailed Description" .PP Versioning API for libapreq .PP There are several different mechanisms for accessing the version. There is a string form, and a set of numbers; in addition, there are constants which can be compiled into your application, and you can query the library being used for its actual version. Note that it is possible for an application to detect that it has been compiled against a different version of libapreq by use of the compile-time constants and the use of the run-time query function. .PP libapreq version numbering follows the guidelines specified in: .PP http://apr.apache.org/versioning.html .SH "Define Documentation" .PP .SS "#define APREQ_IS_DEV_STRING ''" .PP Internal: string form of the 'is dev' flag .SS "#define APREQ_MAJOR_VERSION 2" .PP major version Major API changes that could cause compatibility problems for older programs such as structure size changes. No binary compatibility is possible across a change in the major version. .SS "#define APREQ_MINOR_VERSION 8" .PP Minor API changes that do not cause binary compatibility problems. Should be reset to 0 when upgrading APREQ_MAJOR_VERSION .SS "#define APREQ_PATCH_VERSION 0" .PP patch level .SS "#define APREQ_VERSION_STRING" .PP \fBValue:\fP .PP .nf APR_STRINGIFY(APREQ_MAJOR_VERSION) '.' \ APR_STRINGIFY(APREQ_MINOR_VERSION) '.' \ APR_STRINGIFY(APREQ_PATCH_VERSION) \ APREQ_IS_DEV_STRING .fi This symbol is defined for internal, 'development' copies of libapreq. This symbol will be #undef'd for releases. The formatted string of libapreq's version .SH "Function Documentation" .PP .SS "void apreq_version (\fBapr_version_t\fP * pvsn)" .PP Return libapreq's version information information in a numeric form. .PP \fBParameters:\fP .RS 4 \fIpvsn\fP Pointer to a version structure for returning the version information. .RE .PP .SS "const char* apreq_version_string (void)" .PP Return libapreq's version information as a string. .SH "Author" .PP Generated automatically by Doxygen for libapreq2 from the source code. libapreq2-2.13/docs/man/man3/apreq_xs.30000644000076400017500000000110111473533324016557 0ustar issacissac.TH "Perl" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME Perl \- XS Modules. .PP .SS "Modules" .in +1c .ti -1c .RI "\fBApache2::Request\fP" .br .ti -1c .RI "\fBApache2::Upload\fP" .br .ti -1c .RI "\fBApache2::Cookie\fP" .br .ti -1c .RI "\fBAPR::Request\fP" .br .ti -1c .RI "\fBAPR::Request::Cookie\fP" .br .ti -1c .RI "\fBAPR::Request::Param\fP" .br .ti -1c .RI "\fBAPR::Request::Error\fP" .br .ti -1c .RI "\fBAPR::Request::CGI\fP" .br .ti -1c .RI "\fBAPR::Request::Apache2\fP" .br .in -1c .SH "Detailed Description" .PP XS Modules. .PP libapreq2-2.13/docs/man/man3/apreq_xs_apr_request.30000644000076400017500000000016411473533324021201 0ustar issacissac.TH "APR::Request" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME APR::Request \- libapreq2-2.13/docs/man/man3/apreq_xs_apr_request_apache2.30000644000076400017500000000020611473533324022561 0ustar issacissac.TH "APR::Request::Apache2" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME APR::Request::Apache2 \- libapreq2-2.13/docs/man/man3/apreq_xs_apr_request_cgi.30000644000076400017500000000017611473533324022026 0ustar issacissac.TH "APR::Request::CGI" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME APR::Request::CGI \- libapreq2-2.13/docs/man/man3/apreq_xs_apr_request_cookie.30000644000076400017500000000020411473533324022525 0ustar issacissac.TH "APR::Request::Cookie" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME APR::Request::Cookie \- libapreq2-2.13/docs/man/man3/apreq_xs_apr_request_error.30000644000076400017500000000020211473533324022403 0ustar issacissac.TH "APR::Request::Error" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME APR::Request::Error \- libapreq2-2.13/docs/man/man3/apreq_xs_apr_request_param.30000644000076400017500000000020211473533324022352 0ustar issacissac.TH "APR::Request::Param" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME APR::Request::Param \- libapreq2-2.13/docs/man/man3/apreq_xs_cookie.30000644000076400017500000000017211473533324020117 0ustar issacissac.TH "Apache2::Cookie" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME Apache2::Cookie \- libapreq2-2.13/docs/man/man3/apreq_xs_request.30000644000076400017500000000017411473533324020340 0ustar issacissac.TH "Apache2::Request" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME Apache2::Request \- libapreq2-2.13/docs/man/man3/apreq_xs_upload.30000644000076400017500000000017211473533324020132 0ustar issacissac.TH "Apache2::Upload" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME Apache2::Upload \- libapreq2-2.13/docs/man/man3/libapreq2.30000644000076400017500000000362311473533324016631 0ustar issacissac.TH "Apache Request Library" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME Apache Request Library \- libapreq2 Version 2.8.0 .PP .SS "Files" .in +1c .ti -1c .RI "file \fBapreq.h\fP" .br .RI "\fIMain header file... .PP Define the generic APREQ_ macros and common data structures. \fP" .PP .in +1c .ti -1c .RI "file \fBapreq_cookie.h\fP" .br .RI "\fICookies and Jars. .PP \fBapreq_cookie.h\fP describes a common server-side API for request (incoming) and response (outgoing) cookies. It aims towards compliance with the standard cookie specifications listed below. \fP" .PP .in +1c .ti -1c .RI "file \fBapreq_error.h\fP" .br .RI "\fIError status codes. .PP Define the APREQ_ error codes. \fP" .PP .in +1c .ti -1c .RI "file \fBapreq_module.h\fP" .br .RI "\fIModule API. \fP" .PP .in +1c .ti -1c .RI "file \fBapreq_param.h\fP" .br .RI "\fIRequest parsing and parameter API. \fP" .PP .in +1c .ti -1c .RI "file \fBapreq_parser.h\fP" .br .RI "\fIRequest body parser API. \fP" .PP .in +1c .ti -1c .RI "file \fBapreq_util.h\fP" .br .RI "\fIUtility functions for apreq. \fP" .PP .in +1c .ti -1c .RI "file \fBapreq_version.h\fP" .br .RI "\fIVersioning API for libapreq .PP There are several different mechanisms for accessing the version. There is a string form, and a set of numbers; in addition, there are constants which can be compiled into your application, and you can query the library being used for its actual version. \fP" .PP .in -1c .SH "Detailed Description" .PP libapreq2 Version 2.8.0 .PP libapreq2 is a shared library based on the \fBApache\fP Portable Runtime libraries libapr and libaprutil. .PP \fBSee also:\fP .RS 4 http://apr.apache.org/ .RE .PP .SH "Configuring libapreq2 Applications" .PP This package includes \fCapreq2-config\fP, a configuration script for building applications with libapreq2. Run \fCapreq2-config --help\fP to display its options. XXX add examples here XXX libapreq2-2.13/docs/man/man3/mod_apreq2.30000644000076400017500000001067711473533324017010 0ustar issacissac.TH "Apache 2.X Filter Module" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME Apache 2.X Filter Module \- mod_apreq2 - DSO that ties libapreq2 to \fBApache\fP HTTPD 2.X. .PP .SS "Defines" .in +1c .ti -1c .RI "#define \fBAPREQ_FILTER_NAME\fP 'apreq2'" .br .ti -1c .RI "#define \fBAPREQ_APACHE2_MMN\fP 20090110" .br .in -1c .SS "Functions" .in +1c .ti -1c .RI "\fBapreq_handle_t\fP * \fBapreq_handle_apache2\fP (request_rec *r)" .br .ti -1c .RI "\fBAPR_DECLARE_OPTIONAL_FN\fP (\fBapreq_handle_t\fP *, apreq_handle_apache2,(request_rec *r))" .br .in -1c .SH "Detailed Description" .PP mod_apreq2 - DSO that ties libapreq2 to \fBApache\fP HTTPD 2.X. .PP mod_apreq2 provides the 'APREQ2' input filter for using libapreq2 (and allow its parsed data structures to be shared) within the \fBApache\fP 2.X webserver. Using it, libapreq2 works properly in every phase of the HTTP request, from translation handlers to output filters, and even for subrequests / internal redirects. .PP .PP .PP .SS "Activating mod_apreq2 in \fBApache\fP 2.X" .PP The installation process triggered by \fC% make install\fP \fIwill not modify your webserver's config file\fP. Hence, be sure you activate it on startup by adding a LoadModule directive to your webserver config; e.g. .PP .PP .nf LoadModule apreq_module modules/mod_apreq2.so .fi .PP .PP The mod_apreq2 filter is named 'apreq2', and may be used in Apache's input filter directives, e.g. .PP .nf AddInputFilter apreq2 # or SetInputFilter apreq2 .fi .PP .PP However, this is not required because libapreq2 will add the filter (only) if it's necessary. You just need to ensure that your module invokes \fBapreq_handle_apache2()\fP \fIbefore the content handler ultimately reads from the input filter chain\fP. It is important to realize that no matter how the input filters are initially arranged, the APREQ2 filter will attempt to reposition itself to be the last input filter to read the data. .PP If you want to use other input filters to transform the incoming HTTP request data, is important to register those filters with \fBApache\fP as having type AP_FTYPE_CONTENT_SET or AP_FTYPE_RESOURCE. Due to the limitations of Apache's current input filter design, types higher than AP_FTYPE_CONTENT_SET may not work properly whenever the apreq filter is active. .PP This is especially true when a content handler uses libapreq2 to parse some of the post data before doing an internal redirect. Any input filter subsequently added to the redirected request will bypass the original apreq filter (and therefore lose access to some of the original post data), unless its type is less than the type of the apreq filter (currently AP_FTYPE_PROTOCOL-1). .PP .SS "Server Configuration Directives" .PP Directive Context DefaultDescription APREQ2_ReadLimit directory \fBAPREQ_DEFAULT_READ_LIMIT\fP Maximum number of bytes mod_apreq2 will send off to libapreq2 for parsing. mod_apreq2 will log this event and subsequently remove itself from the filter chain. APREQ2_BrigadeLimit directory \fBAPREQ_DEFAULT_BRIGADE_LIMIT\fP Maximum number of bytes mod_apreq2 will let accumulate within the heap-buckets in a brigade. Excess data will be spooled to an appended file bucket. APREQ2_TempDir directory NULL Sets the location of the temporary directory apreq will use to spool overflow brigade data (based on the APREQ2_BrigadeLimit setting). If left unset, libapreq2 will select a platform-specific location via \fBapr_temp_dir_get()\fP. Per-directory commands for mod_apreq2 .PP .SS "Implementation Details" .PP .PP .nf XXX apreq as a normal input filter XXX apreq as a 'virtual' content handler. XXX apreq as a transparent 'tee'. XXX apreq parser registration in post_config .fi .PP .SH "Define Documentation" .PP .SS "#define APREQ_APACHE2_MMN 20090110" .PP The Apache2 Module Magic Number for use in the \fBApache\fP 2.x module structures This gets bumped if changes in th4e API will break third party applications using this apache2 module .PP \fBSee also:\fP .RS 4 \fBAPREQ_MODULE\fP .RE .PP .SS "#define APREQ_FILTER_NAME 'apreq2'" .PP The mod_apreq2 filter is named 'apreq2', and may be used in Apache's input filter directives, e.g. .PP .nf AddInputFilter apreq2 # or SetInputFilter apreq2 .fi .PP See above .SH "Function Documentation" .PP .SS "\fBapreq_handle_t\fP* apreq_handle_apache2 (request_rec * r)" .PP Create an apreq handle which communicates with an \fBApache\fP 2.X request_rec. libapreq2-2.13/docs/man/man3/todo.30000644000076400017500000000076511473533324015721 0ustar issacissac.TH "todo" 3 "25 Nov 2010" "Version 2.13" "libapreq2" \" -*- nroff -*- .ad l .nh .SH NAME todo \- Todo List .IP "\fBGlobal \fBapreq_atoi64f\fP \fP" 1c What happens when s is malformed? Should this return an unsigned value instead? .PP .PP .IP "\fBGlobal \fBapreq_atoi64t\fP \fP" 1c What happens when s is malformed? Should this return an unsigned value instead? .PP .PP .IP "\fBGlobal \fBapreq_brigade_concat\fP \fP" 1c Flesh out these error codes, making them as explicit as possible. .PP libapreq2-2.13/FAQ.pod0000644000076400017500000000505011473532340013427 0ustar issacissac=head1 Issues during installation. [...] =head1 Using libapreq2 with Apache2 and mod_perl2. =head2 I keep getting "undefined symbol" errors whenever I use Apache2::Request or APR::Request::Apache2. You need to load mod_apreq2.so at server startup, which grabs all the required symbols at server startup. Be sure your server config contains a line like LoadModule apreq_module modules/mod_apreq2.so =head2 When I use Apache2::Request in my output filter, it seems to lose the incoming POST variables. The problem is likely that the mod_apreq2 filter has not been added to the input filter chain in time to read the POST data. There are two solutions to this problem: 1) Write a filter init handler for you filter that instantiates an Apache2::Request object. http://perl.apache.org/docs/2.0/api/Apache2/Filter.html#C_FilterInitHandler_ 2) Use .htaccess or your server config to ensure the apreq input filter is active for this request with "AddInputFilter APREQ" or somesuch. We recommend using (1), and falling back to (2) until you get (1) working. =head2 When I try to upload a file, why do I get this error "[error] Can't locate .../Apache2/Request/upload.al in @INC"? I is now a separate module in apreq2, so you need to C to load the C function. This also applies to "Can't locate auto/APR/Request/Param/slurp.al in @INC". This is because I is implement by wrapping the I packages. =head1 Using libapreq2 outside of Apache. [...] =head1 Contributing to apreq development. =head2 How is the subversion repository managed? apreq's repository is broken into three subdirectories: /trunk - the current codebase for active development. /tags - release snapshots. /branches - where older releases and experimental development lines live. apreq follows a Commit-then-Review policy for its entire repository, but being a shared library places certain restrictions on the admissible changes for stable trees. Basically the header files cannot be modified; only new functions and structures may be added to them. Any time that happens, the minor-version needs to be bumped, and the patch-level gets reset to zero. Changes that only modify the library's implementation (.c) files require a bump to the patch-level. On stable trees, this version tracking should happen on each commit, to make auditing easy for other developers without resorting to a draconian Review-then-Commit policy. libapreq2-2.13/glue/Makefile.am0000644000076400017500000000121111473532340015277 0ustar issacissacEXTRA_DIST = perl dist-hook: perl_config: cd perl; @PERL@ ../../build/xsbuilder.pl run perl/Makefile: perl/xsbuilder perl/Makefile.PL cd perl; @PERL@ @PERL_OPTS@ Makefile.PL -apxs @APACHE2_APXS@ @MM_OPTS@ perl_glue: perl/Makefile cd perl; $(MAKE) perl_test: perl/Makefile cd perl; $(MAKE) test perl_install: cd perl; INSTALL=1 @PERL@ @PERL_OPTS@ Makefile.PL -apxs @APACHE2_APXS@ @MM_OPTS@ cd perl; $(MAKE) install perl_clean: -cd perl; $(MAKE) clean if BUILD_PERL_GLUE all-local: perl_glue install-exec-local: perl_install clean-local: perl_clean test: perl_test else all-local: install-exec-local: clean-local: test: endif libapreq2-2.13/glue/Makefile.in0000644000076400017500000002426511473533247015335 0ustar issacissac# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = glue DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/apreq_config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ APACHE1_APXS = @APACHE1_APXS@ APACHE2_APXS = @APACHE2_APXS@ APACHE2_HTTPD = @APACHE2_HTTPD@ APACHE2_INCLUDES = @APACHE2_INCLUDES@ APACHE2_SRC = @APACHE2_SRC@ APREQ_CONFIG = @APREQ_CONFIG@ APREQ_DOTTED_VERSION = @APREQ_DOTTED_VERSION@ APREQ_LIBNAME = @APREQ_LIBNAME@ APREQ_LIBTOOL_VERSION = @APREQ_LIBTOOL_VERSION@ APREQ_MAJOR_VERSION = @APREQ_MAJOR_VERSION@ APR_CONFIG = @APR_CONFIG@ APR_DOC_VERSION = @APR_DOC_VERSION@ APR_INCLUDES = @APR_INCLUDES@ APR_LA = @APR_LA@ APR_LDFLAGS = @APR_LDFLAGS@ APR_LIBS = @APR_LIBS@ APR_LTFLAGS = @APR_LTFLAGS@ APU_CONFIG = @APU_CONFIG@ APU_DOC_VERSION = @APU_DOC_VERSION@ APU_LA = @APU_LA@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MM_OPTS = @MM_OPTS@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PERL_OPTS = @PERL_OPTS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TAR = @TAR@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = perl all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu glue/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu glue/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-exec-local install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ clean-libtool clean-local dist-hook distclean \ distclean-generic distclean-libtool distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-exec-local install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am dist-hook: perl_config: cd perl; @PERL@ ../../build/xsbuilder.pl run perl/Makefile: perl/xsbuilder perl/Makefile.PL cd perl; @PERL@ @PERL_OPTS@ Makefile.PL -apxs @APACHE2_APXS@ @MM_OPTS@ perl_glue: perl/Makefile cd perl; $(MAKE) perl_test: perl/Makefile cd perl; $(MAKE) test perl_install: cd perl; INSTALL=1 @PERL@ @PERL_OPTS@ Makefile.PL -apxs @APACHE2_APXS@ @MM_OPTS@ cd perl; $(MAKE) install perl_clean: -cd perl; $(MAKE) clean @BUILD_PERL_GLUE_TRUE@all-local: perl_glue @BUILD_PERL_GLUE_TRUE@install-exec-local: perl_install @BUILD_PERL_GLUE_TRUE@clean-local: perl_clean @BUILD_PERL_GLUE_TRUE@test: perl_test @BUILD_PERL_GLUE_FALSE@all-local: @BUILD_PERL_GLUE_FALSE@install-exec-local: @BUILD_PERL_GLUE_FALSE@clean-local: @BUILD_PERL_GLUE_FALSE@test: # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libapreq2-2.13/glue/perl/lib/Apache2/Cookie.pm0000644000076400017500000003156411473532340020003 0ustar issacissacpackage Apache2::Cookie; use APR::Table; use APR::Pool; use APR::Request::Cookie; use APR::Request::Apache2; use APR::Request qw/encode decode/; use Apache2::RequestRec; use Apache2::RequestUtil; use overload '""' => sub { shift->as_string() }, fallback => 1; push our @ISA, "APR::Request::Cookie"; our $VERSION = "2.13"; sub new { my ($class, $r, %attrs) = @_; my ($name) = grep {defined} delete $attrs{name} , delete $attrs{-name}; my ($value) = grep {defined} delete $attrs{value}, delete $attrs{-value}; return unless defined $name and defined $value; my $cookie = $class->make($r->pool, $name, $class->freeze($value)); while(my ($k, $v) = each %attrs) { $k =~ s/^-//; $cookie->$k($v); } return $cookie; } sub fetch { my $class = shift; my $req = shift; unless (defined $req) { my $usage = 'Usage: Apache2::Cookie->fetch($r): missing argument $r'; $req = eval {Apache2::RequestUtil->request} or die <request failed: $@. EOD } $req = APR::Request::Apache2->handle($req) unless $req->isa("APR::Request"); my $jar = $req->jar or return; $jar->cookie_class(__PACKAGE__); return $jar->get(shift) if @_; return wantarray ? %$jar : $jar; } sub set_attr { my ($cookie, %attrs) = @_; while (my ($k, $v) = each %attrs) { $k =~ s/^-//; $cookie->$k($v); } } sub freeze { my ($class, $value) = @_; die 'Usage: Apache2::Cookie->freeze($value)' unless @_ == 2; if (not ref $value) { return encode($value); } elsif (UNIVERSAL::isa($value, "ARRAY")) { return join '&', map encode($_), @$value; } elsif (UNIVERSAL::isa($value, "HASH")) { return join '&', map encode($_), %$value; } die "Can't freeze reference: $value"; } sub thaw { my $c = shift; my @rv = split /&/, @_ ? shift : $c->SUPER::value; return wantarray ? map decode($_), @rv : decode($rv[0]); } sub value { return shift->thaw; } sub bake { my ($c, $r) = @_; $r->err_headers_out->add("Set-Cookie", $c->as_string); } sub bake2 { my ($c, $r) = @_; die "Can't bake2 a Netscape cookie: $c" unless $c->version > 0; $r->err_headers_out->add("Set-Cookie2", $c->as_string); } package Apache2::Cookie::Jar; use APR::Request::Apache2; push our @ISA, qw/APR::Request::Apache2/; sub cookies { return Apache2::Cookie->fetch(@_) if @_ == 2; my $cookies = Apache2::Cookie->fetch(@_); return wantarray ? keys %$cookies : $cookies; } *Apache2::Cookie::Jar::status = *APR::Request::jar_status; sub new { my $class = shift; my $jar = $class->APR::Request::Apache2::handle(shift); my %attrs = @_; while (my ($k, $v) = each %attrs) { $k =~ s/^-//; my $method = lc $k; $jar->$method($v); } return $jar; } 1; __END__ =head1 NAME Apache2::Cookie, Apache2::Cookie::Jar - HTTP Cookies Class =for testing use Apache2::Cookie; use APR::Pool; # use $r instead of $p here, so doc examples reflect mp2 env, not CGI/test env $r = APR::Pool->new; $j = Apache2::Cookie::Jar->new($r); $j->cookies->{foo} = Apache2::Cookie->new($r, name => "foo", value => "1"); $j->cookies->add( Apache2::Cookie->new($r, name => "bar", value => "2") ); =head1 SYNOPSIS use Apache2::Cookie; $j = Apache2::Cookie::Jar->new($r); $c_in = $j->cookies("foo"); # get cookie from request headers $c_out = Apache2::Cookie->new($r, -name => "mycookie", -value => $c_in->name ); $c_out->path("/bar"); # set path to "/bar" $c_out->bake; # send cookie in response headers =head1 DESCRIPTION The Apache2::Cookie module is based on the original 1.X versions, which mimic the CGI::Cookie API. The current version of this module includes several packages and methods which are patterned after Apache2::Request, yet remain largely backwards-compatible with the original 1.X API (see the L section below for known issues). This manpage documents the Apache2::Cookie and Apache2::Cookie::Jar packages. =head1 Apache2::Cookie::Jar This class collects Apache2::Cookie objects into a lookup table. It plays the same role for accessing the incoming cookies as Apache2::Request does for accessing the incoming params and file uploads. =head2 new Apache2::Cookie::Jar->new($env) Class method that retrieves the parsed cookie jar from the current environment. =head2 cookies $jar->cookies() $jar->cookies($key) Retrieve cookies named $key with from the jar object. In scalar context the first such cookie is returned, and in list context the full list of such cookies are returned. If the $key argument is omitted, C<< scalar $jar->cookies() >> will return an APR::Request::Cookie::Table object containing all the cookies in the jar. Modifications to the this object will affect the jar's internal I table in C, so their impact will be noticed by all libapreq2 applications during this request. In list context C<< $jar->cookies() >> returns the list of names for all the cookies in the jar. The order corresponds to the order in which the cookies appeared in the incoming "Cookie" header. This method will throw an C<< APR::Request::Error >> object into $@ if the returned value(s) could be unreliable. In particular, note that C<< scalar $jar->cookies("foo") >> will not croak if it can locate the a "foo" cookie within the jar's parsed cookie table, even if the cookie parser has failed (the cookies are parsed in the same order as they appeared in the "Cookie" header). In all other circumstances C will croak if the parser failed to successfully parse the "Cookie" header. $c = Apache2::Cookie->new($r, name => "foo", value => 3); $j->cookies->add($c); $cookie = $j->cookies("foo"); # first foo cookie @cookies = $j->cookies("foo"); # all foo cookies @names = $j->cookies(); # all cookie names =head2 status $jar->status() Get the I status code of the cookie parser: APR_SUCCESS on success, error otherwise. =head1 Apache2::Cookie =head2 new Apache2::Cookie->new($env, %args) Just like CGI::Cookie::new, but requires an additional environment argument: $cookie = Apache2::Cookie->new($r, -name => 'foo', -value => 'bar', -expires => '+3M', -domain => '.capricorn.com', -path => '/cgi-bin/database', -secure => 1 ); The C<-value> argument may be either an arrayref, a hashref, or a string. C encodes this argument into the cookie's raw value. =head2 freeze Apache2::Cookie->freeze($value) Helper function (for C) that serializes a new cookie's value in a manner compatible with CGI::Cookie (and Apache2::Cookie 1.X). This class method accepts an arrayref, hashref, or normal perl string in $value. $value = Apache2::Cookie->freeze(["2+2", "=4"]); =head2 thaw Apache2::Cookie->thaw($value) $cookie->thaw() This is the helper method (for C) responsible for decoding the raw value of a cookie. An optional argument $value may be used in place of the cookie's raw value. This method can also decode cookie values created using CGI::Cookie or Apache2::Cookie 1.X. print $cookie->thaw; # prints "bar" @values = Apache2::Cookie->thaw($value); # ( "2+2", "=4" ) =head2 as_string $cookie->as_string() Format the cookie object as a string. The quote-operator for Apache2::Cookie is overloaded to run this method whenever a cookie appears in quotes. ok "$cookie" eq $cookie->as_string; =head2 name $cookie->name() Get the name of the cookie. =head2 value $cookie->value() Get the (unswizzled) value of the cookie: my $value = $cookie->value; my @values = $cookie->value; Note: if the cookie's value was created using a C method, one way to reconstitute the object is by subclassing Apache2::Cookie with a package that provides the associated C sub: { package My::COOKIE; @ISA = 'Apache2::Cookie'; sub thaw { my $val = shift->raw_value; $val =~ tr/a-z/A-Z/; $val } } bless $cookie, "My::COOKIE"; ok $cookie->value eq "BAR"; =head2 raw_value $cookie->raw_value() Gets the raw (opaque) value string as it appears in the incoming "Cookie" header. ok $cookie->raw_value eq "bar"; =head2 bake $cookie->bake($r) Adds a I header to the outgoing headers table. =head2 bake2 $cookie->bake2($r) Adds a I header to the outgoing headers table. =head2 domain $cookie->domain() $cookie->domain($set) Get or set the domain for the cookie: $domain = $cookie->domain; $cookie->domain(".cp.net"); =head2 path $cookie->path() $cookie->path($set) Get or set the path for the cookie: $path = $cookie->path; $cookie->path("/"); =head2 version $cookie->version() $cookie->version($set) Get or set the cookie version for this cookie. Netscape spec cookies have version = 0; RFC-compliant cookies have version = 1. ok $cookie->version == 0; $cookie->version(1); ok $cookie->version == 1; =head2 expires $cookie->expires() $cookie->expires($set) Get or set the future expire time for the cookie. When assigning, the new value ($set) should match /^\+?(\d+)([YMDhms]?)$/ $2 qualifies the number in $1 as representing "Y"ears, "M"onths, "D"ays, "h"ours, "m"inutes, or "s"econds (if the qualifier is omitted, the number is interpreted as representing seconds). As a special case, $set = "now" is equivalent to $set = "0". my $expires = $cookie->expires; $cookie->expires("+3h"); # cookie is set to expire in 3 hours =head2 secure $cookie->secure() $cookie->secure($set) Get or set the secure flag for the cookie: $cookie->secure(1); $is_secure = $cookie->secure; $cookie->secure(0); =head2 httponly $cookie->httponly() $cookie->httponly($set) Get or set the HttpOnly flag for the cookie: $cookie->httponly(1); $is_HttpOnly = $cookie->httponly; $cookie->httponly(0); =head2 httponly $cookie->httponly() $cookie->httponly($set) Get or set the HttpOnly flag for the cookie: $cookie->httponly(1); $is_HttpOnly = $cookie->httponly; $cookie->httponly(0); =head2 comment $cookie->comment() $cookie->comment($set) Get or set the comment field of an RFC (Version > 0) cookie. $cookie->comment("Never eat yellow snow"); print $cookie->comment; =head2 commentURL $cookie->commentURL() $cookie->commentURL($set) Get or set the commentURL field of an RFC (Version > 0) cookie. $cookie->commentURL("http://localhost/cookie.policy"); print $cookie->commentURL; =head2 fetch Apache2::Cookie->fetch($r) Fetch and parse the incoming I header: my $cookies = Apache2::Cookie->fetch($r); # APR::Request::Cookie::Table ref It should be noted, that with perl 5.8+ Iterator magic, table is able to handle multiple cookies of the same name. my %cookies = Apache2::Cookie->fetch($r); =head1 PORTING from 1.X Changes to the 1.X API: =over 5 =item * C now expects an C<$r> object as (second) argument, although this isn't necessary in mod_perl 2 if C is loaded and 'PerlOptions +GlobalRequest' is in effect. =item * C is gone. =item * C no longer encodes the supplied cookie name. =item * C returns undef if -value is not specified or -value => undef. =item * C and C no longer accept a "set" argument. In other words, neither a cookie's name, nor its value, may be modified. A new cookie should be made instead. =back =head1 SEE ALSO L, L, L, CGI::Cookie(3) =head1 COPYRIGHT 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. libapreq2-2.13/glue/perl/lib/Apache2/Request.pm0000644000076400017500000003056011473532340020215 0ustar issacissacpackage Apache2::Request; use APR::Request::Param; use APR::Request::Apache2; use Apache2::RequestRec; push our @ISA, qw/Apache2::RequestRec APR::Request::Apache2/; our $VERSION = "2.13"; my %old_limits = ( post_max => "read_limit", max_body => "read_limit", ); sub new { my $class = shift; my $req = $class->APR::Request::Apache2::handle(shift); my %attrs = @_; while (my ($k, $v) = each %attrs) { $k =~ s/^-//; my $method = $old_limits{lc($k)} || lc $k; $req->$method($v); } return $req; } sub hook_data {die "hook_data not implemented"} sub disable_uploads { my ($req, $toggle) = @_; $req->SUPER::disable_uploads if $toggle; } 1; __END__ =head1 NAME Apache2::Request - Methods for dealing with client request data =head1 SYNOPSIS use Apache2::Request; $req = Apache2::Request->new($r); @foo = $req->param("foo"); $bar = $req->args("bar"); =head1 DESCRIPTION The Apache2::Request module provides methods for parsing GET and POST parameters encoded with either I or I. Although Apache2::Request provides a few new APIs for accessing the parsed data, it remains largely backwards-compatible with the original 1.X API. See the L section below for a list of known issues. This manpage documents the Apache2::Request package. =head1 Apache2::Request The interface is designed to mimic the CGI.pm routines for parsing query parameters. The main differences are =over 4 =item * C takes an environment-specific object C<$r> as (second) argument. Newer versions of CGI.pm also accept this syntax within modperl. =item * The query parameters are stored in APR::Table derived objects, and are therefore retrieved from the table by using case-insensitive keys. =item * The query string is always parsed immediately, even for POST requests. =back =head2 new Apache2::Request->new($r, %args) Creates a new Apache2::Request object. my $req = Apache2::Request->new($r, POST_MAX => "1M"); With mod_perl2, the environment object $r must be an Apache2::RequestRec object. In that case, all methods from Apache2::RequestRec are inherited. In the (default) CGI environment, $r must be an APR::Pool object. The following args are optional: =over 4 =item * C, C Limit the size of POST data (in bytes). =item * C Disable file uploads. =item * C Sets the directory where upload files are spooled. On a *nix-like that supports I, the TEMP_DIR should be located on the same file system as the final destination file: use Apache2::Upload; my $req = Apache2::Request->new($r, TEMP_DIR => "/home/httpd/tmp"); my $upload = $req->upload('file'); $upload->link("/home/user/myfile"); For more details on C, see L. =item * C Extra configuration info passed as the fourth argument to an upload hook. See the description for the next item, C. =item * C Sets up a callback to run whenever file upload data is read. This can be used to provide an upload progress meter during file uploads. Apache will automatically continue writing the original data to $upload->fh after the hook exits. my $transparent_hook = sub { my ($upload, $data, $data_len, $hook_data) = @_; warn "$hook_data: got $data_len bytes for " . $upload->name; }; my $req = Apache2::Request->new($r, HOOK_DATA => "Note", UPLOAD_HOOK => $transparent_hook, ); =back =head2 instance Apache2::Request->instance($r) The default (and only) behavior of I is to intelligently cache B data for the duration of the request. Thus there is no longer the need for a separate C method as existed in I for Apache 1.3 - all B data is always available from each and every I object created during the request's lifetime. However an C method is aliased to C in this release to ease the pain of porting from 1.X to 2.X. =head2 param $req->param() $req->param($name) Get the request parameters (using case-insensitive keys) by mimicing the OO interface of C. # similar to CGI.pm my $foo_value = $req->param('foo'); my @foo_values = $req->param('foo'); my @param_names = $req->param; # the following differ slightly from CGI.pm # returns ref to APR::Request::Param::Table object representing # all (args + body) params my $table = $req->param; @table_keys = keys %$table; In list context, or when invoked with no arguments as C<< $req->param() >>, C induces libapreq2 to read and parse all remaining data in the request body. However, C<< scalar $req->param("foo") >> is lazy: libapreq2 will only read and parse more data if 1) no "foo" param appears in the query string arguments, AND 2) no "foo" param appears in the previously parsed POST data. In this circumstance libapreq2 will read and parse additional blocks of the incoming request body until either 1) it has found the the "foo" param, or 2) parsing is completed. Observe that C<< scalar $req->param("foo") >> will not raise an exception if it can locate "foo" in the existing body or args tables, even if the query-string parser or the body parser has failed. In all other circumstances C will throw an Apache2::Request::Error object into $@ should either parser fail. $req->args_status(1); # set error state for query-string parser ok $req->param_status == 1; $foo = $req->param("foo"); ok $foo == 1; eval { @foo = $req->param("foo") }; ok $@->isa("Apache2::Request::Error"); undef $@; eval { my $not_found = $req->param("non-existent-param") }; ok $@->isa("Apache2::Request::Error"); $req->args_status(0); # reset query-string parser state to "success" Note: modifications to the C<< scalar $req->param() >> table only affect the returned table object (the underlying C apr_table_t is I from the parse data by apreq_params()). Modifications do not affect the actual request data, and will not be seen by other libapreq2 applications. =head2 parms, params The functionality of these functions is assumed by C, so they are no longer necessary. Aliases to C are provided in this release for backwards compatibility, however they are deprecated and may be removed from a future release. =head2 body $req->body() $req->body($name) Returns an I object containing the POST data parameters of the I object. my $body = $req->body; An optional name parameter can be passed to return the POST data parameter associated with the given name: my $foo_body = $req->body("foo"); More generally, C follows the same pattern as C with respect to its return values and argument list. The main difference is that modifications to the C<< scalar $req->body() >> table affect the underlying apr_table_t attribute in apreq_request_t, so their impact will be noticed by all libapreq2 applications during this request. =head2 upload $req->upload() $req->upload($name) Requires C. With no arguments, this method returns an I object in scalar context, or the names of all I objects in list context. An optional name parameter can be passed to return the I object associated with the given name: my $upload = $req->upload($name); More generally, C follows the same pattern as C with respect to its return values and argument list. The main difference is that its returned values are Apache2::Upload object refs, not simple scalars. Note: modifications to the C<< scalar $req->upload() >> table only affect the returned table object (the underlying C apr_table_t is I by apreq_uploads()). They do not affect the actual request data, and will not be seen by other libapreq2 applications. =head2 args_status $req->args_status() Get the I status code of the query-string parser. APR_SUCCESS on success, error otherwise. =head2 body_status $req->body_status() Get the current I status code of the parsed POST data. APR_SUCCESS when parser has completed, APR_INCOMPLETE if parser has more data to parse, APR_EINIT if no post data has been parsed, error otherwise. =head2 param_status $req->param_status() In scalar context, this returns C if there was an error during the query-string parse, otherwise this returns C, ie $req->args_status || $req->body_status In list context C returns the list C<(args_status, body_status)>. =head2 parse $req->parse() Forces the request to be parsed immediately. In void context, this will throw an APR::Request::Error should the either the query-string or body parser fail. In all other contexts it will return the two parsers' combined I status code $req->body_status || $req->args_status However C should be avoided in most normal situations. For example, in a mod_perl content handler it is more efficient to write sub handler { my $r = shift; my $req = Apache2::Request->new($r); $r->discard_request_body; # efficiently parses the request body my $parser_status = $req->body_status; #... } Calling C<< $r->discard_request_body >> outside the content handler is generally a mistake, so use C<< $req->parse >> there, but B. The Apache2::Request API is B around a lazy-parsing scheme, so calling C should not affect the behavior of any other methods. =head1 SUBCLASSING Apache2::Request If the instances of your subclass are hash references then you can actually inherit from Apache2::Request as long as the Apache2::Request object is stored in an attribute called "r" or "_r". (The Apache2::Request class effectively does the delegation for you automagically, as long as it knows where to find the Apache2::Request object to delegate to.) For example: package MySubClass; use Apache2::Request; our @ISA = qw(Apache2::Request); sub new { my($class, @args) = @_; return bless { r => Apache2::Request->new(@args) }, $class; } =head1 PORTING from 1.X This is the complete list of changes to existing methods from Apache2::Request 1.X. These issues need to be addressed when porting 1.X apps to the new 2.X API. =over 4 =item * Apache2::Upload is now a separate module. Applications requiring the upload API must C in 2.X. This is easily addressed by preloading the modules during server startup. =item * You can no longer add (or set or delete) parameters in the C<< scalar $req->param >>, C<< scalar $req->args >> or C<< scalar $req->body >> tables. Nor can you add (or set or delete) cookies in the C<< scalar $req->jar >> table. =item * C is now identical to C, and is now deprecated. It may be removed from a future 2.X release. =item * C includes the functionality of C and C, so they are now deprecated and may be removed from a future 2.X release. =item * C called in a list context no longer returns a unique list of paramaters. The returned list contains multiple instances of the parameter name for multivalued fields. =back =head1 SEE ALSO L, L, L, L, APR::Table(3). =head1 COPYRIGHT 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. libapreq2-2.13/glue/perl/lib/Apache2/Upload.pm0000644000076400017500000001606611473532340020016 0ustar issacissacpackage Apache2::Upload; use Apache2::Request; push our @ISA, qw/APR::Request::Param/; our $VERSION = "2.13"; no strict 'refs'; for (qw/slurp type size link tempname fh io filename/) { *{$_} = *{"APR::Request::Param::upload_$_"}{CODE}; } sub Apache2::Request::upload { my $req = shift; my $body = $req->body or return; $body->param_class(__PACKAGE__); if (@_) { my @uploads = grep $_->upload, $body->get(@_); return wantarray ? @uploads : $uploads[0]; } return map { $_->upload ? $_->name : () } values %$body if wantarray; return $body->uploads($req->pool); } *bb = *APR::Request::Param::upload; 1; __END__ =head1 NAME Apache2::Upload - Methods for dealing with file uploads. =head1 SYNOPSIS use Apache2::Upload; $req = Apache2::Request->new($r); $upload = $req->upload("foo"); $size = $upload->size; # three methods to get at the upload's contents ... slurp, fh, io $upload->slurp($slurp_data); read $upload->fh, $fh_data, $size; ok $slurp_data eq $fh_data; my $io = $upload->io; print while <$io>; =head1 DESCRIPTION Apache2::Upload is a new module based on the original package included in Apache2::Request 1.X. Users requiring the upload API must now C, which adds the C method to Apache2::Request. Apache2::Upload is largely backwards-compatible with the original 1.X API. See the L section below for a list of known issues. This manpage documents the Apache2::Upload package. =head1 Apache2::Upload =head2 name $upload->name() The name of the HTML form element which generated the upload. =head2 filename $upload->filename() The (client-side) filename as submitted in the HTML form. Note: some agents will submit the file's full pathname, while others may submit just the basename. =head2 fh $upload->fh() Creates filehandle reference to the upload's spooled tempfile, which contains the full contents of the upload. =head2 io $upload->io() Creates a tied IO handle. This method is a more efficient version of C, but with C the handle ref returned is not seekable. It is tied to an APR::Request::Brigade object, so you may use the brigade API on the tied object if you want to manipulate the IO stream (beyond simply reading from it). The returned reference is actually an object which has C and C methods available. However these methods are just syntactic sugar for the underlying C and C methods from APR::Request::Brigade. $io = $upload->io; print while $io->read($_); # equivalent to: tied(*$io)->READ($_) See L and L below for additional notes on their usage. =head2 bb $upload->bb() $upload->bb($set) Get/set the APR::Brigade which represents the upload's contents. =head2 size $upload->size() Returns the size of the upload in bytes. =head2 info $upload->info() $upload->info($set) Get/set the additional header information table for the uploaded file. Returns a hash reference tied to the I class. An optional C<$table> argument can be passed to reassign the upload's internal (apr_table_t) info table to the one C<$table> represents. my $info = $upload->info; while (my($hdr_name, $hdr_value) = each %$info) { # ... } # fetch upload's Content-Type header my $type = $upload->info->{"Content-type"}; =head2 type $upload->type() Returns the MIME type of the given I object. my $type = $upload->type; #same as my $content_type = $upload->info->{"Content-Type"}; $content_type =~ s/;.*$//ms; =head2 link $upload->link() To avoid recopying the upload's internal tempfile brigade on a *nix-like system, I will create a hard link to it: my $upload = $req->upload('foo'); $upload->link("/path/to/newfile") or die sprintf "link from '%s' failed: $!", $upload->tempname; Typically the new name must lie on the same device and partition as the brigade's tempfile. If this or any other reason prevents the OS from linking the files, C will instead copy the temporary file to the specified location. =head2 slurp $upload->slurp($contents) Reads the full contents of a file upload into the scalar argument. The return value is the length of the file. my $size = $upload->slurp($contents); =head2 tempname $upload->tempname() Provides the name of the spool file. my $tempname = $upload->tempname; =head1 APR::Request::Brigade This class is derived from APR::Brigade, providing additional methods for TIEHANDLE, READ and READLINE. To be memory efficient, these methods delete buckets from the brigade as soon as their data is actually read, so you cannot C on handles tied to this class. Such handles have semantics similar to that of a read-only socket. =head2 TIEHANDLE APR::Request::Brigade->TIEHANDLE($bb) Creates a copy of the bucket brigade represented by $bb, and blesses that copy into the APR::Request::Brigade class. This provides syntactic sugar for using perl's builtin C, C, and C<< <> >> operations on handles tied to this package: use Symbol; $fh = gensym; tie *$fh, "APR::Request:Brigade", $bb; print while <$fh>; =head2 READ $bb->READ($contents) $bb->READ($contents, $length) $bb->READ($contents, $length, $offset) Reads data from the brigade $bb into $contents. When omitted $length defaults to C<-1>, which reads the first bucket into $contents. A positive $length will read in $length bytes, or the remainder of the brigade, whichever is greater. $offset represents the index in $context to read the new data. =head2 READLINE $bb->READLINE() Returns the first line of data from the bride. Lines are terminated by linefeeds (the '\012' character), but we may eventually use C<$/> instead. =head1 PORTING from 1.X =over 4 =item * C<< $upload->next() >> is no longer available; please use the C<< APR::Request::Param::Table >> API when iterating over upload entries. =item * C is replaced by C. =item * C returns only the MIME-type portion of the Content-Type header. =back =head1 SEE ALSO L, L, L, APR::Table(3) =head1 COPYRIGHT 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. libapreq2-2.13/glue/perl/Makefile.PL0000644000076400017500000004114511473532340016171 0ustar issacissacuse strict; use ModPerl::MM; use 5.005; use Apache::Test5005compat; use Apache::TestMM qw(test clean); use Apache::TestReport (); use Apache::TestSmoke (); use Apache::TestRun (); use Apache::TestConfigPerl (); use Apache::TestSmokePerl (); use Apache::TestReportPerl (); use Config; use File::Find qw(finddepth); use File::Basename; use Apache2::Build; use constant WIN32 => Apache2::Build::WIN32; use Cwd; use ExtUtils::XSBuilder::ParseSource; my $version = "2.XX-dev"; # DUMMY VALUE my $cwd = WIN32 ? Win32::GetLongPathName(cwd) : cwd; $cwd =~ m{^(.+)/glue/perl$} or die "Can't find base directory"; my $base_dir = $1; my $inc_dir = "$base_dir/include"; my $lib_dir = "$base_dir/library"; my $xs_dir = "$base_dir/glue/perl/xsbuilder"; sub slurp($$) { open my $file, $_[1] or die "Can't open $_[1]: $!"; read $file, $_[0], -s $file; } sub cmp_tuples { my ($num_a, $num_b) = @_; while (@$num_a && @$num_b) { my $cmp = shift @$num_a <=> shift @$num_b; return $cmp if $cmp; } return @$num_a <=> @$num_b; } sub autoconf_foo { my ($config, $re_start, $re_end, $re_match) = @_; $$config =~ /^${re_start}APACHE2_INCLUDES${re_end}($re_match)/m or die "Can't find apache include directory"; my $apache_includes = $1; $$config =~ /^${re_start}APR_INCLUDES${re_end}($re_match)/m or die "Can't find apache include directory"; $apache_includes .= " $1"; my $apr_libs =""; $$config =~ m/^${re_start}APREQ_LIBNAME${re_end}($re_match)/m or die "Can't find apreq libname"; ## XXX: 2.60 bug/hack my $apreq_libname = $1; $$config =~ m/^${re_start}PACKAGE_VERSION${re_end}($re_match)/m or die "Can't find package version"; my $version = $1; ## Code around an autoconf 2.60 bug ## http://lists.gnu.org/archive/html/bug-autoconf/2006-06/msg00127.html ## $ grep @PACKAGE_VERSION config.status-2.59 config.status-2.60 ## config.status-2.59:s,@PACKAGE_VERSION@,2.09,;t t ## config.status-2.60:s,@PACKAGE_VERSION@,|#_!!_#|2.09,g foreach ($apache_includes, $apreq_libname, $version) { s/\|#_!!_#\|//g; } return ($apache_includes, $apr_libs, $apreq_libname, $version); } my ($apache_includes, $apache_dir, $apr_libs, $apreq_libname, $perl_lib); if (WIN32) { # XXX May need fixing, Randy! slurp my $config => "$base_dir/configure.ac"; $config =~ /^AC_INIT[^,]+,\s*([^,\s]+)/m or die "Can't find version string"; $version = $1; slurp my $make => "$base_dir/Makefile"; $make =~ /^APACHE=(\S+)/m or die "Cannot find top-level Apache directory"; ($apache_dir = $1) =~ s!\\!/!g; ($apache_includes = "-I$apache_dir" . '/include') =~ s!\\!/!g; ($apr_libs = "-L$apache_dir" . '/lib') =~ s!\\!/!g; $make =~ /^APR_LIB=(\S+)/m or die "Cannot find apr lib"; $apr_libs .= ' -l' . basename($1, '.lib'); $make =~ /^APU_LIB=(\S+)/m or die "Cannot find aprutil lib"; $apr_libs .= ' -l' . basename($1, '.lib'); $apreq_libname = 'apreq2'; $perl_lib = $Config{installsitelib} . '\auto\libaprext'; $perl_lib =~ s{\\}{\\\\}g; } else { slurp my $config => "$base_dir/config.status"; $config =~ /GNU Autoconf (\d+\.\d+)/; my $autoconf_ver = $1; ### XXX: Lord have mercy on us..... if (cmp_tuples([split /\./, $autoconf_ver], [qw(2 61)]) > 0) { ### Autoconf >=2.62 changed the format of the file ### I.E.: S["APACHE2_INCLUDES"]="-I/usr/local/include/apache2" ($apache_includes, $apr_libs, $apreq_libname, $version) = autoconf_foo(\$config, qr/S\[\"/, qr/\"\]=\"/, qr/[^\"]+/); } else { ### I.E.: s,@APACHE2_INCLUDES@,-I/usr/local/include/apache22,;t t ($apache_includes, $apr_libs, $apreq_libname, $version) = autoconf_foo(\$config, qr/s,\@/, qr/\@,/, qr/[^,]+/); } } my $apreq_libs; if (WIN32) { $apreq_libs = qq{-L$base_dir/win32/libs -llib$apreq_libname -lmod_apreq2 -L$perl_lib -llibaprext -L$apache_dir/lib -lmod_perl}; } else { my $apreq2_config = "$base_dir/apreq2-config"; my $bindir = qx{$apreq2_config --bindir}; chomp $bindir; $apreq2_config = "$bindir/apreq2-config" if $ENV{INSTALL}; $apreq_libs = qx{$apreq2_config --link-ld --ldflags --libs}; chomp $apreq_libs; } my $mp2_typemaps = Apache2::Build->new->typemaps; package My::ParseSource; use base qw/ExtUtils::XSBuilder::ParseSource/; use constant WIN32 => ($^O =~ /Win32/i); my @dirs = ("$base_dir/include", "$base_dir/module/apache2"); sub package {'APR::Request'} sub unwanted_includes {[qw/apreq_config.h apreq_private_apache2.h/]} # ParseSource.pm v 0.23 bug: line 214 should read # my @dirs = @{$self->include_dirs}; # for now, we override it here just to work around the bug sub find_includes { my $self = shift; return $self->{includes} if $self->{includes}; require File::Find; my(@dirs) = @{$self->include_dirs}; unless (-d $dirs[0]) { die "could not find include directory"; } # print "Will search @dirs for include files...\n" if ($verbose) ; my @includes; my $unwanted = join '|', @{$self -> unwanted_includes} ; for my $dir (@dirs) { File::Find::finddepth({ wanted => sub { return unless /\.h$/; return if ($unwanted && (/^($unwanted)/o)); my $dir = $File::Find::dir; push @includes, "$dir/$_"; }, follow => not WIN32, }, $dir); } return $self->{includes} = $self -> sort_includes (\@includes) ; } sub include_dirs {\@dirs} package My::WrapXS; use base qw/ExtUtils::XSBuilder::WrapXS/; our $VERSION = $version; use constant WIN32 => ($^O =~ /Win32/i); ################################################## # Finally, we get to the actual script... __PACKAGE__ -> run; my @scripts = (); use File::Spec::Functions qw(catfile); File::Find::finddepth(sub { return unless /(.*?\.pl)\.PL$/; push @scripts, "$File::Find::dir/$1"; }, '.'); Apache::TestMM::filter_args(); Apache::TestMM::generate_script("t/TEST"); Apache::TestSmokePerl->generate_script; Apache::TestReportPerl->generate_script; my %opts = ( NAME => 'libapreq2', DIR => [qw(xs)], clean => { FILES => "xs t/logs t/TEST @scripts" }, realclean => { FILES => "xsbuilder/tables" }, ); ModPerl::MM::WriteMakefile(%opts); # That's the whole script - below is just a bunch of local overrides ################################################## sub get_functions { my $self = shift; $self->{XS}->{"APR::Request::Error"} ||= []; $self->SUPER::get_functions; } sub test_docs { my ($pods, $tests) = @_; require Config; my $bin = $Config::Config{bin}; my $pod2test = catfile $bin, "pod2test"; $pod2test = Apache::TestConfig::which('pod2test') unless -e $pod2test; return "" unless $pod2test and -e $pod2test; return join "", map <, ); my @tests = @docs; s/pod$/t/ for @tests; s/^xsbuilder/xs/ for @tests; my $string = ""; my $test_docs = test_docs(\@docs, \@tests); if ($test_docs) { $string .= $test_docs; $string .= <new]} sub new_typemap {My::TypeMap->new(shift)} sub h_filename_prefix {'apreq_xs_'} sub my_xs_prefix {'apreq_xs_'} sub xs_include_dir { $xs_dir } sub mod_xs { my($self, $module, $complete) = @_; my $dirname = $self->class_dirname($module); my @parts = split '::', $module; my $mod_xs = "$dirname/$parts[-1].xs"; for ($self -> xs_include_dir, @{ $self->{glue_dirs} }) { my $file = "$_/$mod_xs"; $mod_xs = $file if $complete; return $mod_xs if -e $file; } undef; } sub mod_pm { my($self, $module, $complete) = @_; my $dirname = $self->class_dirname($module); my @parts = split '::', $module; my $mod_pm = "$dirname/$parts[-1].pm"; for ($self -> xs_include_dir, @{ $self->{glue_dirs} }) { my $file = "$_/$mod_pm"; $mod_pm = $file if $complete; return $mod_pm if -e $file; } undef; } #inline mod_xs directly, so we can put XS directives there sub write_xs { my($self, $module, $functions) = @_; my $fh = $self->open_class_file($module, '.xs'); print $fh "$self->{noedit_warning_c}\n"; my @includes = @{ $self->includes }; if (my $mod_h = $self->mod_h($module)) { push @includes, $mod_h; } for (@includes) { print $fh qq{\#include "$_"\n\n}; } if (my $mod_xs = $self->mod_xs($module, 1)) { open my $file, $mod_xs or die "can't open $mod_xs: $!"; print $fh $_ while <$file>; print $fh "\n\n"; } my $last_prefix = ""; my $fmap = $self -> typemap -> {function_map} ; my $myprefix = $self -> my_xs_prefix ; for my $func (@$functions) { my $class = $func->{class}; if ($class) { my $prefix = $func->{prefix}; $last_prefix = $prefix if $prefix; if ($func->{name} =~ /^$myprefix/o) { #e.g. mpxs_Apache__RequestRec_ my $class_prefix = $fmap -> class_c_prefix($class); if ($func->{name} =~ /$class_prefix/) { $prefix = $fmap -> class_xs_prefix($class); } } $prefix = $prefix ? " PREFIX = $prefix" : ""; print $fh "MODULE = $module PACKAGE = $class $prefix\n\n"; } print $fh $func->{code}; } if (my $destructor = $self->typemap->destructor($last_prefix)) { my $arg = $destructor->{argspec}[0]; print $fh <{name}($arg) $destructor->{class} $arg EOF } print $fh "PROTOTYPES: disabled\n\n"; print $fh "BOOT:\n"; print $fh $self->boot($module); print $fh " items = items; /* -Wall */\n\n"; if (my $newxs = $self->{newXS}->{$module}) { for my $xs (@$newxs) { print $fh qq{ cv = newXS("$xs->[0]", $xs->[1], __FILE__);\n}; print $fh qq{ GvSHARED_on(CvGV(cv));\n} if ExtUtils::XSBuilder::WrapXS::GvSHARED(); } } close $fh; } sub mod_pod { my($self, $module, $complete) = @_; my $dirname = $self->class_dirname($module); my @parts = split '::', $module; my $mod_pod = "$dirname/$parts[-1].pod"; for ($self -> xs_incsrc_dir, @{ $self->{glue_dirs} }) { my $file = "$_/$mod_pod"; $mod_pod = $file if $complete; print "mod_pod $mod_pod $file $complete\n" ; return $mod_pod if -e $file; } undef; } sub write_docs { my ($self, $module, $functions) = @_; my $podfile = $self->mod_pod($module, 1) or return; my $fh = $self->open_class_file($module, '.pod'); open my $pod, "<", $podfile or die $!; while (<$pod>) { print $fh $_; } } sub pm_text { my($self, $module, $isa, $code) = @_; my $text = <<"EOF"; $self->{noedit_warning_hash} package $module; require DynaLoader ; use strict; use warnings FATAL => 'all'; use vars qw{\$VERSION \@ISA} ; $isa push \@ISA, 'DynaLoader' ; \$VERSION = '$version'; bootstrap $module \$VERSION ; $code 1; __END__ EOF return $text; } sub makefilepl_text { my($self, $class, $deps,$typemap) = @_; my @parts = split (/::/, $class) ; my $mmargspath = '../' x @parts ; $mmargspath .= 'mmargs.pl' ; my $txt = qq{ $self->{noedit_warning_hash} use ModPerl::MM; local \$MMARGS ; if (-f '$mmargspath') { do '$mmargspath' ; die \$\@ if (\$\@) ; } \$MMARGS ||= {} ; ModPerl::MM::WriteMakefile( 'NAME' => '$class', 'VERSION' => '$version', 'TYPEMAPS' => [qw(@$mp2_typemaps $typemap)], 'INC' => "-I$base_dir/glue/perl/xs -I$inc_dir -I$xs_dir $apache_includes", 'LIBS' => "$apreq_libs $apr_libs", } ; $txt .= "'depend' => $deps,\n" if ($deps) ; $txt .= qq{ \%\$MMARGS, ); } ; } # For now, just copy the typemap file in xsbuilder til we # can remove ExtUtils::XSBuilder. sub write_typemap { my $self = shift; my $typemap = $self->typemap; my $map = $typemap->get; my %seen; my $fh = $self->open_class_file('', 'typemap'); print $fh "$self->{noedit_warning_hash}\n"; open my $tfh, "$xs_dir/typemap" or die $!; print $fh $_ while <$tfh>; } package My::TypeMap; use base 'ExtUtils::XSBuilder::TypeMap'; sub null_type { my($self, $type) = @_; my $t = $self->get->{$type}; my $class = $t -> {class} ; if ($class =~ /APREQ_COOKIE_VERSION/) { return 'APREQ_COOKIE_VERSION_DEFAULT'; } else { return $self->SUPER::null_type($type); } } # XXX this needs serious work sub typemap_code { { T_SUBCLASS => { INPUT => <<'EOT', if (SvROK($arg) || !sv_derived_from($arg, \"$Package\")) Perl_croak(aTHX_ \"Usage: argument is not a subclass of $Package\"); $var = SvPV_nolen($arg) EOT }, T_APREQ_COOKIE => { INPUT => '$var = apreq_xs_sv2cookie(aTHX_ $arg)', perl2c => 'apreq_xs_sv2cookie(aTHX_ sv)', OUTPUT => '$arg = apreq_xs_cookie2sv(aTHX_ $var, class, parent);', c2perl => 'apreq_xs_cookie2sv(aTHX_ ptr, class, parent)', }, T_APREQ_PARAM => { INPUT => '$var = apreq_xs_sv2param(aTHX_ $arg)', perl2c => 'apreq_xs_sv2param(aTHX_ sv)', OUTPUT => '$arg = apreq_xs_param2sv(aTHX_ $var, class, parent);', c2perl => 'apreq_xs_param2sv(aTHX_ ptr, class, parent)', }, T_APREQ_HANDLE => { INPUT => '$var = apreq_xs_sv2handle(aTHX_ $arg)', perl2c => 'apreq_xs_sv2handle(aTHX_ sv)', c2perl => 'apreq_xs_handle2sv(aTHX_ ptr, class, parent)', OUTPUT => '$arg = apreq_xs_handle2sv(aTHX_ $var, class, parent);', }, T_APREQ_HANDLE_CGI => { INPUT => '$var = apreq_xs_sv2handle(aTHX_ $arg)', OUTPUT => '$arg = apreq_xs_handle2sv(aTHX_ $var, class, SvRV(ST(1)));' }, T_APREQ_HANDLE_APACHE2 => { INPUT => '$var = apreq_xs_sv2handle(aTHX_ $arg)', OUTPUT => <<'EOT', $arg = apreq_xs_handle2sv(aTHX_ $var, class, SvRV(ST(1))); SvMAGIC(SvRV($arg))->mg_ptr = (void *)r; EOT }, T_APREQ_ERROR => { INPUT => '$var = (HV *)SvRV($arg)', OUTPUT => '$arg = sv_bless(newRV_noinc((SV*)$var), gv_stashpvn(\"${ntype}\", sizeof(\"${ntype}\") - 1, FALSE);' }, T_HASHOBJ => { INPUT => <<'EOT', # '$var = modperl_hash_tied_object(aTHX_ \"${ntype}\", $arg)' if (sv_derived_from($arg, \"${ntype}\")) { if (SVt_PVHV == SvTYPE(SvRV($arg))) { SV *hv = SvRV($arg); MAGIC *mg; if (SvMAGICAL(hv)) { if ((mg = mg_find(hv, PERL_MAGIC_tied))) { $var = (void *)MgObjIV(mg); } else { Perl_warn(aTHX_ \"Not a tied hash: (magic=%c)\", mg); $var = NULL; } } else { Perl_warn(aTHX_ \"SV is not tied\"); $var = NULL; } } else { $var = (void *)SvObjIV($arg); } } else { Perl_croak(aTHX_ \"argument is not a blessed reference \" \"(expecting an %s derived object)\", \"${ntype}\"); } EOT OUTPUT => <<'EOT', # '$arg = modperl_hash_tie(aTHX_ \"${ntype}\", $arg, $var);' { SV *hv = (SV*)newHV(); SV *rsv = $arg; sv_setref_pv(rsv, \"${ntype}\", $var); sv_magic(hv, rsv, PERL_MAGIC_tied, Nullch, 0); $arg = SvREFCNT_inc(sv_bless(sv_2mortal(newRV_noinc(hv)), gv_stashpv(\"${ntype}\", TRUE))); } EOT }, } } libapreq2-2.13/glue/perl/README0000644000076400017500000000765211473532340015104 0ustar issacissacTo parse the libapreq headers into xsbuilder/tables: % perl ../../build/xsbuilder.pl run To build the xs/ directory and configure the tests: % perl Makefile.PL -apxs /path/to/apache2/bin/apxs To run the test suite: % make test DEVELOPER NOTES APR::Request::* should be a simple translation of the apreq C API: apreq_handle_t -> APR::Request-derived instance. apreq_module_t -> APR::Request-derived class. apreq_param_t -> APR::Request::Param apreq_cookie_t -> APR::Request::Cookie apreq_parser_t -> APR::Request::Parser (todo) apreq_hook_t -> APR::Request::Hook (todo) -------------------------------------------------- Current APR:: module breakdown -------------------------------------------------- APR::Request subs: encode decode methods: parse read_limit brigade_limit temp_dir header_in header_out jar_status args_status body_status param_status disable_uploads missing: add_hook (requires APR::Request::Hook) parser (requires APR::Request::Parser) ================================================== APR::Request::CGI @ISA=(APR::Request) method: param ctor: new ================================================== APR::Request::Apache2 @ISA=(APR::Request) method: param ctor: new ================================================== APR::Request::Error @ISA=(APR::Error, APR::Request) subs: strerror ================================================== APR::Request::Cookie provides: APR::Request::jar() APR::Request::Cookie::Table methods: get, FETCH FIRSTKEY, NEXTKEY cookie_class missing: rest of const apr_table_t * API (do, etc) methods: name value secure version is_tainted as_string bake bake2 expires path domain port comment commentURL freeze thaw bind_handle ctor: new ================================================== APR::Request::Param provides: APR::Request::args() APR::Request::body() APR::Request::param() APR::Request::params() APR::Request::Param::Table methods: get, FETCH FIRSTKEY, NEXTKEY param_class uploads do missing: rest of const apr_table_t * API APR::Request::Brigade methods: TIEHANDLE, new READ READLINE APR::Request::Brigade::IO read readline methods: name value info upload upload_link upload_slurp upload_size upload_type upload_tempname upload_io upload_fh -------------------------------------------------- Current (pure-perl) Apache2:: module breakdown -------------------------------------------------- Apache2::Request @ISA=(Apache2::RequestRec, APR::Request::Apache2) ctor: new methods: instance (deprecated, ok to remove this) disable_uploads missing: hook_data upload_hook 2.04-deltas: env() removed params() method inherited from APR::Request; not deprecated anymore. parms() removed status() removed. args() needs to become Apache2::RequestRec::args!!! The args() change probably deserves a runtime warning in 2.05-dev. ================================================== Apache2::Cookie @ISA=(APR::Request::Cookie) provides: Apache2::Cookie::Jar @ISA=(APR::Request::Apache2) methods: cookies status subs: encode decode methods: new fetch set_attr freeze thaw value 2.04-deltas: env() removed ================================================== Apache2::Upload @ISA=(APR::Request::Param) provides: Apache2::Request::upload methods: slurp type size link tempname fh io filename bb (need to deprecate this) 2.04-deltas: Apache::Upload::Brigade is now APR::Request::Brigade. libapreq2-2.13/glue/perl/t/apreq/big_input.t0000644000076400017500000000350511473532340017735 0ustar issacissacuse strict; use warnings FATAL => 'all'; # test the processing of variations of the key lengths and the keys # numbers use Apache::Test; use Apache::TestUtil; use Apache::TestRequest qw(GET_BODY POST_BODY); my $module = 'TestApReq::big_input'; my $location = Apache::TestRequest::module2url($module); my @key_len = (5, 100, 305); my @key_num = (5, 15, 26); my @keys = ('a'..'z'); my @big_key_len = (100, 500, 5000, 10000); my @big_key_num = (5, 15, 25); my @big_keys = ('a'..'z'); plan tests => @key_len * @key_num + @big_key_len * @big_key_num, need_lwp; # GET my $len = 0; for my $key_len (@key_len) { for my $key_num (@key_num) { my @query = (); for my $key (@keys[0..($key_num-1)]) { my $pair = "$key=" . 'd' x $key_len; $len += length $pair; push @query, $pair; } my $query = join "&", @query; $len += @query - 1; # the stick with two ends one '&' char off my $body = GET_BODY "$location?$query"; t_debug "# of keys : $key_num, key_len $key_len"; ok t_cmp($body, ( ($key_len + 3) * $key_num - 1), "GET long query"); } } # POST $len = 0; for my $big_key_len (@big_key_len) { for my $big_key_num (@big_key_num) { my @query = (); for my $big_key (@big_keys[0..($big_key_num-1)]) { my $pair = "$big_key=" . 'd' x $big_key_len; $len += length $pair; push @query, $pair; } my $query = join "&", @query; $len += @query - 1; # the stick with two ends one '&' char off my $body = POST_BODY $location, content => $query; t_debug "# of keys : $big_key_num, key_len $big_key_len"; ok t_cmp($body, ( ($big_key_len + 3) * $big_key_num - 1), "POST big data"); } } libapreq2-2.13/glue/perl/t/apreq/cgi.t0000644000076400017500000002406211473532340016520 0ustar issacissacuse strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil qw(t_cmp t_debug t_write_perl_script); use Apache::TestConfig; use Apache::TestRequest qw(GET_BODY UPLOAD_BODY GET_BODY_ASSERT POST_BODY GET_RC GET_HEAD); use constant WIN32 => Apache::TestConfig::WIN32; use Cwd; require File::Basename; my @key_len = (5, 100, 305); my @key_num = (5, 15, 26); my @keys = ('a'..'z'); my $cwd = getcwd(); my %types = (perl => 'application/octet-stream'); my $vars = Apache::Test::vars; my $perlpod = $vars->{perlpod}; if (-d $perlpod) { opendir(my $dh, $perlpod); my @files = grep { /\.(pod|pm)$/ } readdir $dh; closedir $dh; if (scalar @files > 0) { my $file = $files[0]; $types{$file} = 'text/*'; } } my @names = sort keys %types; my @methods = sort qw/slurp fh tempname link io/; my $cgi = File::Spec->catfile(Apache::Test::vars('serverroot'), qw(cgi-bin test_cgi.pl)); t_write_perl_script($cgi, ); ######################################################### # uncomment the following to test larger keys my @big_key_len = (100, 500, 5000, 10000); # if the above is uncommented, comment out the following #my @big_key_len = (100, 500, 1000, 2500); ######################################################### my @big_key_num = (5, 15, 25); my @big_keys = ('a'..'z'); plan tests => 10 + @key_len * @key_num + @big_key_len * @big_key_num + 4 * @names * @methods, need_lwp && need_cgi; require HTTP::Cookies; my $location = '/cgi-bin'; my $script = $location . '/test_cgi.pl'; my $line_end = WIN32 ? "\r\n" : "\n"; my $filler = "0123456789" x 6400; # < 64K # GET for my $key_len (@key_len) { for my $key_num (@key_num) { my @query = (); my $len = 0; for my $key (@keys[0..($key_num-1)]) { my $pair = "$key=" . 'd' x $key_len; $len += length($pair) - 1; push @query, $pair; } my $query = join ";", @query; t_debug "# of keys : $key_num, key_len $key_len"; my $body = GET_BODY "$script?$query"; ok t_cmp($body, $len, "GET long query"); } } # POST for my $big_key_len (@big_key_len) { for my $big_key_num (@big_key_num) { my @query = (); my $len = 0; for my $big_key (@big_keys[0..($big_key_num-1)]) { my $pair = "$big_key=" . 'd' x $big_key_len; $len += length($pair) - 1; push @query, $pair; } my $query = join ";", @query; t_debug "# of keys : $big_key_num, big_key_len $big_key_len"; my $body = POST_BODY($script, content => $query); ok t_cmp($body, $len, "POST big data"); } } ok t_cmp(POST_BODY("$script?foo=1", Content => $filler), "\tfoo => 1$line_end", "simple post"); ok t_cmp(GET_BODY("$script?foo=%3F&bar=hello+world"), "\tfoo => ?$line_end\tbar => hello world$line_end", "simple get"); my $body = POST_BODY($script, content => "aaa=$filler;foo=1;bar=2;filler=$filler"); ok t_cmp($body, "\tfoo => 1$line_end\tbar => 2$line_end", "simple post"); $body = POST_BODY("$script?foo=1", content => "intro=$filler&bar=2&conclusion=$filler"); ok t_cmp($body, "\tfoo => 1$line_end\tbar => 2$line_end", "simple post"); $body = UPLOAD_BODY("$script?foo=1", content => $filler); ok t_cmp($body, "\tfoo => 1$line_end", "simple upload"); { my $test = 'netscape'; my $key = 'apache'; my $value = 'ok'; my $cookie = qq{$key=$value}; ok t_cmp(GET_BODY("$script?test=$test&key=$key", Cookie => $cookie), $value, $test); } { my $test = 'rfc'; my $key = 'apache'; my $value = 'ok'; my $cookie = qq{\$Version="1"; $key="$value"; \$Path="$location"}; ok t_cmp(GET_BODY("$script?test=$test&key=$key", Cookie => $cookie), qq{"$value"}, $test); } { my $test = 'encoded value with space'; my $key = 'apache'; my $value = 'okie dokie'; my $cookie = "$key=" . join '', map {/ / ? '+' : sprintf '%%%.2X', ord} split //, $value; ok t_cmp(GET_BODY("$script?test=$test&key=$key", Cookie => $cookie), $value, $test); } { my $test = 'bake'; my $key = 'apache'; my $value = 'ok'; my $cookie = "$key=$value"; my ($header) = GET_HEAD("$script?test=$test&key=$key", Cookie => $cookie) =~ /^#Set-Cookie:\s+(.+)/m; ok t_cmp($header, $cookie, $test); } { my $test = 'bake2'; my $key = 'apache'; my $value = 'ok'; my $cookie = qq{\$Version="1"; $key="$value"; \$Path="$location"}; my ($header) = GET_HEAD("$script?test=$test&key=$key", Cookie => $cookie) =~ /^#Set-Cookie2:\s+(.+)/m; ok t_cmp($header, qq{$key="$value"; Version=1; path="$location"}, $test); } # file upload tests foreach my $name (@names) { my $url = ( ($name =~ /\.(pod|pm)$/) ? "getfiles-perl-pod/" : "/getfiles-binary-" ) . $name; my $content = GET_BODY_ASSERT($url); my $path = File::Spec->catfile($cwd, 't', $name); open my $fh, ">", $path or die "Cannot open $path: $!"; binmode $fh; print $fh $content; close $fh; } eval {require Digest::MD5;}; my $has_md5 = $@ ? 0 : 1; foreach my $file( map {File::Spec->catfile($cwd, 't', $_)} @names) { my $size = -s $file; my $cs = $has_md5 ? cs($file) : 0; my $basename = File::Basename::basename($file); for my $method ( @methods) { my $result = UPLOAD_BODY("$script?method=$method;has_md5=$has_md5", filename => $file); $result =~ s{\r}{}g; my %h = map {$_;} split /[=&;]/, $result, -1; $h{type}=~s{^text/.+}{text/*}; ok t_cmp($h{type}, $types{$basename}, "'type' test for $method on $basename"); ok t_cmp($h{filename}, $basename, "'filename' test for $method on $basename"); ok t_cmp($h{size}, $size, "'size' test for $method on $basename"); ok t_cmp($h{md5}, $cs, "'checksum' test for $method on $basename"); } unlink $file if -f $file; } sub cs { my $file = shift; open my $fh, '<', $file or die qq{Cannot open "$file": $!}; binmode $fh; my $md5 = Digest::MD5->new->addfile($fh)->hexdigest; close $fh; return $md5; } __DATA__ use strict; use File::Basename; use warnings FATAL => 'all'; use blib; use APR; use APR::Pool; use APR::Request::Param; use APR::Request::Cookie; use APR::Request::CGI; use File::Spec; require File::Basename; my $p = APR::Pool->new(); apreq_log("Creating APR::Request::CGI object"); my $req = APR::Request::CGI->handle($p); my $foo = $req->param("foo"); my $bar = $req->param("bar"); my $test = $req->param("test"); my $key = $req->param("key"); my $method = $req->param("method"); if ($foo || $bar) { print "Content-Type: text/plain\n\n"; if ($foo) { apreq_log("foo => $foo"); print "\tfoo => $foo\n"; } if ($bar) { apreq_log("bar => $bar"); print "\tbar => $bar\n"; } } elsif ($test && $key) { my $jar = $req->jar; $jar->cookie_class("APR::Request::Cookie"); my %cookies = %$jar; apreq_log("Fetching cookie $key"); if ($cookies{$key}) { if ($test eq "bake") { printf "Set-Cookie: %s\n", $cookies{$key}->as_string; } elsif ($test eq "bake2") { printf "Set-Cookie2: %s\n", $cookies{$key}->as_string; } print "Content-Type: text/plain\n\n"; print APR::Request::decode($cookies{$key}->value); } } elsif ($method) { my $temp_dir = File::Spec->tmpdir; my $has_md5 = $req->args('has_md5'); require Digest::MD5 if $has_md5; my $body = $req->body; $body->param_class("APR::Request::Param"); my ($param) = values %{$body->uploads($p)}; my $type = $param->upload_type; my $basename = File::Basename::basename($param->upload_filename); my ($data, $fh); if ($method eq 'slurp') { $param->upload_slurp($data); } elsif ($method eq 'fh') { read $param->upload_fh, $data, $param->upload_size; } elsif ($method eq 'tempname') { my $name = $param->upload_tempname; open $fh, "<", $name or die "Can't open $name: $!"; binmode $fh; read $fh, $data, $param->upload_size; close $fh; } elsif ($method eq 'link') { my $link_file = File::Spec->catfile($temp_dir, "linkfile"); unlink $link_file if -f $link_file; $param->upload_link($link_file) or die "Can't link to $link_file: $!"; open $fh, "<", $link_file or die "Can't open $link_file: $!"; binmode $fh; read $fh, $data, $param->upload_size; close $fh; unlink $link_file if -f $link_file; } elsif ($method eq 'io') { read $param->upload_io, $data, $param->upload_size; } else { die "unknown method: $method"; } my $temp_file = File::Spec->catfile($temp_dir, $basename); unlink $temp_file if -f $temp_file; open my $wfh, ">", $temp_file or die "Can't open $temp_file: $!"; binmode $wfh; print $wfh $data; close $wfh; my $cs = $has_md5 ? cs($temp_file) : 0; my $size = -s $temp_file; my $result = qq{type=$type;size=$size;filename=$basename;md5=$cs}; print "Content-Type: text/plain\n\n$result"; unlink $temp_file if -f $temp_file; } else { my $len = 0; print "Content-Type: text/plain\n\n"; apreq_log("Fetching all parameters"); for ($req->param) { my $param = $req->param($_); next unless $param; my $length = length($param); apreq_log("$_ has a value of length $length"); $len += length($_) + $length; } print $len; } sub apreq_log { my $msg = shift; my ($pkg, $file, $line) = caller; $file = basename($file); print STDERR "$file($line): $msg\n"; } sub cs { my $file = shift; open my $fh, '<', $file or die qq{Cannot open "$file": $!}; binmode $fh; my $md5 = Digest::MD5->new->addfile($fh)->hexdigest; close $fh; return $md5; } libapreq2-2.13/glue/perl/t/apreq/cookie.t0000644000076400017500000001231011473532340017220 0ustar issacissacuse strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use Apache::TestRequest qw(GET_BODY GET_HEAD); plan tests => 15, need_min_module_version('Apache::Test' => 1.29) || need_lwp; my $module = "TestApReq::cookie"; my $location = Apache::TestRequest::module2url($module); { my $test = 'new'; my $value = 'new'; ok t_cmp(GET_BODY("$location?test=new"), $value, $test); } { my $test = ''; my $value = 'foo=; path=/quux; domain=example.com'; my ($header) = (GET_HEAD("$location?test=$test") =~ /^#Set-Cookie:\s+(.+)/m) ; ok t_cmp($header, $value, $test); } { my $test = 'bake'; my $value = 'foo=bake; path=/quux; domain=example.com'; my ($header) = (GET_HEAD("$location?test=bake") =~ /^#Set-Cookie:\s+(.+)/m) ; ok t_cmp($header, $value, $test); } { my $test = 'new'; my $value = 'new'; ok t_cmp(GET_BODY("$location?test=new;expires=%2B3M"), $value, $test); } { my $test = 'netscape'; my $key = 'apache'; my $value = 'ok'; my $cookie = qq{$key=$value}; ok t_cmp(GET_BODY("$location?test=$test&key=$key", Cookie => $cookie), $value, $test); } { my $test = 'rfc'; my $key = 'apache'; my $value = 'ok'; my $cookie = qq{\$Version="1"; $key="$value"; \$Path="$location"}; ok t_cmp(GET_BODY("$location?test=$test&key=$key", Cookie => $cookie), qq{"$value"}, $test); } { my $test = 'encoded value with space'; my $key = 'apache'; my $value = 'okie dokie'; my $cookie = "$key=" . join '', map {/ / ? '+' : sprintf '%%%.2X', ord} split //, $value; ok t_cmp(GET_BODY("$location?test=$test&key=$key", Cookie => $cookie), $value, $test); } { my $test = 'bake'; my $key = 'apache'; my $value = 'ok'; my $cookie = "$key=$value"; my ($header) = GET_HEAD("$location?test=$test&key=$key", Cookie => $cookie) =~ /^#Set-Cookie:\s+(.+)/m; ok t_cmp($header, $cookie, $test); } { my $test = 'bake2'; my $key = 'apache'; my $value = 'ok'; my $cookie = qq{\$Version="1"; $key="$value"; \$Path="$location"}; my ($header) = GET_HEAD("$location?test=$test&key=$key", Cookie => $cookie) =~ /^#Set-Cookie2:\s+(.+)/m; ok t_cmp($header, qq{$key="$value"; Version=1; path="$location"}, $test); } { my $test = 'cookies'; my $key = 'first'; my $cookie1 = qq{\$Version="1"; one="1"}; my $cookie2 = qq{\$Version="1"; two="2"}; my $cookie3 = qq{\$Version="1"; three="3"}; my $cookie4 = qq{\$Version="1"; two="22"}; my $value = qq{one="1"; Version=1}; my $str = GET_BODY("$location?test=$test&key=$key", Cookie => $cookie1, Cookie => $cookie2, Cookie => $cookie3, Cookie => $cookie4, ); ok t_cmp($str, $value, $test); } { my $test = 'cookies'; my $key = 'all'; my $cookie1 = qq{\$Version="1"; one="1"}; my $cookie2 = qq{\$Version="1"; two="2"}; my $cookie3 = qq{\$Version="1"; three="3"}; my $cookie4 = qq{\$Version="1"; two="22"}; my $value = qq{two="2"; Version=1 two="22"; Version=1}; my $str = GET_BODY("$location?test=$test&key=$key", Cookie => $cookie1, Cookie => $cookie2, Cookie => $cookie3, Cookie => $cookie4, ); ok t_cmp($str, $value, $test); } { my $test = 'cookies'; my $key = 'name'; my $cookie1 = qq{\$Version="1"; one="1"}; my $cookie2 = qq{\$Version="1"; two="2"}; my $cookie3 = qq{\$Version="1"; three="3"}; my $cookie4 = qq{\$Version="1"; two="22"}; my $value = qq{one two three two}; my $str = GET_BODY("$location?test=$test&key=$key", Cookie => $cookie1, Cookie => $cookie2, Cookie => $cookie3, Cookie => $cookie4, ); ok t_cmp($str, $value, $test); } { my $test = 'overload'; my $cookie = qq{\$Version="1"; one="1"}; my $value = qq{one="1"; Version=1}; my $str = GET_BODY("$location?test=$test", Cookie => $cookie); ok t_cmp($str, $value, $test); } { my $test = 'wordpress'; my $cookie = qq{wordpressuser_c580712eb86cad2660b3601ac04202b2=admin;} . qq{wordpresspass_c580712eb86cad2660b3601ac04202b2=7ebeeed42ef50} . qq{720940f5b8db2f9db49; rs_session=59ae9b8b503e3af7d17b97e7} . qq{f77f7ea5; dbx-postmeta=grabit=0-,1-,2-,3-,4-,5-,6-&a} .qq {dvancedstuff=0-,1+,2-}; my $value = qq{ok}; my $str = GET_BODY("$location?test=$test", Cookie => $cookie); ok t_cmp($str, $value, $test); } { my $test = 'httponly'; my $key = 'apache'; my $value = 'ok'; my $cookie = "foo=$test; path=/quux; domain=example.com; HttpOnly"; my ($header) = GET_HEAD("$location?test=$test&key=$key") =~ /^#Set-Cookie:\s+(.+)/m; ok t_cmp($header, $cookie, $test); } libapreq2-2.13/glue/perl/t/apreq/cookie2.t0000644000076400017500000000040111473532340017300 0ustar issacissacuse strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use Apache::TestRequest; my $module = 'TestApReq::cookie2'; my $url = Apache::TestRequest::module2url($module); t_debug "connecting to $url"; print GET_BODY_ASSERT $url; libapreq2-2.13/glue/perl/t/apreq/inherit.t0000644000076400017500000000120311473532340017410 0ustar issacissacuse strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use Apache::TestRequest qw(GET_BODY UPLOAD_BODY); plan tests => 4, need_lwp; my $module = 'TestApReq::inherit'; my $location = Apache::TestRequest::module2url($module); my @response = split/\r?\n/, GET_BODY($location, Cookie=>"apache=2"); ok t_cmp($response[0], "method => GET", "inherit method"); ok t_cmp($response[1], "cookie => apache=2", "inherit cookie"); ok t_cmp($response[2], "DESTROYING TestApReq::inherit object", "first object cleanup"); ok t_cmp($response[3], "DESTROYING TestApReq::inherit object", "second object cleanup"); libapreq2-2.13/glue/perl/t/apreq/request.t0000644000076400017500000000264011473532340017444 0ustar issacissacuse strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use Apache::TestRequest qw(GET_BODY UPLOAD_BODY); plan tests => 18, need_lwp; my $module = 'TestApReq::request'; my $location = Apache::TestRequest::module2url($module); #print GET_BODY $location; { # basic param() test my $test = 'param'; my $value = '42.5'; ok t_cmp(GET_BODY("$location?test=$test&value=$value"), $value, "basic param"); } for my $test (qw/slurp bb tempname link fh io bad;query=string%%/) { # upload a string as a file my $value = ('DataUpload' x 10 . "\n") x 1_000; my $result = UPLOAD_BODY("$location?test=$test", content => $value); ok t_cmp($result, $value, "basic upload"); my $i; for ($i = 0; $i < length $value; ++$i) { last if substr($value,$i,1) ne substr($result,$i,1); } ok t_cmp($i, length($value), "basic upload length"); } { my $value = 'DataUpload' x 100; my $result = UPLOAD_BODY("$location?test=type", content => $value); ok t_cmp($result, "text/plain", "type"); } { my $value = 'DataUpload' x 100; my $result = UPLOAD_BODY("$location?test=hook", content => $value); ok t_cmp($result, $value, "hook"); } { my $value = 'DataUpload' x 100; my $result = UPLOAD_BODY("$location?test=disable_uploads;foo=bar1;foo=bar2", content => $value); ok t_cmp($result, "ok", "disabled uploads"); } libapreq2-2.13/glue/perl/t/apreq/upload.t0000644000076400017500000000471311473532340017243 0ustar issacissacuse strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use Apache::TestRequest qw(UPLOAD_BODY GET_BODY_ASSERT); use Cwd; require File::Basename; use Apache::TestConfig; use constant WIN32 => Apache::TestConfig::WIN32; my $cwd = getcwd(); my $module = 'TestApReq::upload'; my $location = Apache::TestRequest::module2url($module); my %types = (httpd => 'application/octet-stream'); # for some reason, using the perl binary for uploads # on Win32 appears to cause seemingly random stray # temp files to be left. unless (WIN32) { $types{perl} = 'application/octet-stream'; } my $vars = Apache::Test::vars; my $perlpod = $vars->{perlpod}; if (-d $perlpod) { opendir(my $dh, $perlpod); my @files = grep { /\.(pod|pm)$/ } readdir $dh; closedir $dh; if (scalar @files > 1) { for my $i (0 .. 1) { my $file = $files[$i]; $types{$file} = 'text/*'; } } } my @names = sort keys %types; my @methods = sort qw/slurp fh tempname link io/; plan tests => 4 * @names * @methods, need_lwp; foreach my $name (@names) { my $url = ( ($name =~ /\.(pod|pm)$/) ? "getfiles-perl-pod/" : "/getfiles-binary-" ) . $name; my $content = GET_BODY_ASSERT($url); my $path = File::Spec->catfile($cwd, 't', $name); open my $fh, ">", $path or die "Cannot open $path: $!"; binmode $fh; print $fh $content; close $fh; } eval {require Digest::MD5;}; my $has_md5 = $@ ? 0 : 1; foreach my $file( map {File::Spec->catfile($cwd, 't', $_)} @names) { my $size = -s $file; my $cs = $has_md5 ? cs($file) : 0; my $basename = File::Basename::basename($file); for my $method ( @methods) { my $result = UPLOAD_BODY("$location?method=$method;has_md5=$has_md5", filename => $file); my %h = map {$_;} split /[=&;]/, $result, -1; $h{type}=~s{^text/.+}{text/*}; ok t_cmp($h{type}, $types{$basename}, "'type' test for $method on $basename"); ok t_cmp($h{filename}, $basename, "'filename' test for $method on $basename"); ok t_cmp($h{size}, $size, "'size' test for $method on $basename"); ok t_cmp($h{md5}, $cs, "'checksum' test for $method on $basename"); } unlink $file if -f $file; } sub cs { my $file = shift; open my $fh, '<', $file or die qq{Cannot open "$file": $!}; binmode $fh; my $md5 = Digest::MD5->new->addfile($fh)->hexdigest; close $fh; return $md5; } libapreq2-2.13/glue/perl/t/conf/extra.conf.in0000644000076400017500000000046311473532340020004 0ustar issacissac PassEnv PERL5LIB ScriptAlias /cgi-bin/ "@ServerRoot@/cgi-bin/" LockFile @ServerRoot@/logs/accept.lock AllowOverride None Options None libapreq2-2.13/glue/perl/t/response/TestAPI/cookie.pm0000644000076400017500000000356711473532340021406 0ustar issacissacpackage TestAPI::cookie; push our @ISA, "APR::Request::Cookie"; use strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use APR::Request::Cookie; use APR::Request::Apache2; use APR::Table; sub handler { my $r = shift; plan $r, tests => 31; $r->headers_in->{Cookie} = "foo=1;bar=2;foo=3;quux=4"; my $req = APR::Request::Apache2->handle($r); ok defined $req->jar; ok t_cmp $req->jar("foo"), 1, "scalar jar(foo)"; ok t_cmp $req->jar("bar"), 2, "scalar jar(bar)"; ok t_cmp $req->jar("quux"), 4, "scalar jar(quux)"; my @rv = $req->jar("foo"); ok t_cmp "@rv", "1 3", "list jar(foo)"; @rv = $req->jar("bar"); ok t_cmp "@rv", "2", "list jar(bar)"; @rv = $req->jar("quux"); ok t_cmp "@rv", "4", "list jar(quux)"; my $jar = $req->jar(); ok $jar->isa("APR::Request::Cookie::Table"); ok t_cmp $jar->{foo}, 1, '$jar->{foo} == 1'; ok t_cmp $jar->{bar}, 2, '$jar->{bar} == 2'; ok t_cmp $jar->{quux}, 4, '$jar->{quux} == 4'; my @k = qw/foo bar foo quux/; my @v = 1..4; ok t_cmp join(" ", keys %$jar), "foo bar foo quux", 'keys %$jar'; ok t_cmp join(" ", values %$jar), "1 2 3 4", 'values %$jar'; ok t_cmp join (" ", each %$jar), "$k[$_] $v[$_]", 'each %$jar: ' . $_ for 0..3; ok t_cmp join(" ", $jar->get("foo")), "1 3", '$jar->get("foo")'; ok $jar == $jar->cookie_class("APR::Request::Cookie"); ok t_cmp $_->is_tainted, 1, "is tainted: $_" for values %$jar; $_->is_tainted(0) for values %$jar; ok t_cmp $_->is_tainted, 0, "not tainted: $_" for values %$jar; eval { $jar->cookie_class("APR::Request::Param") }; ok t_cmp $@, qr/^Usage/, "Bad class name"; ok t_cmp $jar->cookie_class(), "APR::Request::Cookie", "old class"; ok t_cmp $jar->cookie_class(__PACKAGE__), $jar, "class upgrade"; ok $jar->{foo}->isa(__PACKAGE__); return 0; } 1; libapreq2-2.13/glue/perl/t/response/TestAPI/error.pm0000644000076400017500000000073111473532340021254 0ustar issacissacpackage TestAPI::error; use strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use APR::Request::Apache2; use APR::Request::Error qw/GENERAL TAINTED/; sub handler { my $r = shift; plan $r, tests => 3; my $req = APR::Request::Apache2->handle($r); ok $req->isa("APR::Request"); # XXX export some constants, and test apreq_xs_strerror ok TAINTED > GENERAL; ok GENERAL eq "Internal apreq error"; return 0; } 1; libapreq2-2.13/glue/perl/t/response/TestAPI/module.pm0000644000076400017500000000141311473532340021406 0ustar issacissacpackage TestAPI::module; use strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use APR::Request::Apache2; sub handler { my $r = shift; plan $r, tests => 9; my $req = APR::Request::Apache2->handle($r); ok $req->isa("APR::Request::Apache2"); ok t_cmp $req->brigade_limit, 256 * 1024, "default brigade limit is 256K"; ok $req->brigade_limit(1024); ok t_cmp $req->brigade_limit, 1024, "brigade_limit reset to 1K"; ok $req->read_limit(1024 * 1024); ok t_cmp $req->read_limit, 1024 * 1024, "read_limit reset to 1M"; ok not defined $req->temp_dir; ok $req->temp_dir("/tmp"); ok t_cmp $req->temp_dir, "/tmp", "temp dir reset to /tmp"; # XXX parse, header_in & header_out tests return 0; } 1; libapreq2-2.13/glue/perl/t/response/TestAPI/param.pm0000644000076400017500000000356611473532340021234 0ustar issacissacpackage TestAPI::param; push our @ISA, "APR::Request::Param"; use strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use APR::Request::Param; use APR::Request::Apache2; sub handler { my $r = shift; plan $r, tests => 31; $r->args("foo=1;bar=2;foo=3;quux=4"); my $req = APR::Request::Apache2->handle($r); ok defined $req->args; ok t_cmp $req->args("foo"), 1, "scalar args(foo)"; ok t_cmp $req->args("bar"), 2, "scalar args(bar)"; ok t_cmp $req->args("quux"), 4, "scalar args(quux)"; my @rv = $req->args("foo"); ok t_cmp "@rv", "1 3", "list args(foo)"; @rv = $req->args("bar"); ok t_cmp "@rv", "2", "list args(bar)"; @rv = $req->args("quux"); ok t_cmp "@rv", "4", "list args(quux)"; my $args = $req->args(); ok $args->isa("APR::Request::Param::Table"); ok t_cmp $args->{foo}, 1, '$args->{foo} == 1'; ok t_cmp $args->{bar}, 2, '$args->{bar} == 2'; ok t_cmp $args->{quux}, 4, '$args->{quux} == 4'; my @k = qw/foo bar foo quux/; my @v = 1..4; ok t_cmp join(" ", keys %$args), "foo bar foo quux", 'keys %$args'; ok t_cmp join(" ", values %$args), "1 2 3 4", 'values %$args'; ok t_cmp join (" ", each %$args), "$k[$_] $v[$_]", 'each %$args: ' . $_ for 0..3; ok t_cmp join(" ", $args->get("foo")), "1 3", '$args->get("foo")'; ok $args == $args->param_class("APR::Request::Param"); ok t_cmp $_->is_tainted, 1, "is tainted: $_" for values %$args; $_->is_tainted(0) for values %$args; ok t_cmp $_->is_tainted, 0, "not tainted: $_" for values %$args; eval { $args->param_class("APR::Request::Cookie") }; ok t_cmp $@, qr/^Usage/, "Bad class name"; ok t_cmp $args->param_class(), "APR::Request::Param", "old class"; ok t_cmp $args->param_class(__PACKAGE__), $args, "class upgrade"; ok $args->{foo}->isa(__PACKAGE__); return 0; } 1; libapreq2-2.13/glue/perl/t/response/TestApReq/big_input.pm0000644000076400017500000000110411473532340022475 0ustar issacissacpackage TestApReq::big_input; use strict; use warnings FATAL => 'all'; use Apache2::Request (); use Apache2::RequestIO; use Apache2::RequestRec; use Apache2::Const -compile => qw(OK); sub handler { my $r = shift; my $req = Apache2::Request->new($r); my $len = 0; for ($req->param) { my $val = $req->param($_) || ''; $len += length($_) + length($val) + 2; # +2 ('=' and '&') } $len--; # the stick with two ends one '&' char off $req->content_type('text/plain'); $req->print($len); return Apache2::Const::OK; } 1; __END__ libapreq2-2.13/glue/perl/t/response/TestApReq/cookie.pm0000644000076400017500000000427111473532340021776 0ustar issacissacpackage TestApReq::cookie; use strict; use warnings FATAL => 'all'; use Apache2::RequestIO (); use Apache2::RequestRec (); use Apache2::Const -compile => qw(OK); use Apache2::Cookie (); use Apache2::Request (); sub handler { my $r = shift; my $req = Apache2::Request->new($r); my %cookies = eval { Apache2::Cookie->fetch($r) }; $r->content_type('text/plain'); my $test = $req->APR::Request::args('test'); my $key = $req->APR::Request::args('key'); if ($test eq 'cookies') { my $jar = Apache2::Cookie::Jar->new($r); if ($key eq 'first') { my $cookie = $jar->cookies('one'); $r->print($cookie->as_string()); } elsif ($key eq 'all') { my @cookies = $jar->cookies('two'); $r->print(join ' ', map { $_->as_string() } @cookies); } else { my @names = $jar->cookies(); $r->print(join ' ', map { $_ } @names); } } elsif ($test eq 'overload') { $r->print($cookies{one}); } elsif ($test eq 'wordpress') { $r->print("ok") if $@; } elsif ($key and $cookies{$key}) { if ($test eq "bake") { $cookies{$key}->bake($r); } elsif ($test eq "bake2") { $cookies{$key}->bake2($r); } $r->print($cookies{$key}->value); } else { my @expires; @expires = ("expires", $req->APR::Request::args('expires')) if $req->APR::Request::args('expires'); my $cookie = Apache2::Cookie->new($r, name => "foo", value => $test, domain => "example.com", path => "/quux", @expires); if ($test eq "bake" or $test eq "") { $cookie->bake($req); } elsif ($test eq "bake2") { $cookie->version(1); $cookie->bake2($req); } elsif ($test eq 'httponly'){ $cookie->httponly(1); $cookie->bake($req); } $r->print($cookie->value); } return Apache2::Const::OK; } 1; __END__ libapreq2-2.13/glue/perl/t/response/TestApReq/cookie2.pm0000644000076400017500000000255311473532340022061 0ustar issacissacpackage TestApReq::cookie2; use strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use Apache2::RequestRec (); use Apache2::Const -compile => qw(OK); use Apache2::Cookie (); sub handler { my $r = shift; plan $r, tests => 5; { my $cookie = Apache2::Cookie->new($r, name => 'n', value => undef); ok t_cmp( $cookie, undef, "value => undef return undef not a cookie" ); } { my $cookie = Apache2::Cookie->new($r, name => 'n'); ok t_cmp( $cookie, undef, "no value attribute specified" ); } { my $cookie = Apache2::Cookie->new($r, name => 'n', value => ''); ok t_cmp( $cookie, "n=", "'' returns a valid cookie object" ); } { my $cookie = Apache2::Cookie->new($r, name => 'n', value => []); ok t_cmp( $cookie, "n=", "value => [] returns a valid cookie object" ); } { my $cookie = Apache2::Cookie->new($r, name => 'n', value => {}); ok t_cmp( $cookie, "n=", "value => {} returns a valid cookie object" ); } return Apache2::Const::OK; } 1; __END__ libapreq2-2.13/glue/perl/t/response/TestApReq/inherit.pm0000644000076400017500000000140011473532340022156 0ustar issacissacpackage TestApReq::inherit; use Apache2::Cookie; use base qw/Apache2::Request Apache2::Cookie::Jar/; use strict; use warnings FATAL => 'all'; use APR; use Apache2::RequestRec; use Apache2::RequestIO; use Apache2::Const -compile => qw(OK); sub handler { my $r = shift; $r = __PACKAGE__->new($r); # tickles refcnt bug in apreq-1 die "Wrong package: ", ref $r unless $r->isa('TestApReq::inherit'); $r->content_type('text/plain'); # look for segfault when $r->isa("Apache2::Request") my $req = bless { r => $r }; $req->printf("method => %s\n", $req->method); $req->printf("cookie => %s\n", $req->cookies->{"apache"}->as_string); return Apache2::Const::OK; } sub DESTROY { $_[0]->print("DESTROYING ", __PACKAGE__, " object\n") } 1; libapreq2-2.13/glue/perl/t/response/TestApReq/request.pm0000644000076400017500000001341611473532340022216 0ustar issacissacpackage TestApReq::request; use strict; use warnings FATAL => 'all'; use Apache2::RequestRec; use Apache2::RequestIO; use Apache2::Request (); use Apache2::Connection; use Apache2::Upload; use APR::Pool; use APR::Bucket; use APR::PerlIO; use Apache2::ServerUtil; use File::Spec; use Apache2::Const -compile => qw(OK); my $data; sub hook { my ($upload, $buffer) = @_; warn "$upload saw EOS" and return unless defined $buffer; $data .= $buffer; } sub handler { my $r = shift; my $temp_dir = File::Spec->catfile(Apache2::ServerUtil::server_root, 'logs'); my $req = Apache2::Request->new($r, POST_MAX => 1_000_000, TEMP_DIR => $temp_dir); # $req->temp_dir($temp_dir); # $req->read_limit(1_000_000); $req->content_type('text/plain'); my $test = $req->APR::Request::args('test'); my $method = $r->method; if ($test eq 'param') { my $table = $req->APR::Request::args(); my $value = $req->param('value'); $req->print($value); } elsif ($test eq 'slurp') { my ($upload) = values %{$req->upload}; $upload->slurp(my $data); if ($upload->size != length $data) { $req->print("Size mismatch: size() reports ", $upload->size, " but slurp() length is ", length $data, "\n"); } $req->print($data); } elsif ($test eq 'bb') { my ($upload) = $req->upload("HTTPUPLOAD"); my $bb = $upload->bb; my $e = $bb->first; while ($e) { $e->read(my $buf); $req->print($buf); $e = $bb->next($e); } } elsif ($test eq 'tempname') { my $upload = $req->upload("HTTPUPLOAD"); my $name = $upload->tempname; my ($dir) = $name =~ /^(.+)apreq\w{6}$/; chop $dir; die "Tempfile in wrong temp_dir (expected $temp_dir, saw $dir)" unless $dir eq $temp_dir; open my $fh, "<", $name or die "Can't open $name: $!"; $r->print(<$fh>); } elsif ($test eq 'link') { my $upload = $req->upload("HTTPUPLOAD"); my $link_file = File::Spec->catfile("$temp_dir", "linktest"); unlink $link_file if -f $link_file; $upload->link($link_file) or die "Can't link to $link_file: $!"; open my $fh, "<", $link_file or die "Can't open $link_file: $!"; $r->print(<$fh>); } elsif ($test eq 'fh') { my $upload = $req->upload(($req->upload)[0]); my $fh = $upload->fh; read $upload->fh, my $fh_contents, $upload->size; $upload->slurp(my $slurp_data); die 'fh contents != slurp data' unless $fh_contents eq $slurp_data; read $fh, $fh_contents, $upload->size; die '$fh contents != slurp data' unless $fh_contents eq $slurp_data; seek $fh, 0, 0; $r->print(<$fh>); } elsif ($test eq 'io') { my $upload = $req->upload(($req->upload)[0]); my $io = $upload->io; read $upload->io, my $io_contents, $upload->size; $upload->slurp(my $slurp_data); die "io contents != slurp data" unless $io_contents eq $slurp_data; undef $io_contents; $upload->io->read($io_contents, $upload->size); die "io contents != slurp data" unless $io_contents eq $slurp_data; my $bb = $upload->bb; my $e = $bb->first; my $bb_contents = ""; while ($e) { $e->read(my $buf); $bb_contents .= $buf; $e = $bb->next($e); } die "io contents != brigade contents" unless $io_contents eq $bb_contents; $r->print(<$io>); } elsif ($test eq 'bad') { eval {my $q = $req->APR::Request::args('query')}; if (ref $@ && $@->isa("APR::Request::Error")) { $req->upload("HTTPUPLOAD")->slurp(my $data); $req->print($data); } } elsif ($test eq 'hook') { $data = ""; $req->upload_hook(\&hook); $req->parse; $r->print($data); } elsif ($test eq 'type') { my $upload = $req->upload("HTTPUPLOAD"); die "content-type mismatch" unless $upload->info->{"Content-Type"} eq $upload->type; $r->print($upload->type); } elsif ($test eq 'disable_uploads') { $req->disable_uploads(1); eval {my $upload = $req->upload('HTTPUPLOAD')}; if (ref $@ eq "APR::Request::Error") { my $args = $@->{_r}->APR::Request::args('test'); # checks _r is an object ref my $upload = $@->body('HTTPUPLOAD'); # no exception this time! die "args test failed" unless $args eq $test; $args = $@->APR::Request::args; my $test_string = ""; # MAGIC ITERATOR TESTS if ($^V ge v5.8.0) { warn "Running MAGIC ITERATOR tests"; $test_string .= "$a=$b;" while ($a, $b) = each %$args; die "each test failed: '$test_string'" unless $test_string eq "test=disable_uploads;foo=bar1;foo=bar2;"; $test_string = join ":", values %$args; die "values test failed: '$test_string'" unless $test_string eq "disable_uploads:bar1:bar2"; $test_string = join ":", %$args; die "list deref test failed: '$test_string'" unless $test_string eq "test:disable_uploads:foo:bar1:foo:bar2"; } # TABLE DO TESTS { my $do_data = ""; $args->do( sub { $do_data .= "@_"; 1 } ); die "do() test failed: '$do_data'" unless $do_data eq "test disable_uploadsfoo bar1foo bar2"; } $req->print("ok"); } } return Apache2::Const::OK; } 1; __END__ libapreq2-2.13/glue/perl/t/response/TestApReq/upload.pm0000644000076400017500000000443011473532340022006 0ustar issacissacpackage TestApReq::upload; use strict; use warnings FATAL => 'all'; use Apache2::RequestRec; use Apache2::RequestIO; use Apache2::Request (); use Apache2::Upload; use Apache2::Const -compile => qw(OK); use File::Spec; require File::Basename; sub handler { my $r = shift; my $req = Apache2::Request->new($r); my $temp_dir = File::Spec->tmpdir; my $method = $req->APR::Request::args('method'); my $has_md5 = $req->APR::Request::args('has_md5'); require Digest::MD5 if $has_md5; my $upload = $req->upload(($req->upload)[0]); my $type = $upload->type; my $basename = File::Basename::basename($upload->filename); my ($data, $fh); if ($method eq 'slurp') { $upload->slurp($data); } elsif ($method eq 'fh') { read $upload->fh, $data, $upload->size; } elsif ($method eq 'tempname') { my $name = $upload->tempname; open $fh, "<", $name or die "Can't open $name: $!"; binmode $fh; read $fh, $data, $upload->size; close $fh; } elsif ($method eq 'link') { my $link_file = File::Spec->catfile($temp_dir, "linkfile"); unlink $link_file if -f $link_file; $upload->link($link_file) or die "Can't link to $link_file: $!"; open $fh, "<", $link_file or die "Can't open $link_file: $!"; binmode $fh; read $fh, $data, $upload->size; close $fh; unlink $link_file if -f $link_file; } elsif ($method eq 'io') { read $upload->io, $data, $upload->size; } else { die "unknown method: $method"; } my $temp_file = File::Spec->catfile($temp_dir, $basename); unlink $temp_file if -f $temp_file; open my $wfh, ">", $temp_file or die "Can't open $temp_file: $!"; binmode $wfh; print $wfh $data; close $wfh; my $cs = $has_md5 ? cs($temp_file) : 0; $req->content_type('text/plain'); my $size = -s $temp_file; my $result = qq{type=$type;size=$size;filename=$basename;md5=$cs}; $r->print($result); unlink $temp_file if -f $temp_file; return Apache2::Const::OK; } sub cs { my $file = shift; open my $fh, '<', $file or die qq{Cannot open "$file": $!}; binmode $fh; my $md5 = Digest::MD5->new->addfile($fh)->hexdigest; close $fh; return $md5; } 1; __END__ libapreq2-2.13/glue/perl/t/TEST.PL0000644000076400017500000000221511473532340015471 0ustar issacissac#!perl use strict; use warnings FATAL => 'all'; use Apache2::Build; use constant WIN32 => Apache2::Build::WIN32; use Cwd; my $cwd = WIN32 ? Win32::GetLongPathName(cwd) : cwd; $cwd =~ m{^(.+)/glue/perl$} or die "Can't find base cvs directory"; my $base_dir = $1; my $module_dir = "$base_dir/module"; my $mod_apreq2_dir = Apache2::Build::WIN32 ? "$base_dir/win32/libs" : "$module_dir/apache2/.libs"; use base 'Apache::TestRunPerl'; main::->new->run(@ARGV); sub pre_configure { my $self = shift; # Don't load an installed mod_apreq Apache::TestConfig::autoconfig_skip_module_add('mod_apreq.c'); Apache::TestConfig::autoconfig_skip_module_add('mod_apreq2.c'); $self->SUPER::pre_configure(); } sub configure_modperl { my $self = shift; my $cfg = $self->{test_config}; # make sure Win32 uses the just-built libapreq2.dll if (WIN32) { my $library_dir = $mod_apreq2_dir; $cfg->preamble(qq{LoadFile "$library_dir/libapreq2.dll"\n}); } $cfg->preamble(IfModule => '!mod_apreq2.c', qq(LoadModule apreq_module "$mod_apreq2_dir/mod_apreq2.so"\n)); $self->SUPER::configure_modperl(); } libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Apache2/Apache2.pm0000644000076400017500000000005511473532337023337 0ustar issacissacuse APR::Request; push @ISA, "APR::Request"; libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Apache2/Apache2.pod0000644000076400017500000000276111473532337023513 0ustar issacissac=for testing ok(1); =head1 NAME APR::Request::Apache2 - wrapper for a mod_apreq2 handle. =head1 SYNOPSIS use APR::Request::Apache2; my $req = APR::Request::Apache2->handle($r); =head1 DESCRIPTION The APR::Request::Apache2 module provides a constructor for interfacing with the mod_apreq2 Apache module. This manpage documents version 2.13 of the APR::Request::Apache2 package. =head1 METHODS APR::Request::Apache2 - derived from C<< APR::Request >>. =head2 handle APR::Request::Apache2->handle($r) Creates an APR::Request::Apache2 object. The argument C<< $r >> is an Apache2::RequestRec object (from mod_perl2). =head1 SEE ALSO L<< APR::Request >>, L<< Apache2::RequestRec >>. =head1 COPYRIGHT 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. libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Apache2/Apache2.xs0000644000076400017500000000067711473532337023367 0ustar issacissacMODULE = APR::Request::Apache2 PACKAGE = APR::Request::Apache2 BOOT: { apr_version_t version; apr_version(&version); if (version.major != APR_MAJOR_VERSION) Perl_croak(aTHX_ "Can't load module APR::Request::Apache2 : " "wrong libapr major version " "(expected %d, saw %d)", APR_MAJOR_VERSION, version.major); } libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Apache2/APR__Request__Apache2.h0000644000076400017500000000002611473532337025660 0ustar issacissac#include "mod_perl.h" libapreq2-2.13/glue/perl/xsbuilder/APR/Request/APR__Request.h0000644000076400017500000004575311473532337022753 0ustar issacissac#include "apreq_xs_tables.h" MP_STATIC XS(apreq_xs_jar) { dXSARGS; apreq_handle_t *req; SV *obj; IV iv; if (items == 0 || items > 2 || !SvROK(ST(0)) || !sv_derived_from(ST(0), "APR::Request")) Perl_croak(aTHX_ "Usage: APR::Request::jar($req [,$name])"); obj = apreq_xs_sv2object(aTHX_ ST(0), HANDLE_CLASS, 'r'); iv = SvIVX(obj); req = INT2PTR(apreq_handle_t *, iv); if (items == 2 && GIMME_V == G_SCALAR) { apreq_cookie_t *c = apreq_jar_get(req, SvPV_nolen(ST(1))); if (c != NULL) { ST(0) = apreq_xs_cookie2sv(aTHX_ c, NULL, obj); sv_2mortal(ST(0)); XSRETURN(1); } else { const apr_table_t *t; apr_status_t s; s = apreq_jar(req, &t); if (apreq_module_status_is_error(s) && !sv_derived_from(ST(0), ERROR_CLASS)) apreq_xs_croak(aTHX_ newHV(), obj, s, "APR::Request::jar", ERROR_CLASS); XSRETURN_UNDEF; } } else { struct apreq_xs_do_arg d = {NULL, NULL, NULL, aTHX}; const apr_table_t *t; apr_status_t s; s = apreq_jar(req, &t); if (apreq_module_status_is_error(s) && !sv_derived_from(ST(0), ERROR_CLASS)) apreq_xs_croak(aTHX_ newHV(), obj, s, "APR::Request::jar", ERROR_CLASS); if (t == NULL) XSRETURN_EMPTY; d.pkg = NULL; d.parent = obj; switch (GIMME_V) { case G_ARRAY: XSprePUSH; PUTBACK; if (items == 1) apr_table_do(apreq_xs_cookie_table_keys, &d, t, NULL); else apr_table_do(apreq_xs_cookie_table_values, &d, t, SvPV_nolen(ST(1)), NULL); return; case G_SCALAR: ST(0) = apreq_xs_cookie_table2sv(aTHX_ t, COOKIE_TABLE_CLASS, obj, NULL, 0); sv_2mortal(ST(0)); XSRETURN(1); default: XSRETURN(0); } } } MP_STATIC XS(apreq_xs_args) { dXSARGS; apreq_handle_t *req; SV *obj; IV iv; if (items == 0 || items > 2 || !SvROK(ST(0)) || !sv_derived_from(ST(0), HANDLE_CLASS)) Perl_croak(aTHX_ "Usage: APR::Request::args($req [,$name])"); obj = apreq_xs_sv2object(aTHX_ ST(0), HANDLE_CLASS, 'r'); iv = SvIVX(obj); req = INT2PTR(apreq_handle_t *, iv); if (items == 2 && GIMME_V == G_SCALAR) { apreq_param_t *p = apreq_args_get(req, SvPV_nolen(ST(1))); if (p != NULL) { ST(0) = apreq_xs_param2sv(aTHX_ p, NULL, obj); sv_2mortal(ST(0)); XSRETURN(1); } else { const apr_table_t *t; apr_status_t s; s = apreq_args(req, &t); if (apreq_module_status_is_error(s) && !sv_derived_from(ST(0), ERROR_CLASS)) apreq_xs_croak(aTHX_ newHV(), obj, s, "APR::Request::args", ERROR_CLASS); XSRETURN_UNDEF; } } else { struct apreq_xs_do_arg d = {NULL, NULL, NULL, aTHX}; const apr_table_t *t; apr_status_t s; s = apreq_args(req, &t); if (apreq_module_status_is_error(s) && !sv_derived_from(ST(0), ERROR_CLASS)) apreq_xs_croak(aTHX_ newHV(), obj, s, "APR::Request::args", ERROR_CLASS); if (t == NULL) XSRETURN_EMPTY; d.pkg = NULL; d.parent = obj; switch (GIMME_V) { case G_ARRAY: XSprePUSH; PUTBACK; if (items == 1) apr_table_do(apreq_xs_param_table_keys, &d, t, NULL); else apr_table_do(apreq_xs_param_table_values, &d, t, SvPV_nolen(ST(1)), NULL); return; case G_SCALAR: ST(0) = apreq_xs_param_table2sv(aTHX_ t, PARAM_TABLE_CLASS, obj, NULL, 0); sv_2mortal(ST(0)); XSRETURN(1); default: XSRETURN(0); } } } MP_STATIC XS(apreq_xs_body) { dXSARGS; apreq_handle_t *req; SV *obj; IV iv; if (items == 0 || items > 2 || !SvROK(ST(0)) || !sv_derived_from(ST(0),HANDLE_CLASS)) Perl_croak(aTHX_ "Usage: APR::Request::body($req [,$name])"); obj = apreq_xs_sv2object(aTHX_ ST(0), HANDLE_CLASS, 'r'); iv = SvIVX(obj); req = INT2PTR(apreq_handle_t *, iv); if (items == 2 && GIMME_V == G_SCALAR) { apreq_param_t *p = apreq_body_get(req, SvPV_nolen(ST(1))); if (p != NULL) { ST(0) = apreq_xs_param2sv(aTHX_ p, NULL, obj); sv_2mortal(ST(0)); XSRETURN(1); } else { const apr_table_t *t; apr_status_t s; s = apreq_body(req, &t); if (apreq_module_status_is_error(s) && !sv_derived_from(ST(0), ERROR_CLASS)) apreq_xs_croak(aTHX_ newHV(), obj, s, "APR::Request::body", ERROR_CLASS); XSRETURN_UNDEF; } } else { struct apreq_xs_do_arg d = {NULL, NULL, NULL, aTHX}; const apr_table_t *t; apr_status_t s; s = apreq_body(req, &t); if (apreq_module_status_is_error(s) && !sv_derived_from(ST(0), ERROR_CLASS)) apreq_xs_croak(aTHX_ newHV(), obj, s, "APR::Request::body", ERROR_CLASS); if (t == NULL) XSRETURN_EMPTY; d.pkg = NULL; d.parent = obj; switch (GIMME_V) { case G_ARRAY: XSprePUSH; PUTBACK; if (items == 1) apr_table_do(apreq_xs_param_table_keys, &d, t, NULL); else apr_table_do(apreq_xs_param_table_values, &d, t, SvPV_nolen(ST(1)), NULL); return; case G_SCALAR: ST(0) = apreq_xs_param_table2sv(aTHX_ t, PARAM_TABLE_CLASS, obj, NULL, 0); sv_2mortal(ST(0)); XSRETURN(1); default: XSRETURN(0); } } } MP_STATIC XS(apreq_xs_param) { dXSARGS; apreq_handle_t *req; SV *obj; IV iv; if (items == 0 || items > 2 || !SvROK(ST(0)) || !sv_derived_from(ST(0), "APR::Request")) Perl_croak(aTHX_ "Usage: APR::Request::param($req [,$name])"); obj = apreq_xs_sv2object(aTHX_ ST(0), HANDLE_CLASS, 'r'); iv = SvIVX(obj); req = INT2PTR(apreq_handle_t *, iv); if (items == 2 && GIMME_V == G_SCALAR) { apreq_param_t *p = apreq_param(req, SvPV_nolen(ST(1))); if (p != NULL) { ST(0) = apreq_xs_param2sv(aTHX_ p, NULL, obj); sv_2mortal(ST(0)); XSRETURN(1); } else { XSRETURN_UNDEF; } } else { struct apreq_xs_do_arg d = {NULL, NULL, NULL, aTHX}; const apr_table_t *t; d.pkg = NULL; d.parent = obj; switch (GIMME_V) { case G_ARRAY: XSprePUSH; PUTBACK; if (items == 1) { apreq_args(req, &t); if (t != NULL) apr_table_do(apreq_xs_param_table_keys, &d, t, NULL); apreq_body(req, &t); if (t != NULL) apr_table_do(apreq_xs_param_table_keys, &d, t, NULL); } else { char *val = SvPV_nolen(ST(1)); apreq_args(req, &t); if (t != NULL) apr_table_do(apreq_xs_param_table_values, &d, t, val, NULL); apreq_body(req, &t); if (t != NULL) apr_table_do(apreq_xs_param_table_values, &d, t, val, NULL); } return; case G_SCALAR: t = apreq_params(req, req->pool); if (t == NULL) XSRETURN_UNDEF; ST(0) = apreq_xs_param_table2sv(aTHX_ t, PARAM_TABLE_CLASS, obj, NULL, 0); sv_2mortal(ST(0)); XSRETURN(1); default: XSRETURN(0); } } } MP_STATIC XS(apreq_xs_parse) { dXSARGS; apreq_handle_t *req; apr_status_t s; const apr_table_t *t; if (items != 1 || !SvROK(ST(0))) Perl_croak(aTHX_ "Usage: APR::Request::parse($req)"); req = apreq_xs_sv2handle(aTHX_ ST(0)); XSprePUSH; EXTEND(SP, 3); s = apreq_jar(req, &t); PUSHs(sv_2mortal(apreq_xs_error2sv(aTHX_ s))); s = apreq_args(req, &t); PUSHs(sv_2mortal(apreq_xs_error2sv(aTHX_ s))); s = apreq_body(req, &t); PUSHs(sv_2mortal(apreq_xs_error2sv(aTHX_ s))); PUTBACK; } struct hook_ctx { SV *hook; SV *bucket_data; SV *parent; PerlInterpreter *perl; }; #define DEREF(slot) if (ctx->slot) SvREFCNT_dec(ctx->slot) static apr_status_t upload_hook_cleanup(void *ctx_) { struct hook_ctx *ctx = ctx_; #ifdef USE_ITHREADS dTHXa(ctx->perl); #endif DEREF(hook); DEREF(bucket_data); DEREF(parent); return APR_SUCCESS; } APR_INLINE static apr_status_t eval_upload_hook(pTHX_ apreq_param_t *upload, struct hook_ctx *ctx) { dSP; SV *sv = ctx->bucket_data; PUSHMARK(SP); EXTEND(SP, 2); ENTER; SAVETMPS; sv = apreq_xs_param2sv(aTHX_ upload, PARAM_CLASS, ctx->parent); PUSHs(sv_2mortal(sv)); PUSHs(ctx->bucket_data); PUTBACK; perl_call_sv(ctx->hook, G_EVAL|G_DISCARD); FREETMPS; LEAVE; if (SvTRUE(ERRSV)) { Perl_warn(aTHX_ "Upload hook failed: %s", SvPV_nolen(ERRSV)); return APREQ_ERROR_GENERAL; } return APR_SUCCESS; } static apr_status_t apreq_xs_upload_hook(APREQ_HOOK_ARGS) { struct hook_ctx *ctx = hook->ctx; /* ctx set during $req->config */ apr_bucket *e; apr_status_t s = APR_SUCCESS; #ifdef USE_ITHREADS dTHXa(ctx->perl); #endif if (bb == NULL) { if (hook->next) return apreq_hook_run(hook->next, param, bb); return APR_SUCCESS; } for (e = APR_BRIGADE_FIRST(bb); e!= APR_BRIGADE_SENTINEL(bb); e = APR_BUCKET_NEXT(e)) { apr_size_t len; const char *data; if (APR_BUCKET_IS_EOS(e)) { /*last call on this upload */ SV *sv = ctx->bucket_data; ctx->bucket_data = &PL_sv_undef; s = eval_upload_hook(aTHX_ param, ctx); ctx->bucket_data = sv; if (s != APR_SUCCESS) return s; break; } s = apr_bucket_read(e, &data, &len, APR_BLOCK_READ); if (s != APR_SUCCESS) { s = APR_SUCCESS; continue; } sv_setpvn(ctx->bucket_data, data, (STRLEN)len); s = eval_upload_hook(aTHX_ param, ctx); if (s != APR_SUCCESS) return s; } if (hook->next) s = apreq_hook_run(hook->next, param, bb); return s; } static int apreq_xs_cookie_table_do_sub(void *data, const char *key, const char *val) { struct apreq_xs_do_arg *d = data; apreq_cookie_t *c = apreq_value_to_cookie(val); dTHXa(d->perl); dSP; SV *sv = apreq_xs_cookie2sv(aTHX_ c, d->pkg, d->parent); int rv; ENTER; SAVETMPS; PUSHMARK(SP); EXTEND(SP,2); PUSHs(sv_2mortal(newSVpvn(c->v.name, c->v.nlen))); PUSHs(sv_2mortal(sv)); PUTBACK; rv = call_sv(d->sub, G_SCALAR); SPAGAIN; rv = (1 == rv) ? POPi : 1; PUTBACK; FREETMPS; LEAVE; return rv; } MP_STATIC XS(apreq_xs_cookie_table_do) { dXSARGS; struct apreq_xs_do_arg d = { NULL, NULL, NULL, aTHX }; const apr_table_t *t; int i, rv = 1; SV *sv, *t_obj; IV iv; MAGIC *mg; if (items < 2 || !SvROK(ST(0)) || !SvROK(ST(1))) Perl_croak(aTHX_ "Usage: $object->do(\\&callback, @keys)"); sv = ST(0); t_obj = apreq_xs_sv2object(aTHX_ sv, COOKIE_TABLE_CLASS, 't'); iv = SvIVX(t_obj); t = INT2PTR(const apr_table_t *, iv); mg = mg_find(t_obj, PERL_MAGIC_ext); d.parent = mg->mg_obj; d.pkg = mg->mg_ptr; d.sub = ST(1); if (items == 2) { rv = apr_table_do(apreq_xs_cookie_table_do_sub, &d, t, NULL); XSRETURN_IV(rv); } for (i = 2; i < items; ++i) { const char *key = SvPV_nolen(ST(i)); rv = apr_table_do(apreq_xs_cookie_table_do_sub, &d, t, key, NULL); if (rv == 0) break; } XSRETURN_IV(rv); } MP_STATIC XS(apreq_xs_cookie_table_FETCH) { dXSARGS; const apr_table_t *t; const char *cookie_class; SV *sv, *obj, *parent; IV iv; MAGIC *mg; if (items != 2 || !SvROK(ST(0)) || !sv_derived_from(ST(0), COOKIE_TABLE_CLASS)) Perl_croak(aTHX_ "Usage: " COOKIE_TABLE_CLASS "::FETCH($table, $key)"); sv = ST(0); obj = apreq_xs_sv2object(aTHX_ sv, COOKIE_TABLE_CLASS, 't'); iv = SvIVX(obj); t = INT2PTR(const apr_table_t *, iv); mg = mg_find(obj, PERL_MAGIC_ext); cookie_class = mg->mg_ptr; parent = mg->mg_obj; if (GIMME_V == G_SCALAR) { IV idx; const char *key, *val; const apr_array_header_t *arr; apr_table_entry_t *te; key = SvPV_nolen(ST(1)); idx = SvCUR(obj); arr = apr_table_elts(t); te = (apr_table_entry_t *)arr->elts; if (idx > 0 && idx <= arr->nelts && !strcasecmp(key, te[idx-1].key)) val = te[idx-1].val; else val = apr_table_get(t, key); if (val != NULL) { apreq_cookie_t *c = apreq_value_to_cookie(val); ST(0) = apreq_xs_cookie2sv(aTHX_ c, cookie_class, parent); sv_2mortal(ST(0)); XSRETURN(1); } else { XSRETURN_UNDEF; } } else if (GIMME_V == G_ARRAY) { struct apreq_xs_do_arg d = {NULL, NULL, NULL, aTHX}; d.pkg = cookie_class; d.parent = parent; XSprePUSH; PUTBACK; apr_table_do(apreq_xs_cookie_table_values, &d, t, SvPV_nolen(ST(1)), NULL); } else XSRETURN(0); } MP_STATIC XS(apreq_xs_cookie_table_NEXTKEY) { dXSARGS; SV *sv, *obj; IV iv, idx; const apr_table_t *t; const apr_array_header_t *arr; apr_table_entry_t *te; if (!SvROK(ST(0))) Perl_croak(aTHX_ "Usage: $table->NEXTKEY($prev)"); sv = ST(0); obj = apreq_xs_sv2object(aTHX_ sv, COOKIE_TABLE_CLASS, 't'); iv = SvIVX(obj); t = INT2PTR(const apr_table_t *, iv); arr = apr_table_elts(t); te = (apr_table_entry_t *)arr->elts; if (items == 1) SvCUR(obj) = 0; if (SvCUR(obj) >= arr->nelts) { SvCUR(obj) = 0; XSRETURN_UNDEF; } idx = SvCUR(obj)++; sv = newSVpv(te[idx].key, 0); ST(0) = sv_2mortal(sv); XSRETURN(1); } static int apreq_xs_param_table_do_sub(void *data, const char *key, const char *val) { struct apreq_xs_do_arg *d = data; apreq_param_t *p = apreq_value_to_param(val); dTHXa(d->perl); dSP; SV *sv = apreq_xs_param2sv(aTHX_ p, d->pkg, d->parent); int rv; ENTER; SAVETMPS; PUSHMARK(SP); EXTEND(SP,2); PUSHs(sv_2mortal(newSVpvn(p->v.name, p->v.nlen))); PUSHs(sv_2mortal(sv)); PUTBACK; rv = call_sv(d->sub, G_SCALAR); SPAGAIN; rv = (1 == rv) ? POPi : 1; PUTBACK; FREETMPS; LEAVE; return rv; } MP_STATIC XS(apreq_xs_param_table_do) { dXSARGS; struct apreq_xs_do_arg d = { NULL, NULL, NULL, aTHX }; const apr_table_t *t; int i, rv = 1; SV *sv, *t_obj; IV iv; MAGIC *mg; if (items < 2 || !SvROK(ST(0)) || !SvROK(ST(1))) Perl_croak(aTHX_ "Usage: $object->do(\\&callback, @keys)"); sv = ST(0); t_obj = apreq_xs_sv2object(aTHX_ sv, PARAM_TABLE_CLASS, 't'); iv = SvIVX(t_obj); t = INT2PTR(const apr_table_t *, iv); mg = mg_find(t_obj, PERL_MAGIC_ext); d.parent = mg->mg_obj; d.pkg = mg->mg_ptr; d.sub = ST(1); if (items == 2) { rv = apr_table_do(apreq_xs_param_table_do_sub, &d, t, NULL); XSRETURN_IV(rv); } for (i = 2; i < items; ++i) { const char *key = SvPV_nolen(ST(i)); rv = apr_table_do(apreq_xs_param_table_do_sub, &d, t, key, NULL); if (rv == 0) break; } XSRETURN_IV(rv); } MP_STATIC XS(apreq_xs_param_table_FETCH) { dXSARGS; const apr_table_t *t; const char *param_class; SV *sv, *t_obj, *parent; IV iv; MAGIC *mg; if (items != 2 || !SvROK(ST(0)) || !sv_derived_from(ST(0), PARAM_TABLE_CLASS)) Perl_croak(aTHX_ "Usage: " PARAM_TABLE_CLASS "::FETCH($table, $key)"); sv = ST(0); t_obj = apreq_xs_sv2object(aTHX_ sv, PARAM_TABLE_CLASS, 't'); iv = SvIVX(t_obj); t = INT2PTR(const apr_table_t *, iv); mg = mg_find(t_obj, PERL_MAGIC_ext); param_class = mg->mg_ptr; parent = mg->mg_obj; if (GIMME_V == G_SCALAR) { IV idx; const char *key, *val; const apr_array_header_t *arr; apr_table_entry_t *te; key = SvPV_nolen(ST(1)); idx = SvCUR(t_obj); arr = apr_table_elts(t); te = (apr_table_entry_t *)arr->elts; if (idx > 0 && idx <= arr->nelts && !strcasecmp(key, te[idx-1].key)) val = te[idx-1].val; else val = apr_table_get(t, key); if (val != NULL) { apreq_param_t *p = apreq_value_to_param(val); ST(0) = apreq_xs_param2sv(aTHX_ p, param_class, parent); sv_2mortal(ST(0)); XSRETURN(1); } else { XSRETURN_UNDEF; } } else if (GIMME_V == G_ARRAY) { struct apreq_xs_do_arg d = {NULL, NULL, NULL, aTHX}; d.pkg = param_class; d.parent = parent; XSprePUSH; PUTBACK; apr_table_do(apreq_xs_param_table_values, &d, t, SvPV_nolen(ST(1)), NULL); } else XSRETURN(0); } MP_STATIC XS(apreq_xs_param_table_NEXTKEY) { dXSARGS; SV *sv, *obj; IV iv, idx; const apr_table_t *t; const apr_array_header_t *arr; apr_table_entry_t *te; if (!SvROK(ST(0)) || !sv_derived_from(ST(0), PARAM_TABLE_CLASS)) Perl_croak(aTHX_ "Usage: " PARAM_TABLE_CLASS "::NEXTKEY($table, $key)"); sv = ST(0); obj = apreq_xs_sv2object(aTHX_ sv, PARAM_TABLE_CLASS,'t'); iv = SvIVX(obj); t = INT2PTR(const apr_table_t *, iv); arr = apr_table_elts(t); te = (apr_table_entry_t *)arr->elts; if (items == 1) SvCUR(obj) = 0; if (SvCUR(obj) >= arr->nelts) { SvCUR(obj) = 0; XSRETURN_UNDEF; } idx = SvCUR(obj)++; sv = newSVpv(te[idx].key, 0); ST(0) = sv_2mortal(sv); XSRETURN(1); } libapreq2-2.13/glue/perl/xsbuilder/APR/Request/CGI/CGI.pm0000644000076400017500000000007411473532337021636 0ustar issacissacuse APR::Request; use APR::Pool; push @ISA, "APR::Request"; libapreq2-2.13/glue/perl/xsbuilder/APR/Request/CGI/CGI.pod0000644000076400017500000000274411473532337022012 0ustar issacissac=for testing require APR::Request::CGI; ok(1); =head1 NAME APR::Request::CGI - wrapper for libapreq2's CGI handle. =head1 SYNOPSIS use APR::Request::CGI; my $req = APR::Request::CGI->handle($pool); =head1 DESCRIPTION The APR::Request::CGI module provides a constructor for accessing CGI request data associated to a pool via libapreq2. This manpage documents version 2.13 of the APR::Request::CGI package. =head1 METHODS APR::Request::CGI - derived from C<< APR::Request >>. =head2 handle APR::Request::CGI->handle($pool) Creates an APR::Request::CGI object. The argument C<< $pool >> is an APR::Pool object. =head1 SEE ALSO L<< APR::Request >>, L<< APR::Pool >>. =head1 COPYRIGHT 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. libapreq2-2.13/glue/perl/xsbuilder/APR/Request/CGI/CGI.xs0000644000076400017500000000110611473532337021651 0ustar issacissacstatic apr_pool_t *apreq_xs_cgi_global_pool; MODULE = APR::Request::CGI PACKAGE = APR::Request::CGI BOOT: { apr_version_t version; apr_version(&version); if (version.major != APR_MAJOR_VERSION) Perl_croak(aTHX_ "Can't load module APR::Request::CGI : " "wrong libapr major version " "(expected %d, saw %d)", APR_MAJOR_VERSION, version.major); } apr_pool_create(&apreq_xs_cgi_global_pool, NULL); apreq_initialize(apreq_xs_cgi_global_pool); libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Cookie/APR__Request__Cookie.h0000644000076400017500000000174111473532337025601 0ustar issacissacMP_STATIC XS(XS_APR__Request__Cookie_nil) { dXSARGS; (void)items; XSRETURN_EMPTY; } static char *apreq_xs_cookie_pool_copy(pTHX_ SV *obj, SV *value) { IV iv; STRLEN vlen; char *v; MAGIC *mg; apr_pool_t *p; SV *parent; if (!SvOK(value)) return NULL; v = SvPV(value, vlen); mg = mg_find(obj, PERL_MAGIC_ext); iv = SvIVX(mg->mg_obj); /* The parent of a cookie can be a either handle or a pool. * Pool-type parents arise from make(), and are expected to * reflect the typical usage for apreq_xs_cookie_pool_copy. */ parent = sv_2mortal(newRV_inc(mg->mg_obj)); if (sv_derived_from(parent, "APR::Pool")) p = INT2PTR(apr_pool_t *, iv); else if (sv_derived_from(parent, "APR::Request")) p = (INT2PTR(apreq_handle_t *, iv))->pool; else croak("Pool not found: unrecognized parent class %s", HvNAME(SvSTASH(mg->mg_obj))); return apr_pstrmemdup(p, v, vlen); } libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Cookie/Cookie.pm0000644000076400017500000000111611473532337023252 0ustar issacissacpackage APR::Request::Cookie; use APR::Request; sub new { my ($class, $pool, %attrs) = @_; my $name = delete $attrs{name}; my $value = delete $attrs{value}; $name = delete $attrs{-name} unless defined $name; $value = delete $attrs{-value} unless defined $value; return unless defined $name and defined $value; my $cookie = $class->make($pool, $name, $class->freeze($value)); while(my ($k, $v) = each %attrs) { $k =~ s/^-//; $cookie->$k($v); } return $cookie; } sub freeze { return $_[1] } sub thaw { return shift->value } libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Cookie/Cookie.pod0000644000076400017500000002060011473532337023417 0ustar issacissac=head1 NAME APR::Request::Cookie - wrapper for libapreq2's cookie API. =for testing use APR::Pool; use APR::Brigade; use APR::Bucket; use APR::BucketAlloc; use APR::Request; use APR::Request::Parser; $pool = APR::Pool->new; $ba = APR::BucketAlloc->new($pool); $bb = APR::Brigade->new($pool, $ba); $bb->insert_tail(APR::Bucket->new($ba, "alpha=body1&beta=body2;foo=body3")); $parser = APR::Request::Parser->urlencoded($pool, $ba, "application/x-www-form-urlencoded"); $req = APR::Request::Custom->handle($pool, "foo=bar", "cookie1=apache1;cookie2=apache2", $parser, 1e6, $bb); =head1 SYNOPSIS =for example begin use APR::Request::Cookie; # fetch inbound cookie $jar = $req->jar; $cookie1 = $jar->get("cookie1"); # generate new cookie $cookie = APR::Request::Cookie->new($req->pool, name => "foo", value => "bar", domain => "capricorn.com"); print "$cookie"; # prints "bar" $cookie->domain("example.com"); # change domains $cookie->version(1); # upgrade it to conform with RFC 2109/2965. # send a response header print sprintf "Set-Cookie: %s\n", $cookie->as_string; =for example end =for example_testing ok "$cookie1" eq "apache1"; ok $jar->isa("APR::Request::Cookie::Table"); is $_STDOUT_ , qq[barSet-Cookie: foo=bar; Version=1; domain="example.com"\n]; =head1 DESCRIPTION The APR::Request::Cookie module provides base methods for interfacing with libapreq2's cookie API. It also provides a few utility functions and constants. This manpage documents version 2.13 of the APR::Request::Cookie package. =head1 OVERLOADS APR::Request::Cookie =head2 "" "$cookie" The double-quote interpolation operator maps to C<< APR::Request::Cookie::value() >>. =for example begin ok "$cookie" eq $cookie->value; =for example end =for example_testing 1; =head1 METHODS APR::Request::Cookie =head2 new APR::Request::Cookie->new($pool, name => $name, value => $value, %args) Creates a new cookie. Here C<< $pool >> is an APR::Pool object, and C<< $name >> is the cookie's name. The C<< $value >> is transformed into the cookie's raw value through the class' C<< freeze() >> method. The remaining arguments are optional: =over 4 =item -secure =item -httponly =item -version =item -path =item -domain =item -port =item -expires =item -comment =item -commentURL =back For details on these arguments, please consult the corresponding method's documentation. =head2 freeze APR::Request::Cookie->freeze($value) Class method representing the default serializer; here it returns $value unmodified. =for example begin ok "foo" eq APR::Request::Cookie->freeze("foo"); =for example end =for example_testing 1; =head2 thaw $cookie->thaw() Reverses C<< freeze() >>; here it simply returns $cookie->value since freeze() is a noop. =for example begin ok $cookie->thaw eq $cookie->value; =for example end =for example_testing 1; =head2 name $cookie->name() Fetch the cookie's name. This attribute cannot be modified and is never serialized; ie freeze() and thaw() do not act on the cookie's name. =for example begin =for example end =for example_testing is $cookie->name, "foo", "name"; =head2 value $cookie->value() Fetch the cookie's raw (frozen) value. This attribute cannot be modified. =for example begin =for example end =for example_testing is $cookie->value, "bar", "value"; =head2 secure $cookie->secure() $cookie->secure($set) Get/set the cookie's secure flag. =for example begin $cookie->secure(1); ok $cookie->secure == 1; =for example end =for example_testing $cookie->secure(0); is $cookie->secure, 0, "secure"; =head2 httponly $cookie->httponly() $cookie->httponly($set) Get/set the cookie's HttpOnly flag. =for example begin $cookie->httponly(1); ok $cookie->httponly == 1; =for example end =for example_testing $cookie->httponly(0); is $cookie->httponly, 0, "HttpOnly"; =head2 version $cookie->version() $cookie->version($set) Get/set the cookie's version number. Version 0 cookies conform to the Netscape spec; Version 1 cookies conform to either RFC 2109 or RFC 2965. =for example begin $version = $cookie->version; $cookie->version(1); ok $cookie->version == 1; =for example end =for example_testing $cookie->version($version); is $cookie->version, $version, "version"; =head2 path $cookie->path() $cookie->path($set) Get/set the cookie's path string. =for example begin $path = $cookie->path; $cookie->path("/1/2/3/4"); ok $cookie->path eq "/1/2/3/4"; =for example end =for example_testing $cookie->path($path); is $cookie->path, $path, "path"; =head2 domain $cookie->domain() $cookie->domain($set) Get/set the cookie's domain string. =for example begin $domain = $cookie->domain; $cookie->domain("apache.org"); ok $cookie->domain eq "apache.org"; =for example end =for example_testing $cookie->domain($domain); is $cookie->domain, $domain, "domain"; =head2 port $cookie->port() $cookie->port($set) Get/set the cookie's port string. Only valid for Version 1 cookies. =for example begin $port = $cookie->port; $cookie->port(8888); ok $cookie->port == 8888; =for example end =for example_testing $cookie->port($port); is $cookie->port, $port, "port"; =head2 comment $cookie->comment() $cookie->comment($set) Get/set the cookie's comment string. Only valid for Version 1 cookies. =for example begin $comment = $cookie->comment; $cookie->comment("quux"); ok $cookie->comment eq "quux"; =for example end =for example_testing $cookie->comment($comment); is $cookie->comment, $comment, "comment"; =head2 commentURL $cookie->commentURL() $cookie->commentURL($set) Get/set the cookie's commentURL string. Only valid for Version 1 cookies. =for example begin $commentURL = $cookie->commentURL; $cookie->commentURL("/foo/bar"); ok $cookie->commentURL eq "/foo/bar"; =for example end =for example_testing $cookie->commentURL($commentURL); is $cookie->commentURL, $commentURL, "commentURL"; =head2 is_tainted $cookie->is_tainted() $cookie->is_tainted($set) Get/set the cookie's internal tainted flag. =for example begin $tainted = $cookie->is_tainted; $cookie->is_tainted(1); ok $cookie->is_tainted == 1; =for example end =for example_testing $cookie->is_tainted($tainted); is $cookie->is_tainted, $tainted, "tainted"; =head2 make APR::Request::Cookie->make($pool, $name, $value) Fast XS cookie constructor invoked by C<< new() >>. The cookie's raw name & value are taken directly from the passed in arguments; no freezing/encoding is done on the $value. =head2 as_string $cookie->as_string() String representation of the cookie, suitable for inclusion in a "Set-Cookie" header. =for example begin print "Set-Cookie: ", $cookie->as_string, "\n"; =for example end =for example_testing is $_STDOUT_, qq/Set-Cookie: foo=bar; Version=1; domain="example.com"\n/, "as_string"; =head1 SUBROUTINES APR::Request::Cookie =head2 expires expires($date_string) =head1 SEE ALSO L<< Apache2::Cookie >>, L<< APR::Request >>. =head1 COPYRIGHT 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. libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Cookie/Cookie.xs0000644000076400017500000001262411473532337023276 0ustar issacissacMODULE = APR::Request::Cookie PACKAGE = APR::Request::Cookie SV * value(obj, p1=NULL, p2=NULL) APR::Request::Cookie obj SV *p1 SV *p2 PREINIT: /*nada*/ CODE: RETVAL = newSVpvn(obj->v.data, obj->v.dlen); if (apreq_cookie_is_tainted(obj)) SvTAINTED_on(RETVAL); OUTPUT: RETVAL BOOT: { apr_version_t version; apr_version(&version); if (version.major != APR_MAJOR_VERSION) Perl_croak(aTHX_ "Can't load module APR::Request::Cookie : " "wrong libapr major version " "(expected %d, saw %d)", APR_MAJOR_VERSION, version.major); } /* register the overloading (type 'A') magic */ PL_amagic_generation++; /* The magic for overload gets a GV* via gv_fetchmeth as */ /* mentioned above, and looks in the SV* slot of it for */ /* the "fallback" status. */ sv_setsv( get_sv( "APR::Request::Cookie::()", TRUE ), &PL_sv_yes ); newXS("APR::Request::Cookie::()", XS_APR__Request__Cookie_nil, file); newXS("APR::Request::Cookie::(\"\"", XS_APR__Request__Cookie_value, file); MODULE = APR::Request::Cookie PACKAGE = APR::Request::Cookie SV * name(obj) APR::Request::Cookie obj CODE: RETVAL = newSVpvn(obj->v.name, obj->v.nlen); if (apreq_cookie_is_tainted(obj)) SvTAINTED_on(RETVAL); OUTPUT: RETVAL UV secure(obj, val=NULL) APR::Request::Cookie obj SV *val CODE: RETVAL = apreq_cookie_is_secure(obj); if (items == 2) { if (SvTRUE(val)) apreq_cookie_secure_on(obj); else apreq_cookie_secure_off(obj); } OUTPUT: RETVAL UV httponly(obj, val=NULL) APR::Request::Cookie obj SV *val CODE: RETVAL = apreq_cookie_is_httponly(obj); if (items == 2) { if (SvTRUE(val)) apreq_cookie_httponly_on(obj); else apreq_cookie_httponly_off(obj); } OUTPUT: RETVAL UV version(obj, val=0) APR::Request::Cookie obj UV val CODE: RETVAL = apreq_cookie_version(obj); if (items == 2) apreq_cookie_version_set(obj, val); OUTPUT: RETVAL IV is_tainted(obj, val=NULL) APR::Request::Cookie obj SV *val PREINIT: /*nada*/ CODE: RETVAL = apreq_cookie_is_tainted(obj); if (items == 2) { if (SvTRUE(val)) apreq_cookie_tainted_on(obj); else apreq_cookie_tainted_off(obj); } OUTPUT: RETVAL char * path(cookie, path=NULL) SV *cookie SV *path PREINIT: apreq_cookie_t *c; SV *obj; IV iv; CODE: obj = apreq_xs_sv2object(aTHX_ cookie, COOKIE_CLASS, 'c'); iv = SvIVX(obj); c = INT2PTR(apreq_cookie_t *, iv); RETVAL = c->path; if (items == 2) c->path = apreq_xs_cookie_pool_copy(aTHX_ obj, path); if (RETVAL == NULL) XSRETURN_UNDEF; OUTPUT: RETVAL char * domain(cookie, domain=NULL) SV *cookie SV *domain PREINIT: apreq_cookie_t *c; SV *obj; IV iv; CODE: obj = apreq_xs_sv2object(aTHX_ cookie, COOKIE_CLASS, 'c'); iv = SvIVX(obj); c = INT2PTR(apreq_cookie_t *, iv); RETVAL = c->domain; if (items == 2) c->domain = apreq_xs_cookie_pool_copy(aTHX_ obj, domain); if (RETVAL == NULL) XSRETURN_UNDEF; OUTPUT: RETVAL char * port(cookie, port=NULL) SV *cookie SV *port PREINIT: apreq_cookie_t *c; SV *obj; IV iv; CODE: obj = apreq_xs_sv2object(aTHX_ cookie, COOKIE_CLASS, 'c'); iv = SvIVX(obj); c = INT2PTR(apreq_cookie_t *, iv); RETVAL = c->port; if (items == 2) c->port = apreq_xs_cookie_pool_copy(aTHX_ obj, port); if (RETVAL == NULL) XSRETURN_UNDEF; OUTPUT: RETVAL char * comment(cookie, comment=NULL) SV *cookie SV *comment PREINIT: apreq_cookie_t *c; SV *obj; IV iv; CODE: obj = apreq_xs_sv2object(aTHX_ cookie, COOKIE_CLASS, 'c'); iv = SvIVX(obj); c = INT2PTR(apreq_cookie_t *, iv); RETVAL = c->comment; if (items == 2) c->comment = apreq_xs_cookie_pool_copy(aTHX_ obj, comment); if (RETVAL == NULL) XSRETURN_UNDEF; OUTPUT: RETVAL char * commentURL(cookie, commentURL=NULL) SV *cookie SV *commentURL PREINIT: apreq_cookie_t *c; SV *obj; IV iv; CODE: obj = apreq_xs_sv2object(aTHX_ cookie, COOKIE_CLASS, 'c'); iv = SvIVX(obj); c = INT2PTR(apreq_cookie_t *, iv); RETVAL = c->commentURL; if (items == 2) c->commentURL = apreq_xs_cookie_pool_copy(aTHX_ obj, commentURL); if (RETVAL == NULL) XSRETURN_UNDEF; OUTPUT: RETVAL APR::Request::Cookie make(class, pool, name, val) apreq_xs_subclass_t class APR::Pool pool SV *name SV *val PREINIT: STRLEN nlen, vlen; const char *n, *v; SV *parent = SvRV(ST(1)); CODE: n = SvPV(name, nlen); v = SvPV(val, vlen); RETVAL = apreq_cookie_make(pool, n, nlen, v, vlen); if (SvTAINTED(name) || SvTAINTED(val)) apreq_cookie_tainted_on(RETVAL); OUTPUT: RETVAL SV * as_string(c) APR::Request::Cookie c PREINIT: STRLEN len; CODE: len = apreq_cookie_serialize(c, NULL, 0); RETVAL = newSV(len); SvCUR_set(RETVAL, apreq_cookie_serialize(c, SvPVX(RETVAL), len + 1)); SvPOK_on(RETVAL); if (apreq_cookie_is_tainted(c)) SvTAINTED_on(RETVAL); OUTPUT: RETVAL libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Error/APR__Request__Error.h0000644000076400017500000000013711473532337025337 0ustar issacissacMP_STATIC XS(XS_APR__Request__Error_nil) { dXSARGS; (void)items; XSRETURN_EMPTY; } libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Error/Error.pm0000644000076400017500000000011311473532337023006 0ustar issacissacuse APR::Request; use APR::Error; our @ISA = qw/APR::Error APR::Request/; libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Error/Error.pod0000644000076400017500000000371711473532337023171 0ustar issacissac=for testing ok(1); =head1 NAME APR::Request::Error - wrapper for libapreq2's error API. =head1 SYNOPSIS use APR::Request::Error; =head1 DESCRIPTION This manpage documents version 2.13 of the APR::Request::Error package. =head1 SUBROUTINES APR::Request::Error - derived from C<< APR::Request >> and C<< APR::Error >>. =head2 strerror strerror($status) Returns the apreq error string associated with a numeric C<$status> code. =head1 ERROR CONSTANTS =head2 GENERAL Internal apreq error =head2 TAINTED Attempt to perform unsafe action with tainted data =head2 BADDATA Malformed input data =head2 BADCHAR Invalid character =head2 BADSEQ Invalid byte sequence =head2 BADATTR Unrecognized attribute =head2 BADHEADER Malformed header string =head2 NODATA Missing input data =head2 NOTOKEN Expected token not present =head2 NOATTR Missing attribute =head2 NOHEADER Missing header =head2 NOPARSER Missing parser =head2 MISMATCH Conflicting information =head2 OVERLIMIT Exceeds configured maximum limit =head2 NOTEMPTY Setting already configured =head1 SEE ALSO L, L =head1 COPYRIGHT 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. libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Error/Error.xs0000644000076400017500000000660611473532337023041 0ustar issacissacMODULE = APR::Request::Error PACKAGE = APR::Request::Error SV *strerror(s) apr_status_t s CODE: RETVAL = apreq_xs_error2sv(aTHX_ s); OUTPUT: RETVAL SV *as_string(hv, p1=NULL, p2=NULL) APR::Request::Error hv SV *p1 SV *p2 PREINIT: SV **svp; CODE: svp = hv_fetch(hv, "rc", 2, FALSE); if (svp == NULL) RETVAL = &PL_sv_undef; else RETVAL = apreq_xs_error2sv(aTHX_ SvIVX(*svp)); OUTPUT: RETVAL BOOT: { apr_version_t version; apr_version(&version); if (version.major != APR_MAJOR_VERSION) Perl_croak(aTHX_ "Can't load module APR::Request::Error : " "wrong libapr major version " "(expected %d, saw %d)", APR_MAJOR_VERSION, version.major); } /* register the overloading (type 'A') magic */ PL_amagic_generation++; /* The magic for overload gets a GV* via gv_fetchmeth as */ /* mentioned above, and looks in the SV* slot of it for */ /* the "fallback" status. */ sv_setsv( get_sv( "APR::Request::Error::()", TRUE ), &PL_sv_undef ); newXS("APR::Request::Error::()", XS_APR__Request__Error_nil, file); newXS("APR::Request::Error::(\"\"", XS_APR__Request__Error_as_string, file); newCONSTSUB(PL_defstash, "APR::Request::Error::GENERAL", apreq_xs_error2sv(aTHX_ APREQ_ERROR_GENERAL)); newCONSTSUB(PL_defstash, "APR::Request::Error::TAINTED", apreq_xs_error2sv(aTHX_ APREQ_ERROR_TAINTED)); newCONSTSUB(PL_defstash, "APR::Request::Error::BADDATA", apreq_xs_error2sv(aTHX_ APREQ_ERROR_BADDATA)); newCONSTSUB(PL_defstash, "APR::Request::Error::BADCHAR", apreq_xs_error2sv(aTHX_ APREQ_ERROR_BADCHAR)); newCONSTSUB(PL_defstash, "APR::Request::Error::BADSEQ", apreq_xs_error2sv(aTHX_ APREQ_ERROR_BADSEQ)); newCONSTSUB(PL_defstash, "APR::Request::Error::BADATTR", apreq_xs_error2sv(aTHX_ APREQ_ERROR_BADATTR)); newCONSTSUB(PL_defstash, "APR::Request::Error::BADHEADER", apreq_xs_error2sv(aTHX_ APREQ_ERROR_BADHEADER)); newCONSTSUB(PL_defstash, "APR::Request::Error::BADUTF8", apreq_xs_error2sv(aTHX_ APREQ_ERROR_BADUTF8)); newCONSTSUB(PL_defstash, "APR::Request::Error::NODATA", apreq_xs_error2sv(aTHX_ APREQ_ERROR_NODATA)); newCONSTSUB(PL_defstash, "APR::Request::Error::NOTOKEN", apreq_xs_error2sv(aTHX_ APREQ_ERROR_NOTOKEN)); newCONSTSUB(PL_defstash, "APR::Request::Error::NOATTR", apreq_xs_error2sv(aTHX_ APREQ_ERROR_NOATTR)); newCONSTSUB(PL_defstash, "APR::Request::Error::NOHEADER", apreq_xs_error2sv(aTHX_ APREQ_ERROR_NOHEADER)); newCONSTSUB(PL_defstash, "APR::Request::Error::NOPARSER", apreq_xs_error2sv(aTHX_ APREQ_ERROR_NOPARSER)); newCONSTSUB(PL_defstash, "APR::Request::Error::MISMATCH", apreq_xs_error2sv(aTHX_ APREQ_ERROR_MISMATCH)); newCONSTSUB(PL_defstash, "APR::Request::Error::OVERLIMIT", apreq_xs_error2sv(aTHX_ APREQ_ERROR_OVERLIMIT)); newCONSTSUB(PL_defstash, "APR::Request::Error::UNDERLIMIT", apreq_xs_error2sv(aTHX_ APREQ_ERROR_UNDERLIMIT)); newCONSTSUB(PL_defstash, "APR::Request::Error::NOTEMPTY", apreq_xs_error2sv(aTHX_ APREQ_ERROR_NOTEMPTY)); libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Hook/Hook.pod0000644000076400017500000000366111473532337022605 0ustar issacissac=for testing ok(1); =head1 NAME APR::Request::Hook - wrapper for libapreq2's hook API. =head1 SYNOPSIS use APR::Request::Hook; =head1 DESCRIPTION This manpage documents version 2.13 of the APR::Request::Hook package. =head1 METHODS APR::Request::Hook =head2 disable_uploads APR::Request::Hook->disable_uploads($pool) APR::Request::Hook->disable_uploads($pool, $next) Hook which returns APREQ_ERROR_GENERAL if a file upload field is detected. $pool is an APR::Pool object; $next (if present) is the next APR::Request::Hook in the chain. =head2 apr_xml_parser APR::Request::Hook->apr_xml_parser($pool) APR::Request::Hook->apr_xml_parser($pool, $next) Xml parser hook. $pool is an APR::Pool object; $next (if present) is the next APR::Request::Hook in the chain. =head2 discard_brigade APR::Request::Hook->discard_brigade($pool) APR::Request::Hook->discard_brigade($pool, $next) Hook which discards the brigade it receives from the parser. $pool is an APR::Pool object; $next (if present) is the next APR::Request::Hook in the chain. =head1 SEE ALSO L<< APR::Request >>, L<< APR::Request::Parser >> =head1 COPYRIGHT 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. libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Hook/Hook.xs0000644000076400017500000000257211473532337022455 0ustar issacissacMODULE = APR::Request::Hook PACKAGE = APR::Request::Hook APR::Request::Hook make(class, pool, hook, next=NULL) apreq_xs_subclass_t class APR::Pool pool apreq_hook_function_t hook APR::Request::Hook next CODE: RETVAL = apreq_hook_make(pool, hook, next, NULL); OUTPUT: RETVAL APR::Request::Hook disable_uploads(class, pool, next=NULL) apreq_xs_subclass_t class APR::Pool pool APR::Request::Hook next CODE: RETVAL = apreq_hook_make(pool, apreq_hook_disable_uploads, next, NULL); OUTPUT: RETVAL APR::Request::Hook apr_xml_parser(class, pool, next=NULL) apreq_xs_subclass_t class APR::Pool pool APR::Request::Hook next CODE: RETVAL = apreq_hook_make(pool, apreq_hook_apr_xml_parser, next, NULL); OUTPUT: RETVAL APR::Request::Hook find_param(class, pool, name, next=NULL) apreq_xs_subclass_t class APR::Pool pool APR::Request::Hook next char *name CODE: RETVAL = apreq_hook_make(pool, apreq_hook_find_param, next, name); OUTPUT: RETVAL APR::Request::Hook discard_brigade(class, pool, next=NULL) apreq_xs_subclass_t class APR::Pool pool APR::Request::Hook next CODE: RETVAL = apreq_hook_make(pool, apreq_hook_discard_brigade, next, NULL); OUTPUT: RETVAL libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Param/APR__Request__Param.h0000644000076400017500000001301311473532337025252 0ustar issacissacMP_STATIC XS(XS_APR__Request__Param_nil) { dXSARGS; (void)items; XSRETURN_EMPTY; } APR_INLINE static SV *apreq_xs_find_bb_obj(pTHX_ SV *in) { while (in && SvROK(in)) { SV *sv = SvRV(in); switch (SvTYPE(sv)) { MAGIC *mg; case SVt_PVIO: if (SvMAGICAL(sv) && (mg = mg_find(sv, PERL_MAGIC_tiedscalar))) { in = mg->mg_obj; break; } Perl_croak(aTHX_ "panic: cannot find tied scalar in pvio magic"); case SVt_PVMG: if (SvOBJECT(sv) && SvIOKp(sv)) return sv; default: Perl_croak(aTHX_ "panic: unsupported SV type: %d", SvTYPE(sv)); } } return in; } /* XXX these Apache::Upload::Brigade funcs need a makeover as vanilla XS. */ MP_STATIC XS(apreq_xs_brigade_copy) { dXSARGS; apr_bucket_brigade *bb, *bb_copy; char *class; SV *sv, *obj; IV iv; if (items != 2 || !SvPOK(ST(0)) || !SvROK(ST(1))) Perl_croak(aTHX_ "Usage: APR::Request::Brigade->new($bb)"); class = SvPV_nolen(ST(0)); obj = apreq_xs_find_bb_obj(aTHX_ ST(1)); iv = SvIVX(obj); bb = INT2PTR(apr_bucket_brigade *, iv); bb_copy = apr_brigade_create(bb->p, bb->bucket_alloc); apreq_brigade_copy(bb_copy, bb); sv = sv_setref_pv(newSV(0), class, bb_copy); if (SvTAINTED(obj)) SvTAINTED_on(SvRV(sv)); ST(0) = sv_2mortal(sv); XSRETURN(1); } MP_STATIC XS(apreq_xs_brigade_read) { dXSARGS; apr_bucket_brigade *bb; apr_bucket *e, *end; IV want = -1, offset = 0; SV *sv, *obj; apr_status_t s; char *buf; switch (items) { case 4: offset = SvIV(ST(3)); case 3: want = SvIV(ST(2)); case 2: sv = ST(1); (void)SvUPGRADE(sv, SVt_PV); if (SvROK(ST(0))) { IV iv; obj = apreq_xs_find_bb_obj(aTHX_ ST(0)); iv = SvIVX(obj); bb = INT2PTR(apr_bucket_brigade *, iv); break; } default: Perl_croak(aTHX_ "Usage: $bb->READ($buf,$len,$off)"); } if (want == 0) { SvCUR_set(sv, offset); XSRETURN_IV(0); } if (APR_BRIGADE_EMPTY(bb)) { SvCUR_set(sv, offset); XSRETURN_UNDEF; } if (want == -1) { const char *data; apr_size_t dlen; e = APR_BRIGADE_FIRST(bb); s = apr_bucket_read(e, &data, &dlen, APR_BLOCK_READ); if (s != APR_SUCCESS) apreq_xs_croak(aTHX_ newHV(), Nullsv, s, "APR::Request::Brigade::READ", "APR::Error"); want = dlen; end = APR_BUCKET_NEXT(e); } else { switch (s = apr_brigade_partition(bb, (apr_off_t)want, &end)) { apr_off_t len; case APR_INCOMPLETE: s = apr_brigade_length(bb, 1, &len); if (s != APR_SUCCESS) apreq_xs_croak(aTHX_ newHV(), Nullsv, s, "APR::Request::Brigade::READ", "APR::Error"); want = len; case APR_SUCCESS: break; default: apreq_xs_croak(aTHX_ newHV(), Nullsv, s, "APR::Request::Brigade::READ", "APR::Error"); } } SvGROW(sv, want + offset + 1); buf = SvPVX(sv) + offset; SvCUR_set(sv, want + offset); if (SvTAINTED(obj)) SvTAINTED_on(sv); while ((e = APR_BRIGADE_FIRST(bb)) != end) { const char *data; apr_size_t dlen; s = apr_bucket_read(e, &data, &dlen, APR_BLOCK_READ); if (s != APR_SUCCESS) apreq_xs_croak(aTHX_ newHV(), Nullsv, s, "APR::Request::Brigade::READ", "APR::Error"); memcpy(buf, data, dlen); buf += dlen; apr_bucket_delete(e); } *buf = 0; SvPOK_only(sv); SvSETMAGIC(sv); XSRETURN_IV(want); } MP_STATIC XS(apreq_xs_brigade_readline) { dXSARGS; apr_bucket_brigade *bb; apr_bucket *e; SV *sv, *obj; IV iv; apr_status_t s; unsigned tainted; if (items != 1 || !SvROK(ST(0))) Perl_croak(aTHX_ "Usage: $bb->READLINE"); obj = apreq_xs_find_bb_obj(aTHX_ ST(0)); iv = SvIVX(obj); bb = INT2PTR(apr_bucket_brigade *, iv); if (APR_BRIGADE_EMPTY(bb)) XSRETURN(0); tainted = SvTAINTED(obj); XSprePUSH; sv = sv_2mortal(newSVpvn("",0)); if (tainted) SvTAINTED_on(sv); XPUSHs(sv); while (!APR_BRIGADE_EMPTY(bb)) { const char *data; apr_size_t dlen; const char *eol; e = APR_BRIGADE_FIRST(bb); s = apr_bucket_read(e, &data, &dlen, APR_BLOCK_READ); if (s != APR_SUCCESS) apreq_xs_croak(aTHX_ newHV(), Nullsv, s, "APR::Request::Brigade::READLINE", "APR::Error"); eol = memchr(data, '\012', dlen); /* look for LF (linefeed) */ if (eol != NULL) { if (eol < data + dlen - 1) { dlen = eol - data + 1; apr_bucket_split(e, dlen); } sv_catpvn(sv, data, dlen); apr_bucket_delete(e); if (GIMME_V != G_ARRAY || APR_BRIGADE_EMPTY(bb)) break; sv = sv_2mortal(newSVpvn("",0)); if (tainted) SvTAINTED_on(sv); XPUSHs(sv); } else { sv_catpvn(sv, data, dlen); apr_bucket_delete(e); } } PUTBACK; } libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Param/Param.pm0000644000076400017500000000077511473532337022742 0ustar issacissacpackage APR::Request::Param; use APR::Request; use APR::Table; use APR::Brigade; sub upload_io { tie local (*FH), "APR::Request::Brigade", shift->upload; return bless *FH{IO}, "APR::Request::Brigade::IO"; } sub upload_fh { my $fname = shift->upload_tempname(@_); open my $fh, "<", $fname or die "Can't open ", $fname, ": ", $!; binmode $fh; return $fh; } package APR::Request::Brigade; push our(@ISA), "APR::Brigade"; package APR::Request::Brigade::IO; push our(@ISA), (); libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Param/Param.pod0000644000076400017500000001716311473532337023107 0ustar issacissac=head1 NAME APR::Request::Param - wrapper for libapreq2's param API. =begin testing use APR::Pool; use APR::Brigade; use APR::Bucket; use APR::BucketAlloc; use APR::Request; use APR::Request::Parser; $pool = APR::Pool->new; $ba = APR::BucketAlloc->new($pool); $bb = APR::Brigade->new($pool, $ba); $content = <insert_tail(APR::Bucket->new($ba, $content)); $parser = APR::Request::Parser->multipart($pool, $ba, "multipart/form-data; boundary=-XYZ-"); $req = APR::Request::Custom->handle($pool, "alpha=arg1&beta=arg2", "foo=bar", $parser, 1e6, $bb); =end testing =head1 SYNOPSIS =for example begin use APR::Request::Param; $arg1 = $req->args('alpha'); $body = $req->body; $body->param_class("APR::Request::Param"); ok $_->isa("APR::Request::Param") for values %$body; @uploads = grep {$_->upload} values %$body; $param = $body->get('beta'); $param->upload_slurp(my $content); =for example end =for example_testing is $arg1, "arg1", 'alpha arg is "arg1"'; ok @uploads == 1; is $content, "second", 'contents of upload_slurp'; =head1 DESCRIPTION The C<< APR::Request::Param >> module provides base methods for interfacing with libapreq2's param API. It also provides a few utility functions and constants. This manpage documents version 2.13 of the APR::Request::Param, APR::Request::Brigade, and APR::Request::Brigade::IO packages. =head1 OVERLOADS APR::Request::Param =head2 "" "$param" The double-quote interpolation operator maps to C<< APR::Request::Param::value() >>. =for example begin =for example end =for example_testing is "$param", $param->value, "quotes"; =head1 METHODS APR::Request::Param =head2 name $param->name() Returns the param's name. This attribute cannot be modified. =for example begin =for example end =for example_testing is $param->name, "beta", "name"; =head2 value $param->value() Returns the param's value. This attribute cannot be modified. =for example begin =for example end =for example_testing is $param->value, "foo.txt", "value"; =head2 is_tainted $param->is_tainted() $param->is_tainted($set) Get/set the param's internal tainted flag. Note: if the param's charset is APREQ_CHARSET_UTF8 (8), this also activates the SvUTF8_on flag during calls to name() and/or value(). =for example begin $tainted = $param->is_tainted; $param->is_tainted(0); ok $param->is_tainted == 0; =for example end =for example_testing $param->is_tainted($tainted); is $param->is_tainted, $tainted, "tainted"; =head2 charset $param->charset() $param->charset($set) Get/set the param's internal charset. The charset is a number between 0 and 255; the current recognized values are =over 4 =item 0 APREQ_CHARSET_ASCII (7-bit us-ascii) =item 1 APREQ_CHARSET_LATIN1 (8-bit iso-8859-1) =item 2 APREQ_CHARSET_CP1252 (8-bit Windows-1252) =item 8 APREQ_CHARSET_UTF8 (utf8 encoded Unicode) =back See L above for info about how APREQ_CHARSET_UTF8 relates to perl's UTF-8 flag. =for example begin $charset = $param->charset; $param->charset(2); ok $param->charset == 2; =for example end =for example_testing $param->charset($charset); is $param->charset, $charset, "charset"; =head2 make APR::Request::Param->make($pool, $name, $value) Fast XS param constructor. =head2 info $param->info() $param->info($set) Get/set the APR::Table headers for this param. =head2 upload $param->upload() $param->upload($set) Get/set the APR::Brigade file-upload content for this param. =head2 upload_filename $param->upload_filename() Returns the client-side filename associated with this param. =head2 upload_link $param->upload_link($path) Links the file-upload content with the local file named C<< $path >>. Creates a hard-link if the spoolfile's (see L) temporary directory is on the same device as C<< $path >>; otherwise this writes a copy. =head2 upload_slurp $param->upload_slurp($data) Reads the entire file-upload content into C<< $data >>. =head2 upload_size $param->upload_size() Returns the size of the param's file-upload content. =head2 upload_type $param->upload_type() Returns the MIME-type of the param's file-upload content. =head2 upload_tempname $param->upload_tempname() Returns the name of the local spoolfile for this param. =head2 upload_io $param->upload_io() Returns an L object, which can be treated as a non-seekable IO stream. =head2 upload_fh $param->upload_fh() Returns a seekable filehandle representing the file-upload content. =head1 METHODS APR::Request::Brigade This class is derived from APR::Brigade, providing additional methods for TIEHANDLE, READ and READLINE. To be memory efficient, these methods delete buckets from the brigade as soon as their data is actually read, so you cannot C on handles tied to this class. Such handles have semantics similar to that of a read-only socket. =head2 new, TIEHANDLE APR::Request::Brigade->TIEHANDLE($bb) Creates a copy of the bucket brigade represented by $bb, and blesses that copy into the APR::Request::Brigade class. This provides syntactic sugar for using perl's builtin C, C, and C<< <> >> operations on handles tied to this package: =for example begin use Symbol; $fh = gensym; tie *$fh, "APR::Request::Brigade", $bb; print while <$fh>; =for example end =head2 READ $bb->READ($contents) $bb->READ($contents, $length) $bb->READ($contents, $length, $offset) Reads data from the brigade $bb into $contents. When omitted $length defaults to C<-1>, which reads the first bucket into $contents. A positive $length will read in $length bytes, or the remainder of the brigade, whichever is greater. $offset represents the index in $context to read the new data. =head2 READLINE $bb->READLINE() Returns the first line of data from the bride. Lines are terminated by linefeeds (the '\012' character), but we may eventually use C<$/> instead. =head1 METHODS APR::Request::Brigade::IO =head2 read OO interface to APR::Request::Brigade::READ. =head2 readline OO interface to APR::Request::Brigade::READLINE. =head1 SEE ALSO L, L, L. =head1 COPYRIGHT 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. libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Param/Param.xs0000644000076400017500000001627511473532337022762 0ustar issacissac/* On Win32 without PERL_IMPLICIT_SYS, PerlLIO_link is #defined as * link, which in turn is #defined as win32_link, but mp2's * modperl_perl_unembed.h #undefs link, leaving link as an unresolved * symbol when linking Param.dll. */ #ifdef WIN32 #ifndef PERL_IMPLICIT_SYS #undef PerlLIO_link #define PerlLIO_link(oldname, newname) win32_link(oldname, newname) #endif #endif MODULE = APR::Request::Param PACKAGE = APR::Request::Param SV * value(obj, p1=NULL, p2=NULL) APR::Request::Param obj SV *p1 SV *p2 PREINIT: /*nada*/ CODE: RETVAL = apreq_xs_param2sv(aTHX_ obj, NULL, NULL); OUTPUT: RETVAL SV * upload_filename(obj) APR::Request::Param obj PREINIT: CODE: if (obj->upload != NULL) RETVAL = apreq_xs_param2sv(aTHX_ obj, NULL, NULL); else RETVAL = &PL_sv_undef; OUTPUT: RETVAL BOOT: { apr_version_t version; apr_version(&version); if (version.major != APR_MAJOR_VERSION) Perl_croak(aTHX_ "Can't load module APR::Request::Param : " "wrong libapr major version " "(expected %d, saw %d)", APR_MAJOR_VERSION, version.major); } /* register the overloading (type 'A') magic */ PL_amagic_generation++; /* The magic for overload gets a GV* via gv_fetchmeth as */ /* mentioned above, and looks in the SV* slot of it for */ /* the "fallback" status. */ sv_setsv( get_sv( "APR::Request::Param::()", TRUE ), &PL_sv_yes ); newXS("APR::Request::Param::()", XS_APR__Request__Param_nil, file); newXS("APR::Request::Param::(\"\"", XS_APR__Request__Param_value, file); MODULE = APR::Request::Param PACKAGE = APR::Request::Param SV * name(obj) APR::Request::Param obj CODE: RETVAL = newSVpvn(obj->v.name, obj->v.nlen); if (apreq_param_is_tainted(obj)) SvTAINTED_on(RETVAL); OUTPUT: RETVAL IV is_tainted(obj, val=NULL) APR::Request::Param obj SV *val PREINIT: /*nada*/ CODE: RETVAL = apreq_param_is_tainted(obj); if (items == 2) { if (SvTRUE(val)) apreq_param_tainted_on(obj); else apreq_param_tainted_off(obj); } OUTPUT: RETVAL IV charset(obj, val=NULL) APR::Request::Param obj SV *val PREINIT: /*nada*/ CODE: if (items == 2) RETVAL = apreq_param_charset_set(obj, SvIV(val)); else RETVAL = apreq_param_charset_get(obj); OUTPUT: RETVAL APR::Request::Param make(class, pool, name, val) apreq_xs_subclass_t class APR::Pool pool SV *name SV *val PREINIT: STRLEN nlen, vlen; const char *n, *v; SV *parent = SvRV(ST(1)); CODE: n = SvPV(name, nlen); v = SvPV(val, vlen); RETVAL = apreq_param_make(pool, n, nlen, v, vlen); if (SvTAINTED(name) || SvTAINTED(val)) apreq_param_tainted_on(RETVAL); OUTPUT: RETVAL MODULE = APR::Request::Param PACKAGE = APR::Request::Param SV * upload_link(param, path) APR::Request::Param param const char *path PREINIT: apr_file_t *f; const char *fname; apr_status_t s; CODE: if (param->upload == NULL) Perl_croak(aTHX_ "$param->upload_link($file): param has no upload brigade"); f = apreq_brigade_spoolfile(param->upload); if (f == NULL) { apr_off_t len; s = apr_file_open(&f, path, APR_CREATE | APR_EXCL | APR_WRITE | APR_READ | APR_BINARY, APR_OS_DEFAULT, param->upload->p); if (s == APR_SUCCESS) { s = apreq_brigade_fwrite(f, &len, param->upload); if (s == APR_SUCCESS) XSRETURN_YES; } } else { s = apr_file_name_get(&fname, f); if (s != APR_SUCCESS) Perl_croak(aTHX_ "$param->upload_link($file): can't get spoolfile name"); if (PerlLIO_link(fname, path) >= 0) XSRETURN_YES; else { s = apr_file_copy(fname, path, APR_OS_DEFAULT, param->upload->p); if (s == APR_SUCCESS) XSRETURN_YES; } } RETVAL = &PL_sv_undef; OUTPUT: RETVAL apr_size_t upload_slurp(param, buffer) APR::Request::Param param SV *buffer PREINIT: apr_off_t len; apr_status_t s; char *data; CODE: if (param->upload == NULL) Perl_croak(aTHX_ "$param->upload_slurp($data): param has no upload brigade"); s = apr_brigade_length(param->upload, 0, &len); if (s != APR_SUCCESS) Perl_croak(aTHX_ "$param->upload_slurp($data): can't get upload length"); RETVAL = len; (void)SvUPGRADE(buffer, SVt_PV); data = SvGROW(buffer, RETVAL + 1); data[RETVAL] = 0; SvCUR_set(buffer, RETVAL); SvPOK_only(buffer); s = apr_brigade_flatten(param->upload, data, &RETVAL); if (s != APR_SUCCESS) Perl_croak(aTHX_ "$param->upload_slurp($data): can't flatten upload"); if (apreq_param_is_tainted(param)) SvTAINTED_on(buffer); SvSETMAGIC(buffer); OUTPUT: RETVAL UV upload_size(param) APR::Request::Param param PREINIT: apr_off_t len; apr_status_t s; CODE: if (param->upload == NULL) Perl_croak(aTHX_ "$param->upload_size(): param has no upload brigade"); s = apr_brigade_length(param->upload, 0, &len); if (s != APR_SUCCESS) Perl_croak(aTHX_ "$param->upload_size(): can't get upload length"); RETVAL = len; OUTPUT: RETVAL SV * upload_type(param) APR::Request::Param param PREINIT: const char *ct, *sc; STRLEN len; CODE: if (param->info == NULL) Perl_croak(aTHX_ "$param->upload_type(): param has no info table"); ct = apr_table_get(param->info, "Content-Type"); if (ct == NULL) Perl_croak(aTHX_ "$param->upload_type: can't find Content-Type header"); if ((sc = strchr(ct, ';'))) len = sc - ct; else len = strlen(ct); RETVAL = newSVpvn(ct, len); if (apreq_param_is_tainted(param)) SvTAINTED_on(RETVAL); OUTPUT: RETVAL const char * upload_tempname(param, req=apreq_xs_sv2handle(aTHX_ ST(0))) APR::Request::Param param APR::Request req PREINIT: apr_file_t *f; apr_status_t s; CODE: if (param->upload == NULL) Perl_croak(aTHX_ "$param->upload_tempname($req): param has no upload brigade" ); f = apreq_brigade_spoolfile(param->upload); if (f == NULL) { const char *path; s = apreq_temp_dir_get(req, &path); if (s != APR_SUCCESS) Perl_croak(aTHX_ "$param->upload_tempname($req): can't get temp_dir" ); s = apreq_brigade_concat(param->upload->p, path, 0, param->upload, param->upload); if (s != APR_SUCCESS) Perl_croak(aTHX_ "$param->upload_tempname($req): can't make spool bucket" ); f = apreq_brigade_spoolfile(param->upload); } s = apr_file_name_get(&RETVAL, f); if (s != APR_SUCCESS) Perl_croak(aTHX_ "$param->upload_link($file): can't get spool file name" ); OUTPUT: RETVAL libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Parser/Parser.pod0000644000076400017500000000761511473532337023500 0ustar issacissac=for testing ok(1); =head1 NAME APR::Request::Parser - wrapper for libapreq2's parser API. =head1 SYNOPSIS use APR::Request::Parser; =head1 DESCRIPTION This manpage documents version 2.13 of the APR::Request::Parser package. =head1 METHODS APR::Request::Parser =head2 generic APR::Request::Parser->generic($pool, $ba, $ct) APR::Request::Parser->generic($pool, $ba, $ct, $blim) APR::Request::Parser->generic($pool, $ba, $ct, $blim, $tdir) APR::Request::Parser->generic($pool, $ba, $ct, $blim, $tdir, $hook) Noop-parser that collects everything into a single, internal parameter. Here $pool is an APR::Pool object, $ba is an APR::BucketAlloc object, and $ct is the Content-Type header of the request. Optionally $blim is the brigade in-memory limit, $tdir is the path to the temporary directory, and $hook is an APR::Request::Hook object. =head2 headers APR::Request::Parser->headers($pool, $ba, $ct) APR::Request::Parser->headers($pool, $ba, $ct, $blim) APR::Request::Parser->headers($pool, $ba, $ct, $blim, $tdir) APR::Request::Parser->headers($pool, $ba, $ct, $blim, $tdir, $hook) RFC 822 header parser. Here $pool is an APR::Pool object, $ba is an APR::BucketAlloc object, and $ct is the Content-Type header of the request. Optionally $blim is the brigade in-memory limit, $tdir is the path to the temporary directory, and $hook is an APR::Request::Hook object. =head2 urlencoded APR::Request::Parser->urlencoded($pool, $ba, $ct) APR::Request::Parser->urlencoded($pool, $ba, $ct, $blim) APR::Request::Parser->urlencoded($pool, $ba, $ct, $blim, $tdir) APR::Request::Parser->urlencoded($pool, $ba, $ct, $blim, $tdir, $hook) x-www-form-urlencoded parser. Here $pool is an APR::Pool object, $ba is an APR::BucketAlloc object, and $ct is the Content-Type header of the request. Optionally $blim is the brigade in-memory limit, $tdir is the path to the temporary directory, and $hook is an APR::Request::Hook object. =head2 multipart APR::Request::Parser->multipart($pool, $ba, $ct) APR::Request::Parser->multipart($pool, $ba, $ct, $blim) APR::Request::Parser->multipart($pool, $ba, $ct, $blim, $tdir) APR::Request::Parser->multipart($pool, $ba, $ct, $blim, $tdir, $hook) Multipart parser. Here $pool is an APR::Pool object, $ba is an APR::BucketAlloc object, and $ct is the Content-Type header of the request. Optionally $blim is the brigade in-memory limit, $tdir is the path to the temporary directory, and $hook is an APR::Request::Hook object. =head2 default APR::Request::Parser->default($pool, $ba, $ct) APR::Request::Parser->default($pool, $ba, $ct, $blim) APR::Request::Parser->default($pool, $ba, $ct, $blim, $tdir) APR::Request::Parser->default($pool, $ba, $ct, $blim, $tdir, $hook) Default parser. Here $pool is an APR::Pool object, $ba is an APR::BucketAlloc object, and $ct is the Content-Type header of the request. Optionally $blim is the brigade in-memory limit, $tdir is the path to the temporary directory, and $hook is an APR::Request::Hook object. =head1 SEE ALSO L<< APR::Request >>, L<< APR::Request::Hook >> =head1 COPYRIGHT 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. libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Parser/Parser.xs0000644000076400017500000000512011473532337023335 0ustar issacissacMODULE = APR::Request::Parser PACKAGE = APR::Request::Parser APR::Request::Parser make(class, pool, ba, ct, parser, blim=APREQ_DEFAULT_BRIGADE_LIMIT, tdir=NULL, hook=NULL) apreq_xs_subclass_t class APR::Pool pool APR::BucketAlloc ba char *ct apreq_parser_function_t parser apr_size_t blim char *tdir APR::Request::Hook hook CODE: RETVAL = apreq_parser_make(pool, ba, ct, parser, blim, tdir, hook, NULL); OUTPUT: RETVAL APR::Request::Parser generic(class, pool, ba, ct, blim=APREQ_DEFAULT_BRIGADE_LIMIT, tdir=NULL, hook=NULL) apreq_xs_subclass_t class APR::Pool pool APR::BucketAlloc ba char *ct apr_size_t blim char *tdir APR::Request::Hook hook CODE: RETVAL = apreq_parser_make(pool, ba, ct, apreq_parse_generic, blim, tdir, hook, NULL); OUTPUT: RETVAL APR::Request::Parser headers(class, pool, ba, ct, blim=APREQ_DEFAULT_BRIGADE_LIMIT, tdir=NULL, hook=NULL) apreq_xs_subclass_t class APR::Pool pool APR::BucketAlloc ba char *ct apr_size_t blim char *tdir APR::Request::Hook hook CODE: RETVAL = apreq_parser_make(pool, ba, ct, apreq_parse_headers, blim, tdir, hook, NULL); OUTPUT: RETVAL APR::Request::Parser urlencoded(class, pool, ba, ct, blim=APREQ_DEFAULT_BRIGADE_LIMIT, tdir=NULL, hook=NULL) apreq_xs_subclass_t class APR::Pool pool APR::BucketAlloc ba char *ct apr_size_t blim char *tdir APR::Request::Hook hook CODE: RETVAL = apreq_parser_make(pool, ba, ct, apreq_parse_urlencoded, blim, tdir, hook, NULL); OUTPUT: RETVAL APR::Request::Parser multipart(class, pool, ba, ct, blim=APREQ_DEFAULT_BRIGADE_LIMIT, tdir=NULL, hook=NULL) apreq_xs_subclass_t class APR::Pool pool APR::BucketAlloc ba char *ct apr_size_t blim char *tdir APR::Request::Hook hook CODE: RETVAL = apreq_parser_make(pool, ba, ct, apreq_parse_multipart, blim, tdir, hook, NULL); OUTPUT: RETVAL APR::Request::Parser default(class, pool, ba, ct, blim=APREQ_DEFAULT_BRIGADE_LIMIT, tdir=NULL, hook=NULL) apreq_xs_subclass_t class APR::Pool pool APR::BucketAlloc ba char *ct apr_size_t blim char *tdir APR::Request::Hook hook PREINIT: apreq_parser_function_t parser; CODE: parser = apreq_parser(ct); if (parser == NULL) XSRETURN_UNDEF; RETVAL = apreq_parser_make(pool, ba, ct, parser, blim, tdir, hook, NULL); OUTPUT: RETVAL libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Request.pm0000644000076400017500000000176211473532337022267 0ustar issacissacuse APR::Pool; use APR::BucketAlloc; sub import { my $class = shift; return unless @_; my $pkg = caller; no strict 'refs'; for (@_) { *{"$pkg\::$_"} = $class->can($_) or die "Can't find method $_ in class $class"; } } sub param_status { my $req = shift; return $req->args_status || $req->body_status if wantarray; return ($req->args_status, $req->body_status); } sub upload { require APR::Request::Param; my $req = shift; my $body = $req->body or return; my $uploads = $body->uploads($req->pool); $uploads->param_class("APR::Request::Param"); return $uploads->get(@_) if @_; return keys %$uploads if wantarray; return $uploads; } package APR::Request::Custom; our @ISA = qw/APR::Request/; package APR::Request::Cookie::Table; sub EXISTS { my ($t, $key) = @_; return defined $t->FETCH($key); } package APR::Request::Param::Table; sub EXISTS { my ($t, $key) = @_; return defined $t->FETCH($key); } libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Request.pod0000644000076400017500000003754511473532337022445 0ustar issacissac=head1 NAME APR::Request - wrapper for libapreq2's module/handle API. =begin testing use APR::Pool; use APR::Brigade; use APR::Bucket; use APR::BucketAlloc; use APR::Request; use APR::Request::Parser; $pool = APR::Pool->new; $ba = APR::BucketAlloc->new($pool); $bb = APR::Brigade->new($pool, $ba); $content = <insert_tail(APR::Bucket->new($ba, $content)); $parser = APR::Request::Parser->multipart($pool, $ba, "multipart/form-data; boundary=-XYZ-"); =end testing =head1 SYNOPSIS =for example begin use APR::Request; $req = APR::Request::Custom->handle($pool, "foo=arg1&bar=arg2", "apache=quux", $parser, 1e6, $bb); $param = $req->param("foo"); $cookie = $req->jar("apache"); =for example end =for example_testing ok $req->isa("APR::Request"); is $param, "arg1", "param"; is $cookie, "quux", "cookie"; =head1 DESCRIPTION The C<< APR::Request >> module provides the base methods for interfacing with libapreq2's module API. It also provides a few utility functions and constants. This manpage documents version 2.13 of the APR::Request, APR::Request::Custom, APR::Request::Cookie::Table, and APR::Request::Param::Table packages. =head1 METHODS APR::Request::Custom - derived from APR::Request. =head2 handle APR::Request::Custom->handle($pool, $query_string, $cookie_header, $parser, $read_limit, $brigade) Creates a new APR::Request::Custom object. The $query_string and $cookie_headers are immediately parsed into the C and C tables. The $parser is an APR::Request::Parser object which is invoked when fetching C entries from the $brigade. The $read_limit represents the maximum number of bytes this handle may feed into the parser. =head1 METHODS APR::Request =head2 pool $req->pool() Returns the APR::Pool object associated to this handle. =for example begin =for example end =for example_testing is ${$req->pool()}, $$pool, "pool"; =head2 bucket_alloc $req->bucket_alloc() Returns the APR::BucketAlloc object associated to this handle. =for example begin =for example end =for example_testing is ${$req->bucket_alloc()}, $$ba, "bucket alloc"; =head2 jar_status $req->jar_status() Returns the final status code of the handle's cookie header parser. =for example begin =for example end =for example_testing is $req->jar_status == 0, 1, "jar status"; =head2 args_status $req->args_status() Returns the final status code of the handle's query-string parser. =for example begin =for example end =for example_testing is $req->args_status == 0, 1, "args status"; =head2 body_status $req->body_status() Returns the final status code of the handle's body parser. =for example begin =for example end =for example_testing is $req->body_status == 0, 1, "body status"; =head2 param_status $req->param_status() Returns C<< ($req->args_status, $req->body_status) >> in list context; otherwise returns C<< $req->args_status || $req->body_status >>. =for example begin =for example end =for example_testing is $req->param_status == 0, 1, "param status"; =head2 parse $req->parse() Parses the jar, args, and body tables. Returns C<< $req->jar_status, $req->args_status, $req->body_status >>. =for example begin @status = $req->parse; ok @status == 3; ok $status[0] == $req->jar_status; ok $status[1] == $req->args_status; ok $status[2] == $req->body_status; =for example end =for example_testing $_ += 0 for @status; # convert to proper IVs is "@status", "0 0 0", "parse"; =head2 jar $req->jar() $req->jar($key) With no arguments, this method returns a tied APR::Request::Cookie::Table object (or undef if the "Cookie" header is absent) in scalar context, or the names (in order, with repetitions) of all the parsed cookies. With the C<$key> argument, in scalar context this method fetches the first matching cookie. In list context it returns all matching cookies. The returned cookies are the values as they appeared in the incoming Cookie header. jar() will throw an APR::Request::Error object whenever jar_status() is non-zero and the return value is potentially invalid (eg C<< scalar $req->jar($key) >> will not die if the desired cookie was successfully parsed). =for example begin $jar = $req->jar; @cookie_names = $req->jar; ok $jar->isa("APR::Request::Cookie::Table"); ok shift @cookie_names eq $_ for keys %$jar; $cookie = $req->jar("apache"); @cookies = $req->jar("apache"); =for example end =for example_testing is $cookie, "quux", "cookie"; is "@cookies", "quux", "cookies"; =head2 args $req->args() $req->args($key) With no arguments, this method returns a tied APR::Request::Param::Table object (or undef if the query string is absent) in scalar context, or the names (in order, with repetitions) of all the parsed query-string arguments. With the C<$key> argument, in scalar context this method fetches the first matching query-string arg. In list context it returns all matching args. args() will throw an APR::Request::Error object whenever args_status() is non-zero and the return value is potentially invalid (eg C<< scalar $req->args($key) >> will not die if the desired query argument was successfully parsed). =for example begin $args = $req->args; @arg_names = $req->args; ok $args->isa("APR::Request::Param::Table"); ok shift @arg_names eq $_ for keys %$args; $foo = $req->args("foo"); @bar = $req->args("bar"); =for example end =for example_testing is $foo, "arg1", "arg"; is "@bar", "arg2", "args"; =head2 body $req->body() $req->body($key) With no arguments, this method returns a tied APR::Request::Param::Table object (or undef if the request body is absent) in scalar context, or the names (in order, with repetitions) of all the parsed cookies. With the C<$key> argument, in scalar context this method fetches the first matching body param. In list context it returns all matching body params. body() will throw an APR::Request::Error object whenever body_status() is non-zero and the return value is potentially invalid (eg C<< scalar $req->body($key) >> will not die if the desired body param was successfully parsed). =for example begin $body = $req->body; @body_names = $req->body; ok $body->isa("APR::Request::Param::Table"); ok shift @body_names eq $_ for keys %$body; $alpha = $req->body("alpha"); @beta = $req->body("beta"); =for example end =for example_testing is $alpha, "body1", "alpha body"; is "@beta", "foo.txt", "beta body"; =head2 param $req->param() $req->param($key) With no arguments, this method returns a tied APR::Request::Param::Table object (or undef, if the query string and request body are absent) in scalar context, or the names (in order, with repetitions) of all the incoming (args + body) params. With the C<$key> argument, in scalar context this method fetches the first matching param. In list context it returns all matching params. param() will throw an APR::Request::Error object whenever param_status() is non-zero and the return value is potentially invalid (eg C<< scalar $req->param($key) >> will not die if the desired param was successfully parsed). =for example begin $param = $req->param; @param_names = $req->param; ok $param->isa("APR::Request::Param::Table"); ok shift @param_names eq $_ for keys %$param; $foo = $req->param("foo"); @foo = $req->param("foo"); =for example end =for example_testing is $foo, "arg1", "scalar param"; is "@foo", "arg1 body3", "list param"; =head2 upload $req->upload() $req->upload($key) With no arguments, this method returns a tied APR::Request::Param::Table object (or undef if the request body is absent) in scalar context (whose entries are APR::Request::Param objects), or the names (in order, with repetitions) of all the incoming uploads. With the C<$key> argument, in scalar context this method fetches the first matching upload. In list context it returns all matching uploads. The return values are APR::Request::Param objects. upload() will throw an APR::Request::Error object whenever body_status() is non-zero. =for example begin $uploads = $req->upload; @upload_names = $req->upload; ok $uploads->isa("APR::Request::Param::Table"); ok shift @upload_names eq $_ for keys %$uploads; ok $_->upload for values %$uploads; $up = $req->upload("beta"); @ups = $req->upload("beta"); ok $_->isa("APR::Request::Param") for $up, @ups; ok $_->upload for $up, @ups; =for example end =for example_testing is $up, "foo.txt", "scalar upload"; is "@ups", "foo.txt", "list upload"; =head2 read_limit $req->read_limit() $req->read_limit($set) Get/set the read limit, which controls the total amount of bytes that can be fed to the current parser. =head2 brigade_limit $req->brigade_limit() $req->brigade_limit($set) Get/set the brigade_limit for the current parser. This limit determines how many bytes of a file upload that the parser may spool into main memory. Uploads exceeding this limit are written directly to disk. =head2 temp_dir $req->temp_dir() $req->temp_dir($set) Get/set the spool directory for uploads which exceed the configured brigade_limit. =head2 disable_uploads $req->disable_uploads() Engage the disable_uploads hook for this request. =head2 upload_hook $req->upload_hook($callback) Add an upload hook callback for this request. The arguments to the $callback sub are ($upload, $new_data). =head2 import Exports a list of subs into the caller's package. =head1 SUBROUTINES APR::Request =head2 encode encode($string) Exportable sub which returns the url-encoded form of C<$string>. =head2 decode decode($string) Exportable sub which returns the url-decoded form of C<$string>. =head1 SUBCLASSING APR::Request If the instances of your subclass are hash references then you can actually inherit from APR::Request as long as the APR::Request object is stored in an attribute called "r" or "_r". (The APR::Request class effectively does the delegation for you automagically, as long as it knows where to find the APR::Request object to delegate to.) For example: package MySubClass; use APR::Request::Custom; our @ISA = qw(APR::Request); sub new { my($class, @args) = @_; return bless { r => APR::Request::Custom->handle(@args) }, $class; } =head1 METHODS APR::Request::Cookie::Table - read-only version of APR::Table. Tables in this class normally arise from calls to C<< APR::Request::jar() >>. =head2 cookie_class $table->cookie_class() $table->cookie_class($set) Get/set the class each table element is blessed into during a L or L call. If defined, the class must be derived from APR::Request::Cookie. When called with $set, it returns the $table. Otherwise it returns the name of the current class, or undef if no cookie class is defined. =for example begin $jar = $req->jar; { package FOO; use base 'APR::Request::Cookie'; } $jar->cookie_class("FOO"); ok $_->isa("FOO") for values %$jar; =for example end =for example_testing $jar->do(sub { ok $_[1]->isa("FOO"); }); =head2 get $table->get($key) Same as FETCH. =head2 FETCH $table->FETCH($key) In scalar context, this returns the first value matching $key (note: see NEXTKEY for additional notes). The match is always case-insensitive. In list context, this returns all matching values. Note: the type of the return values depends on the table's current cookie_class. =head2 EXISTS Synonym for C<< defined >>; these tables are not allowed to contain undefined values. Since these are constant tables, they don't autovivify either. =head2 FIRSTKEY $table->FIRSTKEY() Returns the first key in the table. =head2 NEXTKEY $table->NEXTKEY() Returns the next key in the table. For perl 5.8+, if the key is multivalued, a subsequent FETCH on this key will return the corresponding value, until either NEXTKEY or FIRSTKEY is invoked again. For perl 5.6, FETCH always returns the first value. =head2 do $table->do($callback, @keys) Same as APR::Table::do; iterates over the table calling $callback->($key, $value) for each matching @keys. If @keys is empty, this iterates over the entire table. Note: The type of $value inserted into the callback depends on the table's current cookie_class. =head1 METHODS APR::Request::Param::Table =head2 param_class $table->param_class() $table->param_class($set) Get/set the class each table element is blessed into during a C or C call. If defined, the class must be derived from APR::Request::Param. When called with $set, it returns the $table. Otherwise it returns the name of the current class, or undef if no param class is defined. =for example begin $body = $req->body; { package BAR; use base 'APR::Request::Param'; } $body->param_class("BAR"); ok $_->isa("BAR") for values %$body; =for example end =for example_testing $body->do(sub { ok $_[1]->isa("BAR"); }); =head2 get $table->get($key) Same as FETCH. =head2 FETCH $table->FETCH($key) In scalar context, this returns the first value matching $key (see NEXTKEY for additional notes on this). The match is always case-insensitive. In list context, this returns all matching values. Note: the type of the return values depends on the table's current param_class. =head2 EXISTS Synonym for C<< defined >>; these tables are not allowed to contain undefined values. Since these are constant tables, they don't autovivify either. =head2 NEXTKEY $table->NEXTKEY() Returns the next key in the table. For perl 5.8+, if the key is multivalued, a subsequent FETCH on this key will return the corresponding value, until either NEXTKEY or FIRSTKEY is invoked again. For perl 5.6, FETCH always returns the first value. =head2 FIRSTKEY $table->FIRSTKEY() Returns the first key in the table. =head2 do $table->do($callback, @keys) Same as APR::Table::do; iterates over the table calling $callback->($key, $value) for each matching @keys. If @keys is empty, this iterates over the entire table. Note: The type of $value inserted into the callback depends on the table's current value_class. =head1 SEE ALSO L, L, L, L =head1 COPYRIGHT 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. libapreq2-2.13/glue/perl/xsbuilder/APR/Request/Request.xs0000644000076400017500000002250011473532337022276 0ustar issacissacMODULE = APR::Request PACKAGE = APR::Request SV* encode(in) SV *in PREINIT: STRLEN len; char *src; CODE: src = SvPV(in, len); RETVAL = newSV(3 * len + 1); SvCUR_set(RETVAL, apreq_encode(SvPVX(RETVAL), src, len)); SvPOK_on(RETVAL); OUTPUT: RETVAL SV* decode(in) SV *in PREINIT: STRLEN len; apr_size_t dlen; char *src; CODE: src = SvPV(in, len); RETVAL = newSV(len + 1); apreq_decode(SvPVX(RETVAL), &dlen, src, len); /*XXX needs error-handling */ SvCUR_set(RETVAL, dlen); SvPOK_on(RETVAL); OUTPUT: RETVAL SV* read_limit(req, val=NULL) APR::Request req SV *val PREINIT: /* nada */ CODE: if (items == 1) { apr_status_t s; apr_uint64_t bytes; s = apreq_read_limit_get(req, &bytes); if (s != APR_SUCCESS) { if (!sv_derived_from(ST(0), ERROR_CLASS)) { SV *obj = apreq_xs_sv2object(aTHX_ ST(0), HANDLE_CLASS, 'r'); apreq_xs_croak(aTHX_ newHV(), obj, s, "APR::Request::read_limit", ERROR_CLASS); } else RETVAL = &PL_sv_undef; } else { RETVAL = newSVuv(bytes); } } else { apr_status_t s = apreq_read_limit_set(req, SvUV(val)); if (s != APR_SUCCESS) { if (GIMME_V == G_VOID && !sv_derived_from(ST(0), ERROR_CLASS)) { SV *obj = apreq_xs_sv2object(aTHX_ ST(0), HANDLE_CLASS, 'r'); apreq_xs_croak(aTHX_ newHV(), obj, s, "APR::Request::read_limit", ERROR_CLASS); } else RETVAL = &PL_sv_no; } else { RETVAL = &PL_sv_yes; } } OUTPUT: RETVAL SV* brigade_limit(req, val=NULL) APR::Request req SV *val PREINIT: /* nada */ CODE: if (items == 1) { apr_status_t s; apr_size_t bytes; s = apreq_brigade_limit_get(req, &bytes); if (s != APR_SUCCESS) { if (!sv_derived_from(ST(0), ERROR_CLASS)) { SV *obj = apreq_xs_sv2object(aTHX_ ST(0), HANDLE_CLASS, 'r'); apreq_xs_croak(aTHX_ newHV(), obj, s, "APR::Request::brigade_limit", ERROR_CLASS); } else RETVAL = &PL_sv_undef; } else { RETVAL = newSVuv(bytes); } } else { apr_status_t s = apreq_brigade_limit_set(req, SvUV(val)); if (s != APR_SUCCESS) { if (GIMME_V == G_VOID && !sv_derived_from(ST(0), ERROR_CLASS)) { SV *obj = apreq_xs_sv2object(aTHX_ ST(0), HANDLE_CLASS, 'r'); apreq_xs_croak(aTHX_ newHV(), obj, s, "APR::Request::brigade_limit", ERROR_CLASS); } else RETVAL = &PL_sv_no; } else { RETVAL = &PL_sv_yes; } } OUTPUT: RETVAL SV* temp_dir(req, val=NULL) APR::Request req SV *val PREINIT: /* nada */ CODE: if (items == 1) { apr_status_t s; const char *path; s = apreq_temp_dir_get(req, &path); if (s != APR_SUCCESS) { if (!sv_derived_from(ST(0), ERROR_CLASS)) { SV *obj = apreq_xs_sv2object(aTHX_ ST(0), HANDLE_CLASS, 'r'); apreq_xs_croak(aTHX_ newHV(), obj, s, "APR::Request::temp_dir", ERROR_CLASS); } else RETVAL = &PL_sv_undef; } else { RETVAL = (path == NULL) ? &PL_sv_undef : newSVpv(path, 0); } } else { apr_status_t s = apreq_temp_dir_set(req, SvPV_nolen(val)); if (s != APR_SUCCESS) { if (GIMME_V == G_VOID && !sv_derived_from(ST(0), ERROR_CLASS)) { SV *obj = apreq_xs_sv2object(aTHX_ ST(0), HANDLE_CLASS, 'r'); apreq_xs_croak(aTHX_ newHV(), obj, s, "APR::Request::temp_dir", ERROR_CLASS); } else RETVAL = &PL_sv_no; } else { RETVAL = &PL_sv_yes; } } OUTPUT: RETVAL SV* jar_status(req) APR::Request req PREINIT: const apr_table_t *t; CODE: RETVAL = apreq_xs_error2sv(aTHX_ apreq_jar(req, &t)); OUTPUT: RETVAL SV* args_status(req) APR::Request req PREINIT: const apr_table_t *t; CODE: RETVAL = apreq_xs_error2sv(aTHX_ apreq_args(req, &t)); OUTPUT: RETVAL SV* body_status(req) APR::Request req PREINIT: const apr_table_t *t; CODE: RETVAL = apreq_xs_error2sv(aTHX_ apreq_body(req, &t)); OUTPUT: RETVAL SV* disable_uploads(req) APR::Request req PREINIT: apreq_hook_t *h; apr_status_t s; CODE: h = apreq_hook_make(req->pool, apreq_hook_disable_uploads, NULL, NULL); s = apreq_hook_add(req, h); RETVAL = apreq_xs_error2sv(aTHX_ s); OUTPUT: RETVAL void upload_hook(obj, sub) SV *obj SV *sub PREINIT: struct hook_ctx *ctx; IV iv; apreq_handle_t *req; CODE: obj = apreq_xs_sv2object(aTHX_ obj, "APR::Request", 'r'); iv = SvIVX(obj); req = INT2PTR(apreq_handle_t *, iv); ctx = apr_palloc(req->pool, sizeof *ctx); ctx->hook = newSVsv(sub); ctx->bucket_data = newSV(8000); ctx->parent = SvREFCNT_inc(obj); SvTAINTED_on(ctx->bucket_data); #ifdef USE_ITHREADS ctx->perl = aTHX; #endif apreq_hook_add(req, apreq_hook_make(req->pool, apreq_xs_upload_hook, NULL, ctx)); apr_pool_cleanup_register(req->pool, ctx, upload_hook_cleanup, NULL); APR::Pool pool(req) APR::Request req CODE: RETVAL = req->pool; OUTPUT: RETVAL APR::BucketAlloc bucket_alloc(req) APR::Request req CODE: RETVAL = req->bucket_alloc; OUTPUT: RETVAL MODULE = APR::Request::Param PACKAGE = APR::Request::Param::Table SV * uploads(t, pool) APR::Request::Param::Table t APR::Pool pool PREINIT: SV *obj = apreq_xs_sv2object(aTHX_ ST(0), PARAM_TABLE_CLASS, 't'); SV *parent = apreq_xs_sv2object(aTHX_ ST(0), HANDLE_CLASS, 'r'); MAGIC *mg = mg_find(obj, PERL_MAGIC_ext); CODE: RETVAL = apreq_xs_param_table2sv(aTHX_ apreq_uploads(t, pool), HvNAME(SvSTASH(obj)), parent, mg->mg_ptr, mg->mg_len); OUTPUT: RETVAL MODULE = APR::Request::Param PACKAGE = APR::Request::Param::Table SV * param_class(t, subclass=&PL_sv_undef) APR::Request::Param::Table t SV *subclass PREINIT: SV *obj = apreq_xs_sv2object(aTHX_ ST(0), PARAM_TABLE_CLASS, 't'); MAGIC *mg = mg_find(obj, PERL_MAGIC_ext); char *curclass = mg->mg_ptr; CODE: if (items == 2) { if (!SvOK(subclass)) { mg->mg_ptr = NULL; mg->mg_len = 0; } else if (!sv_derived_from(subclass, PARAM_CLASS)) { Perl_croak(aTHX_ "Usage: " PARAM_TABLE_CLASS "::param_class($table, $class): " "class %s is not derived from " PARAM_CLASS, SvPV_nolen(subclass)); } else { STRLEN len; mg->mg_ptr = savepv(SvPV(subclass, len)); mg->mg_len = len; } if (curclass != NULL) Safefree(curclass); XSRETURN(1); } RETVAL = (curclass == NULL) ? &PL_sv_undef : newSVpv(curclass, 0); OUTPUT: RETVAL MODULE = APR::Request::Cookie PACKAGE = APR::Request::Cookie::Table SV * cookie_class(t, subclass=&PL_sv_undef) APR::Request::Cookie::Table t SV *subclass PREINIT: SV *obj = apreq_xs_sv2object(aTHX_ ST(0), COOKIE_TABLE_CLASS, 't'); MAGIC *mg = mg_find(obj, PERL_MAGIC_ext); char *curclass = mg->mg_ptr; CODE: if (items == 2) { if (!SvOK(subclass)) { mg->mg_ptr = NULL; mg->mg_len = 0; } else if (!sv_derived_from(subclass, COOKIE_CLASS)) { Perl_croak(aTHX_ "Usage: " COOKIE_TABLE_CLASS "::cookie_class($table, $class): " "class %s is not derived from " COOKIE_CLASS, SvPV_nolen(subclass)); } else { STRLEN len; mg->mg_ptr = savepv(SvPV(subclass, len)); mg->mg_len = len; } if (curclass != NULL) Safefree(curclass); XSRETURN(1); } RETVAL = (curclass == NULL) ? &PL_sv_undef : newSVpv(curclass, 0); OUTPUT: RETVAL MODULE = APR::Request PACKAGE = APR::Request::Custom APR::Request handle(class, pool, query_string, cookie, parser, read_limit, in) apreq_xs_subclass_t class APR::Pool pool char *query_string char *cookie APR::Request::Parser parser UV read_limit APR::Brigade in PREINIT: SV *parent = SvRV(ST(1)); CODE: RETVAL = apreq_handle_custom(pool, query_string, cookie, parser, read_limit, in); OUTPUT: RETVAL BOOT: { apr_version_t version; apr_version(&version); if (version.major != APR_MAJOR_VERSION) Perl_croak(aTHX_ "Can't load module APR::Request : " "wrong libapr major version " "(expected %d, saw %d)", APR_MAJOR_VERSION, version.major); } libapreq2-2.13/glue/perl/xsbuilder/apreq_xs_postperl.h0000644000076400017500000001747111473532340022150 0ustar issacissac/* ** 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. */ #ifndef APREQ_XS_POSTPERL_H #define APREQ_XS_POSTPERL_H /* avoid namespace collisions from perl's XSUB.h */ #include "modperl_perl_unembed.h" /* required for modperl's T_HASHOBJ (typemap) */ #include "modperl_common_util.h" /* backward compatibility macros support */ #include "ppport.h" /* apr version info for modules */ #include "apr_version.h" /* ExtUtils::XSBuilder::ParseSoure trickery... */ typedef apreq_handle_t apreq_xs_handle_cgi_t; typedef apreq_handle_t apreq_xs_handle_apache2_t; typedef apr_table_t apreq_xs_param_table_t; typedef apr_table_t apreq_xs_cookie_table_t; typedef HV apreq_xs_error_t; typedef char* apreq_xs_subclass_t; #define APR__Request__Param__Table const apr_table_t * #define APR__BucketAlloc apr_bucket_alloc_t * #define HANDLE_CLASS "APR::Request" #define COOKIE_CLASS "APR::Request::Cookie" #define PARAM_CLASS "APR::Request::Param" #define ERROR_CLASS "APR::Request::Error" #define COOKIE_TABLE_CLASS "APR::Request::Cookie::Table" #define PARAM_TABLE_CLASS "APR::Request::Param::Table" struct apreq_xs_do_arg { const char *pkg; SV *parent, *sub; PerlInterpreter *perl; }; /** * @file apreq_xs_postperl.h * @brief XS include file for making Cookie.so and Request.so * */ /** * @defgroup XS Perl * @ingroup GLUE * @{ */ /** * Trace through magic objects & hashrefs looking for original object. * @param in The starting SV *. * @param key The first letter of key is used to search a hashref for * the desired object. * @return Reference to the object. */ APR_INLINE static SV *apreq_xs_find_obj(pTHX_ SV *in, const char key) { const char altkey[] = { '_', key }; while (in && SvROK(in)) { SV *sv = SvRV(in); switch (SvTYPE(sv)) { MAGIC *mg; SV **svp; case SVt_PVHV: if (SvMAGICAL(sv) && (mg = mg_find(sv,PERL_MAGIC_tied))) { in = mg->mg_obj; break; } else if ((svp = hv_fetch((HV *)sv, altkey+1, 1, FALSE)) || (svp = hv_fetch((HV *)sv, altkey, 2, FALSE))) { in = *svp; break; } Perl_croak(aTHX_ "attribute hash has no '%s' key!", key); case SVt_PVMG: if (SvOBJECT(sv) && SvIOKp(sv)) return in; default: Perl_croak(aTHX_ "panic: unsupported SV type: %d", SvTYPE(sv)); } } Perl_croak(aTHX_ "apreq_xs_find_obj: object attr `%c' not found", key); return NULL; } /* conversion function templates based on modperl-2's sv2request_rec */ static APR_INLINE SV *apreq_xs_object2sv(pTHX_ void *ptr, const char *class, SV *parent, const char *base) { SV *rv = sv_setref_pv(newSV(0), class, (void *)ptr); sv_magic(SvRV(rv), parent, PERL_MAGIC_ext, Nullch, 0); if (!sv_derived_from(rv, base)) Perl_croak(aTHX_ "apreq_xs_object2sv failed: " "target class %s isn't derived from %s", class, base); return rv; } APR_INLINE static SV *apreq_xs_handle2sv(pTHX_ apreq_handle_t *req, const char *class, SV *parent) { return apreq_xs_object2sv(aTHX_ req, class, parent, HANDLE_CLASS); } APR_INLINE static SV *apreq_xs_param2sv(pTHX_ apreq_param_t *p, const char *class, SV *parent) { if (class == NULL) { SV *rv = newSVpvn(p->v.data, p->v.dlen); if (apreq_param_is_tainted(p)) SvTAINTED_on(rv); else if (apreq_param_charset_get(p) == APREQ_CHARSET_UTF8) /* Setting the UTF8 flag on non-utf8 data is a security hole. * Let's see if coupling that decision with taintedness helps * resolve this issue. */ SvUTF8_on(rv); return rv; } return apreq_xs_object2sv(aTHX_ p, class, parent, PARAM_CLASS); } APR_INLINE static SV *apreq_xs_cookie2sv(pTHX_ apreq_cookie_t *c, const char *class, SV *parent) { if (class == NULL) { SV *rv = newSVpvn(c->v.data, c->v.dlen); if (apreq_cookie_is_tainted(c)) SvTAINTED_on(rv); /*XXX add charset fixups? */ return rv; } return apreq_xs_object2sv(aTHX_ c, class, parent, COOKIE_CLASS); } APR_INLINE static SV* apreq_xs_error2sv(pTHX_ apr_status_t s) { char buf[256]; SV *sv = newSV(0); sv_upgrade(sv, SVt_PVIV); apreq_strerror(s, buf, sizeof buf); sv_setpvn(sv, buf, strlen(buf)); SvPOK_on(sv); SvIVX(sv) = s; SvIOK_on(sv); SvREADONLY_on(sv); return sv; } APR_INLINE static SV *apreq_xs_sv2object(pTHX_ SV *sv, const char *class, const char attr) { SV *obj; MAGIC *mg; sv = apreq_xs_find_obj(aTHX_ sv, attr); /* XXX sv_derived_from is expensive; how to optimize it? */ if (sv_derived_from(sv, class)) { return SvRV(sv); } /* else check if parent (mg->mg_obj) is the right object type */ if ((mg = mg_find(SvRV(sv), PERL_MAGIC_ext)) != NULL && (obj = mg->mg_obj) != NULL && SvOBJECT(obj)) { sv = sv_2mortal(newRV_inc(obj)); if (sv_derived_from(sv, class)) return obj; } Perl_croak(aTHX_ "apreq_xs_sv2object: %s object not found", class); return NULL; } APR_INLINE static apreq_handle_t *apreq_xs_sv2handle(pTHX_ SV *sv) { SV *obj = apreq_xs_sv2object(aTHX_ sv, HANDLE_CLASS, 'r'); IV iv = SvIVX(obj); return INT2PTR(apreq_handle_t *, iv); } static APR_INLINE apreq_param_t *apreq_xs_sv2param(pTHX_ SV *sv) { SV *obj = apreq_xs_sv2object(aTHX_ sv, PARAM_CLASS, 'p'); IV iv = SvIVX(obj); return INT2PTR(apreq_param_t *, iv); } static APR_INLINE apreq_cookie_t *apreq_xs_sv2cookie(pTHX_ SV *sv) { SV *obj = apreq_xs_sv2object(aTHX_ sv, COOKIE_CLASS, 'c'); IV iv = SvIVX(obj); return INT2PTR(apreq_cookie_t *, iv); } static APR_INLINE void apreq_xs_croak(pTHX_ HV *data, SV *obj, apr_status_t rc, const char *func, const char *class) { HV *stash; stash = gv_stashpv(class, FALSE); if (stash == NULL) { ENTER; Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT, newSVpv(class, 0), Nullsv); LEAVE; stash = gv_stashpv(class, TRUE); } if (obj != Nullsv) sv_setsv(*hv_fetch(data, "_r", 2, 1), sv_2mortal(newRV_inc(obj))); sv_setiv(*hv_fetch(data, "rc", 2, 1), rc); sv_setpv(*hv_fetch(data, "file", 4, 1), CopFILE(PL_curcop)); sv_setiv(*hv_fetch(data, "line", 4, 1), CopLINE(PL_curcop)); sv_setpv(*hv_fetch(data, "func", 4, 1), func); sv_setsv(ERRSV, sv_2mortal(sv_bless(newRV_noinc((SV*)data), stash))); Perl_croak(aTHX_ Nullch); } static APR_INLINE const char *apreq_xs_helper_class(pTHX_ SV **SP, SV *sv, const char *method) { PUSHMARK(SP); XPUSHs(sv); PUTBACK; call_method(method, G_SCALAR); SPAGAIN; sv = POPs; PUTBACK; return SvPV_nolen(sv); } /** @} */ #endif /* APREQ_XS_POSTPERL_H */ libapreq2-2.13/glue/perl/xsbuilder/apreq_xs_preperl.h0000644000076400017500000000271111473532340021740 0ustar issacissac/* ** 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. */ #ifndef APREQ_XS_PREPERL_H #define APREQ_XS_PREPERL_H #define PERL_NO_GET_CONTEXT /* we want efficiency under ithreads */ /* some redefines needed for Win32 */ #ifdef WIN32 # define uid_t perl_uid_t # define gid_t perl_gid_t # ifdef exit # define perl_exit exit # undef exit # endif #endif /* Undo httpd.h's strchr override. */ #ifdef AP_DEBUG # undef strchr #endif /** * @file apreq_xs_preperl.h * @brief XS include file for making Cookie.so and Request.so, for things * that has to be included before EXTERN.h/perl.h/XSUB.h headers * */ /** * @defgroup XS Perl * @ingroup GLUE * @{ */ /** @} */ #endif /* APREQ_XS_PREPERL_H */ libapreq2-2.13/glue/perl/xsbuilder/apreq_xs_tables.h0000644000076400017500000001732411473532340021547 0ustar issacissac/* ** 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. */ #ifndef APREQ_XS_TABLES_H #define APREQ_XS_TABLES_H /* backward compatibility macros support */ #include "ppport.h" /**************************************************/ #if (PERL_VERSION >= 8) /* MAGIC ITERATOR REQUIRES 5.8 */ /* Requires perl 5.8 or better. * A custom MGVTBL with its "copy" slot filled allows * us to FETCH a table entry immediately during iteration. * For multivalued keys this is essential in order to get * the value corresponding to the current key, otherwise * values() will always report the first value repeatedly. * With this MGVTBL the keys() list always matches up with * the values() list, even in the multivalued case. * We only prefetch the value during iteration, because the * prefetch adds overhead to EXISTS and STORE operations. * They are only "penalized" when the perl program is iterating * via each(), which seems to be a reasonable tradeoff. */ static int apreq_xs_cookie_table_magic_copy(pTHX_ SV *sv, MAGIC *mg, SV *nsv, const char *name, int namelen) { /* Prefetch the value whenever the table iterator is > 0 */ MAGIC *tie_magic = mg_find(nsv, PERL_MAGIC_tiedelem); SV *obj = SvRV(tie_magic->mg_obj); IV idx = SvIVX(obj); const apr_table_t *t = INT2PTR(apr_table_t *, idx); const apr_array_header_t *arr = apr_table_elts(t); idx = SvCUR(obj); if (idx > 0 && idx <= arr->nelts) { const apr_table_entry_t *te = (const apr_table_entry_t *)arr->elts; apreq_cookie_t *c = apreq_value_to_cookie(te[idx-1].val); MAGIC *my_magic = mg_find(obj, PERL_MAGIC_ext); SvMAGICAL_off(nsv); sv_setsv(nsv, sv_2mortal(apreq_xs_cookie2sv(aTHX_ c, my_magic->mg_ptr, my_magic->mg_obj))); } return 0; } static const MGVTBL apreq_xs_cookie_table_magic = {0, 0, 0, 0, 0, apreq_xs_cookie_table_magic_copy}; #endif static APR_INLINE SV *apreq_xs_cookie_table2sv(pTHX_ const apr_table_t *t, const char *class, SV *parent, const char *value_class, I32 vclen) { SV *sv = (SV *)newHV(); SV *rv = sv_setref_pv(newSV(0), class, (void *)t); sv_magic(SvRV(rv), parent, PERL_MAGIC_ext, value_class, vclen); #if (PERL_VERSION >= 8) /* MAGIC ITERATOR requires 5.8 */ sv_magic(sv, NULL, PERL_MAGIC_ext, Nullch, -1); SvMAGIC(sv)->mg_virtual = (MGVTBL *)&apreq_xs_cookie_table_magic; SvMAGIC(sv)->mg_flags |= MGf_COPY; #endif sv_magic(sv, rv, PERL_MAGIC_tied, Nullch, 0); SvREFCNT_dec(rv); /* corrects SvREFCNT_inc(rv) implicit in sv_magic */ return sv_bless(newRV_noinc(sv), SvSTASH(SvRV(rv))); } static int apreq_xs_cookie_table_keys(void *data, const char *key, const char *val) { #ifdef USE_ITHREADS struct apreq_xs_do_arg *d = (struct apreq_xs_do_arg *)data; dTHXa(d->perl); #endif dSP; apreq_cookie_t *c = apreq_value_to_cookie(val); SV *sv = newSVpvn(key, c->v.nlen); if (apreq_cookie_is_tainted(c)) SvTAINTED_on(sv); #ifndef USE_ITHREADS (void)data; #endif XPUSHs(sv_2mortal(sv)); PUTBACK; return 1; } static int apreq_xs_cookie_table_values(void *data, const char *key, const char *val) { struct apreq_xs_do_arg *d = (struct apreq_xs_do_arg *)data; dTHXa(d->perl); dSP; apreq_cookie_t *c = apreq_value_to_cookie(val); SV *sv = apreq_xs_cookie2sv(aTHX_ c, d->pkg, d->parent); XPUSHs(sv_2mortal(sv)); PUTBACK; return 1; } /**************************************************/ #if (PERL_VERSION >= 8) /* MAGIC ITERATOR REQUIRES 5.8 */ /* Requires perl 5.8 or better. * A custom MGVTBL with its "copy" slot filled allows * us to FETCH a table entry immediately during iteration. * For multivalued keys this is essential in order to get * the value corresponding to the current key, otherwise * values() will always report the first value repeatedly. * With this MGVTBL the keys() list always matches up with * the values() list, even in the multivalued case. * We only prefetch the value during iteration, because the * prefetch adds overhead to EXISTS and STORE operations. * They are only "penalized" when the perl program is iterating * via each(), which seems to be a reasonable tradeoff. */ static int apreq_xs_param_table_magic_copy(pTHX_ SV *sv, MAGIC *mg, SV *nsv, const char *name, int namelen) { /* Prefetch the value whenever the table iterator is > 0 */ MAGIC *tie_magic = mg_find(nsv, PERL_MAGIC_tiedelem); SV *obj = SvRV(tie_magic->mg_obj); IV idx = SvIVX(obj); const apr_table_t *t = INT2PTR(apr_table_t *, idx); const apr_array_header_t *arr = apr_table_elts(t); idx = SvCUR(obj); if (idx > 0 && idx <= arr->nelts) { const apr_table_entry_t *te = (const apr_table_entry_t *)arr->elts; apreq_param_t *p = apreq_value_to_param(te[idx-1].val); MAGIC *my_magic = mg_find(obj, PERL_MAGIC_ext); SvMAGICAL_off(nsv); sv_setsv(nsv, sv_2mortal(apreq_xs_param2sv(aTHX_ p, my_magic->mg_ptr, my_magic->mg_obj))); } return 0; } static const MGVTBL apreq_xs_param_table_magic = {0, 0, 0, 0, 0, apreq_xs_param_table_magic_copy}; #endif static APR_INLINE SV *apreq_xs_param_table2sv(pTHX_ const apr_table_t *t, const char *class, SV *parent, const char *value_class, I32 vclen) { SV *sv = (SV *)newHV(); SV *rv = sv_setref_pv(newSV(0), class, (void *)t); sv_magic(SvRV(rv), parent, PERL_MAGIC_ext, value_class, vclen); #if (PERL_VERSION >= 8) /* MAGIC ITERATOR requires 5.8 */ sv_magic(sv, NULL, PERL_MAGIC_ext, Nullch, -1); SvMAGIC(sv)->mg_virtual = (MGVTBL *)&apreq_xs_param_table_magic; SvMAGIC(sv)->mg_flags |= MGf_COPY; #endif sv_magic(sv, rv, PERL_MAGIC_tied, Nullch, 0); SvREFCNT_dec(rv); /* corrects SvREFCNT_inc(rv) implicit in sv_magic */ return sv_bless(newRV_noinc(sv), SvSTASH(SvRV(rv))); } static int apreq_xs_param_table_keys(void *data, const char *key, const char *val) { #ifdef USE_ITHREADS struct apreq_xs_do_arg *d = (struct apreq_xs_do_arg *)data; dTHXa(d->perl); #endif dSP; apreq_param_t *p = apreq_value_to_param(val); SV *sv = newSVpvn(key, p->v.nlen); #ifndef USE_ITHREADS (void)data; #endif if (apreq_param_is_tainted(p)) SvTAINTED_on(sv); XPUSHs(sv_2mortal(sv)); PUTBACK; return 1; } static int apreq_xs_param_table_values(void *data, const char *key, const char *val) { struct apreq_xs_do_arg *d = (struct apreq_xs_do_arg *)data; dTHXa(d->perl); dSP; apreq_param_t *p = apreq_value_to_param(val); SV *sv = apreq_xs_param2sv(aTHX_ p, d->pkg, d->parent); XPUSHs(sv_2mortal(sv)); PUTBACK; return 1; } #endif /* APREQ_XS_TABLES_H */ libapreq2-2.13/glue/perl/xsbuilder/maps/apreq_functions.map0000644000076400017500000000445211473532337023065 0ustar issacissac########## Apache::Request:: Functions ########## #################### APR::Request stuff #################### MODULE=APR::Request PACKAGE=APR::Request PREFIX=apreq_ apreq_cp1252_to_utf8 #apreq_hook_add MODULE=APR::Request::Apache2 PACKAGE=APR::Request::Apache2 PREFIX=APR__Request__Apache2_ apreq_xs_handle_apache2_t *:DEFINE_handle | apreq_handle_apache2 (r) | const char *:class, request_rec *:r MODULE=APR::Request::CGI PACKAGE=APR::Request::CGI PREFIX=APR__Request__CGI_ apreq_xs_handle_cgi_t *:DEFINE_handle | apreq_handle_cgi (p) | const char *:class, apr_pool_t *:p #################### APR::Request::Cookie stuff #################### MODULE=APR::Request::Cookie PACKAGE=APR::Request::Cookie PREFIX=apreq_cookie_ apreq_cookie_expires MODULE=APR::Request PACKAGE=APR::Request::Cookie::Table PREFIX=APR__Request__Cookie__Table_ DEFINE_get | apreq_xs_cookie_table_FETCH | DEFINE_FETCH | apreq_xs_cookie_table_FETCH | DEFINE_NEXTKEY | apreq_xs_cookie_table_NEXTKEY | DEFINE_FIRSTKEY | apreq_xs_cookie_table_NEXTKEY | DEFINE_do | apreq_xs_cookie_table_do | #################### APR::Request::Param stuff #################### MODULE=APR::Request PACKAGE=APR::Request PREFIX=APR__Request_ DEFINE_parse | apreq_xs_parse | DEFINE_jar | apreq_xs_jar | DEFINE_args | apreq_xs_args | DEFINE_body | apreq_xs_body | DEFINE_param | apreq_xs_param | MODULE=APR::Request PACKAGE=APR::Request::Param::Table PREFIX=APR__Request__Param__Table_ DEFINE_get | apreq_xs_param_table_FETCH | DEFINE_FETCH | apreq_xs_param_table_FETCH | DEFINE_NEXTKEY | apreq_xs_param_table_NEXTKEY | DEFINE_FIRSTKEY | apreq_xs_param_table_NEXTKEY | DEFINE_do | apreq_xs_param_table_do | MODULE=APR::Request::Param PACKAGE=APR::Request::Brigade PREFIX=APR__Request__Brigade_ DEFINE_new | apreq_xs_brigade_copy | DEFINE_TIEHANDLE | apreq_xs_brigade_copy | DEFINE_READ | apreq_xs_brigade_read | DEFINE_READLINE | apreq_xs_brigade_readline | MODULE=APR::Request::Param PACKAGE=APR::Request::Brigade::IO PREFIX=APR__Request__Brigade__IO_ DEFINE_read | apreq_xs_brigade_read | DEFINE_readline | apreq_xs_brigade_readline | MODULE=APR::Request::Hook PACKAGE=APR::Request::Hook PREFIX=apreq_hook_ apreq_hook_run MODULE=APR::Request::Parser PACKAGE=APR::Request::Parser PREFIX=apreq_parser_ apreq_parser_run apreq_parser_add_hook libapreq2-2.13/glue/perl/xsbuilder/maps/apreq_structures.map0000644000076400017500000000124211473532337023272 0ustar issacissac########## APREQ structures ########## # # name # status # size # data[1] # info upload ! v ! module ! path ! domain ! port ! comment ! commentURL ! max_age ! flags ! v ! hook ! next ! ctx ! parser ! content_type ! hook > ctx libapreq2-2.13/glue/perl/xsbuilder/maps/apreq_types.map0000644000076400017500000000224011473532337022212 0ustar issacissac########## APREQ types ########## const apr_size_t | UV apr_size_t | UV struct SV | SV apr_status_t | IV const char * | PV char * | PV void | VOID void * | PTR const void * | PTR unsigned | UV unsigned char | UV #data structure stuff struct request_rec | Apache2::RequestRec | T_APACHEOBJ | r struct apr_pool_t | APR::Pool | T_POOLOBJ struct apr_array_header_t | APR::ArrayHeader struct apr_table_t | APR::Table | T_HASHOBJ struct apr_bucket_brigade | APR::Brigade struct apreq_param_t | APR::Request::Param | T_APREQ_PARAM | param struct apreq_cookie_t | APR::Request::Cookie | T_APREQ_COOKIE | cookie struct apreq_handle_t | APR::Request | T_APREQ_HANDLE | req struct apreq_xs_handle_apache2_t | APR::Request::Apache2 | T_APREQ_HANDLE_APACHE2 struct apreq_xs_handle_cgi_t | APR::Request::CGI | T_APREQ_HANDLE_CGI struct apreq_xs_error_t | APR::Request::Error | T_APREQ_ERROR struct apreq_xs_cookie_table_t | APR::Request::Cookie::Table | T_HASHOBJ const apreq_xs_param_table_t * | APR::Request::Param::Table | T_HASHOBJ struct apreq_parser_t | APR::Request::Parser struct apreq_hook_t | APR::Request::Hook libapreq2-2.13/glue/perl/xsbuilder/ppport.h0000644000076400017500000034666011473532340017727 0ustar issacissac#if 0 <<'SKIP'; #endif /* ---------------------------------------------------------------------- ppport.h -- Perl/Pollution/Portability Version 3.06_01 Automatically created by Devel::PPPort running under perl 5.008008 on Fri Apr 21 19:13:50 2006. Do NOT edit this file directly! -- Edit PPPort_pm.PL and the includes in parts/inc/ instead. Use 'perldoc ppport.h' to view the documentation below. ---------------------------------------------------------------------- SKIP =pod =head1 NAME ppport.h - Perl/Pollution/Portability version 3.06_01 =head1 SYNOPSIS perl ppport.h [options] [source files] Searches current directory for files if no [source files] are given --help show short help --patch=file write one patch file with changes --copy=suffix write changed copies with suffix --diff=program use diff program and options --compat-version=version provide compatibility with Perl version --cplusplus accept C++ comments --quiet don't output anything except fatal errors --nodiag don't show diagnostics --nohints don't show hints --nochanges don't suggest changes --nofilter don't filter input files --list-provided list provided API --list-unsupported list unsupported API --api-info=name show Perl API portability information =head1 COMPATIBILITY This version of F is designed to support operation with Perl installations back to 5.003, and has been tested up to 5.9.3. =head1 OPTIONS =head2 --help Display a brief usage summary. =head2 --patch=I If this option is given, a single patch file will be created if any changes are suggested. This requires a working diff program to be installed on your system. =head2 --copy=I If this option is given, a copy of each file will be saved with the given suffix that contains the suggested changes. This does not require any external programs. If neither C<--patch> or C<--copy> are given, the default is to simply print the diffs for each file. This requires either C or a C program to be installed. =head2 --diff=I Manually set the diff program and options to use. The default is to use C, when installed, and output unified context diffs. =head2 --compat-version=I Tell F to check for compatibility with the given Perl version. The default is to check for compatibility with Perl version 5.003. You can use this option to reduce the output of F if you intend to be backward compatible only up to a certain Perl version. =head2 --cplusplus Usually, F will detect C++ style comments and replace them with C style comments for portability reasons. Using this option instructs F to leave C++ comments untouched. =head2 --quiet Be quiet. Don't print anything except fatal errors. =head2 --nodiag Don't output any diagnostic messages. Only portability alerts will be printed. =head2 --nohints Don't output any hints. Hints often contain useful portability notes. =head2 --nochanges Don't suggest any changes. Only give diagnostic output and hints unless these are also deactivated. =head2 --nofilter Don't filter the list of input files. By default, files not looking like source code (i.e. not *.xs, *.c, *.cc, *.cpp or *.h) are skipped. =head2 --list-provided Lists the API elements for which compatibility is provided by F. Also lists if it must be explicitly requested, if it has dependencies, and if there are hints for it. =head2 --list-unsupported Lists the API elements that are known not to be supported by F and below which version of Perl they probably won't be available or work. =head2 --api-info=I Show portability information for API elements matching I. If I is surrounded by slashes, it is interpreted as a regular expression. =head1 DESCRIPTION In order for a Perl extension (XS) module to be as portable as possible across differing versions of Perl itself, certain steps need to be taken. =over 4 =item * Including this header is the first major one. This alone will give you access to a large part of the Perl API that hasn't been available in earlier Perl releases. Use perl ppport.h --list-provided to see which API elements are provided by ppport.h. =item * You should avoid using deprecated parts of the API. For example, using global Perl variables without the C prefix is deprecated. Also, some API functions used to have a C prefix. Using this form is also deprecated. You can safely use the supported API, as F will provide wrappers for older Perl versions. =item * If you use one of a few functions that were not present in earlier versions of Perl, and that can't be provided using a macro, you have to explicitly request support for these functions by adding one or more C<#define>s in your source code before the inclusion of F. These functions will be marked C in the list shown by C<--list-provided>. Depending on whether you module has a single or multiple files that use such functions, you want either C or global variants. For a C function, use: #define NEED_function For a global function, use: #define NEED_function_GLOBAL Note that you mustn't have more than one global request for one function in your project. Function Static Request Global Request ----------------------------------------------------------------------------------------- eval_pv() NEED_eval_pv NEED_eval_pv_GLOBAL grok_bin() NEED_grok_bin NEED_grok_bin_GLOBAL grok_hex() NEED_grok_hex NEED_grok_hex_GLOBAL grok_number() NEED_grok_number NEED_grok_number_GLOBAL grok_numeric_radix() NEED_grok_numeric_radix NEED_grok_numeric_radix_GLOBAL grok_oct() NEED_grok_oct NEED_grok_oct_GLOBAL newCONSTSUB() NEED_newCONSTSUB NEED_newCONSTSUB_GLOBAL newRV_noinc() NEED_newRV_noinc NEED_newRV_noinc_GLOBAL sv_2pv_nolen() NEED_sv_2pv_nolen NEED_sv_2pv_nolen_GLOBAL sv_2pvbyte() NEED_sv_2pvbyte NEED_sv_2pvbyte_GLOBAL sv_catpvf_mg() NEED_sv_catpvf_mg NEED_sv_catpvf_mg_GLOBAL sv_catpvf_mg_nocontext() NEED_sv_catpvf_mg_nocontext NEED_sv_catpvf_mg_nocontext_GLOBAL sv_setpvf_mg() NEED_sv_setpvf_mg NEED_sv_setpvf_mg_GLOBAL sv_setpvf_mg_nocontext() NEED_sv_setpvf_mg_nocontext NEED_sv_setpvf_mg_nocontext_GLOBAL vnewSVpvf() NEED_vnewSVpvf NEED_vnewSVpvf_GLOBAL To avoid namespace conflicts, you can change the namespace of the explicitly exported functions using the C macro. Just C<#define> the macro before including C: #define DPPP_NAMESPACE MyOwnNamespace_ #include "ppport.h" The default namespace is C. =back The good thing is that most of the above can be checked by running F on your source code. See the next section for details. =head1 EXAMPLES To verify whether F is needed for your module, whether you should make any changes to your code, and whether any special defines should be used, F can be run as a Perl script to check your source code. Simply say: perl ppport.h The result will usually be a list of patches suggesting changes that should at least be acceptable, if not necessarily the most efficient solution, or a fix for all possible problems. If you know that your XS module uses features only available in newer Perl releases, if you're aware that it uses C++ comments, and if you want all suggestions as a single patch file, you could use something like this: perl ppport.h --compat-version=5.6.0 --cplusplus --patch=test.diff If you only want your code to be scanned without any suggestions for changes, use: perl ppport.h --nochanges You can specify a different C program or options, using the C<--diff> option: perl ppport.h --diff='diff -C 10' This would output context diffs with 10 lines of context. To display portability information for the C function, use: perl ppport.h --api-info=newSVpvn Since the argument to C<--api-info> can be a regular expression, you can use perl ppport.h --api-info=/_nomg$/ to display portability information for all C<_nomg> functions or perl ppport.h --api-info=/./ to display information for all known API elements. =head1 BUGS If this version of F is causing failure during the compilation of this module, please check if newer versions of either this module or C are available on CPAN before sending a bug report. If F was generated using the latest version of C and is causing failure of this module, please file a bug report using the CPAN Request Tracker at L. Please include the following information: =over 4 =item 1. The complete output from running "perl -V" =item 2. This file. =item 3. The name and version of the module you were trying to build. =item 4. A full log of the build that failed. =item 5. Any other information that you think could be relevant. =back For the latest version of this code, please get the C module from CPAN. =head1 COPYRIGHT Version 3.x, Copyright (c) 2004-2005, Marcus Holland-Moritz. Version 2.x, Copyright (C) 2001, Paul Marquess. Version 1.x, Copyright (C) 1999, Kenneth Albanowski. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 SEE ALSO See L. =cut use strict; my %opt = ( quiet => 0, diag => 1, hints => 1, changes => 1, cplusplus => 0, filter => 1, ); my($ppport) = $0 =~ /([\w.]+)$/; my $LF = '(?:\r\n|[\r\n])'; # line feed my $HS = "[ \t]"; # horizontal whitespace eval { require Getopt::Long; Getopt::Long::GetOptions(\%opt, qw( help quiet diag! filter! hints! changes! cplusplus patch=s copy=s diff=s compat-version=s list-provided list-unsupported api-info=s )) or usage(); }; if ($@ and grep /^-/, @ARGV) { usage() if "@ARGV" =~ /^--?h(?:elp)?$/; die "Getopt::Long not found. Please don't use any options.\n"; } usage() if $opt{help}; if (exists $opt{'compat-version'}) { my($r,$v,$s) = eval { parse_version($opt{'compat-version'}) }; if ($@) { die "Invalid version number format: '$opt{'compat-version'}'\n"; } die "Only Perl 5 is supported\n" if $r != 5; die "Invalid version number: $opt{'compat-version'}\n" if $v >= 1000 || $s >= 1000; $opt{'compat-version'} = sprintf "%d.%03d%03d", $r, $v, $s; } else { $opt{'compat-version'} = 5; } # Never use C comments in this file!!!!! my $ccs = '/'.'*'; my $cce = '*'.'/'; my $rccs = quotemeta $ccs; my $rcce = quotemeta $cce; my %API = map { /^(\w+)\|([^|]*)\|([^|]*)\|(\w*)$/ ? ( $1 => { ($2 ? ( base => $2 ) : ()), ($3 ? ( todo => $3 ) : ()), (index($4, 'v') >= 0 ? ( varargs => 1 ) : ()), (index($4, 'p') >= 0 ? ( provided => 1 ) : ()), (index($4, 'n') >= 0 ? ( nothxarg => 1 ) : ()), } ) : die "invalid spec: $_" } qw( AvFILLp|5.004050||p AvFILL||| CLASS|||n CX_CURPAD_SAVE||| CX_CURPAD_SV||| CopFILEAV|5.006000||p CopFILEGV_set|5.006000||p CopFILEGV|5.006000||p CopFILESV|5.006000||p CopFILE_set|5.006000||p CopFILE|5.006000||p CopSTASHPV_set|5.006000||p CopSTASHPV|5.006000||p CopSTASH_eq|5.006000||p CopSTASH_set|5.006000||p CopSTASH|5.006000||p CopyD|5.009002||p Copy||| CvPADLIST||| CvSTASH||| CvWEAKOUTSIDE||| DEFSV|5.004050||p END_EXTERN_C|5.005000||p ENTER||| ERRSV|5.004050||p EXTEND||| EXTERN_C|5.005000||p FREETMPS||| GIMME_V||5.004000|n GIMME|||n GROK_NUMERIC_RADIX|5.007002||p G_ARRAY||| G_DISCARD||| G_EVAL||| G_NOARGS||| G_SCALAR||| G_VOID||5.004000| GetVars||| GvSV||| Gv_AMupdate||| HEf_SVKEY||5.004000| HeHASH||5.004000| HeKEY||5.004000| HeKLEN||5.004000| HePV||5.004000| HeSVKEY_force||5.004000| HeSVKEY_set||5.004000| HeSVKEY||5.004000| HeVAL||5.004000| HvNAME||| INT2PTR|5.006000||p IN_LOCALE_COMPILETIME|5.007002||p IN_LOCALE_RUNTIME|5.007002||p IN_LOCALE|5.007002||p IN_PERL_COMPILETIME|5.008001||p IS_NUMBER_GREATER_THAN_UV_MAX|5.007002||p IS_NUMBER_INFINITY|5.007002||p IS_NUMBER_IN_UV|5.007002||p IS_NUMBER_NAN|5.007003||p IS_NUMBER_NEG|5.007002||p IS_NUMBER_NOT_INT|5.007002||p IVSIZE|5.006000||p IVTYPE|5.006000||p IVdf|5.006000||p LEAVE||| LVRET||| MARK||| MY_CXT_CLONE|5.009002||p MY_CXT_INIT|5.007003||p MY_CXT|5.007003||p MoveD|5.009002||p Move||| NEWSV||| NOOP|5.005000||p NUM2PTR|5.006000||p NVTYPE|5.006000||p NVef|5.006001||p NVff|5.006001||p NVgf|5.006001||p Newc||| Newz||| New||| Nullav||| Nullch||| Nullcv||| Nullhv||| Nullsv||| ORIGMARK||| PAD_BASE_SV||| PAD_CLONE_VARS||| PAD_COMPNAME_FLAGS||| PAD_COMPNAME_GEN_set||| PAD_COMPNAME_GEN||| PAD_COMPNAME_OURSTASH||| PAD_COMPNAME_PV||| PAD_COMPNAME_TYPE||| PAD_RESTORE_LOCAL||| PAD_SAVE_LOCAL||| PAD_SAVE_SETNULLPAD||| PAD_SETSV||| PAD_SET_CUR_NOSAVE||| PAD_SET_CUR||| PAD_SVl||| PAD_SV||| PERL_BCDVERSION|5.009003||p PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||p PERL_INT_MAX|5.004000||p PERL_INT_MIN|5.004000||p PERL_LONG_MAX|5.004000||p PERL_LONG_MIN|5.004000||p PERL_MAGIC_arylen|5.007002||p PERL_MAGIC_backref|5.007002||p PERL_MAGIC_bm|5.007002||p PERL_MAGIC_collxfrm|5.007002||p PERL_MAGIC_dbfile|5.007002||p PERL_MAGIC_dbline|5.007002||p PERL_MAGIC_defelem|5.007002||p PERL_MAGIC_envelem|5.007002||p PERL_MAGIC_env|5.007002||p PERL_MAGIC_ext|5.007002||p PERL_MAGIC_fm|5.007002||p PERL_MAGIC_glob|5.007002||p PERL_MAGIC_isaelem|5.007002||p PERL_MAGIC_isa|5.007002||p PERL_MAGIC_mutex|5.007002||p PERL_MAGIC_nkeys|5.007002||p PERL_MAGIC_overload_elem|5.007002||p PERL_MAGIC_overload_table|5.007002||p PERL_MAGIC_overload|5.007002||p PERL_MAGIC_pos|5.007002||p PERL_MAGIC_qr|5.007002||p PERL_MAGIC_regdata|5.007002||p PERL_MAGIC_regdatum|5.007002||p PERL_MAGIC_regex_global|5.007002||p PERL_MAGIC_shared_scalar|5.007003||p PERL_MAGIC_shared|5.007003||p PERL_MAGIC_sigelem|5.007002||p PERL_MAGIC_sig|5.007002||p PERL_MAGIC_substr|5.007002||p PERL_MAGIC_sv|5.007002||p PERL_MAGIC_taint|5.007002||p PERL_MAGIC_tiedelem|5.007002||p PERL_MAGIC_tiedscalar|5.007002||p PERL_MAGIC_tied|5.007002||p PERL_MAGIC_utf8|5.008001||p PERL_MAGIC_uvar_elem|5.007003||p PERL_MAGIC_uvar|5.007002||p PERL_MAGIC_vec|5.007002||p PERL_MAGIC_vstring|5.008001||p PERL_QUAD_MAX|5.004000||p PERL_QUAD_MIN|5.004000||p PERL_REVISION|5.006000||p PERL_SCAN_ALLOW_UNDERSCORES|5.007003||p PERL_SCAN_DISALLOW_PREFIX|5.007003||p PERL_SCAN_GREATER_THAN_UV_MAX|5.007003||p PERL_SCAN_SILENT_ILLDIGIT|5.008001||p PERL_SHORT_MAX|5.004000||p PERL_SHORT_MIN|5.004000||p PERL_SUBVERSION|5.006000||p PERL_UCHAR_MAX|5.004000||p PERL_UCHAR_MIN|5.004000||p PERL_UINT_MAX|5.004000||p PERL_UINT_MIN|5.004000||p PERL_ULONG_MAX|5.004000||p PERL_ULONG_MIN|5.004000||p PERL_UNUSED_DECL|5.007002||p PERL_UQUAD_MAX|5.004000||p PERL_UQUAD_MIN|5.004000||p PERL_USHORT_MAX|5.004000||p PERL_USHORT_MIN|5.004000||p PERL_VERSION|5.006000||p PL_DBsingle|||pn PL_DBsub|||pn PL_DBtrace|||n PL_Sv|5.005000||p PL_compiling|5.004050||p PL_copline|5.005000||p PL_curcop|5.004050||p PL_curstash|5.004050||p PL_debstash|5.004050||p PL_defgv|5.004050||p PL_diehook|5.004050||p PL_dirty|5.004050||p PL_dowarn|||pn PL_errgv|5.004050||p PL_hexdigit|5.005000||p PL_hints|5.005000||p PL_last_in_gv|||n PL_modglobal||5.005000|n PL_na|5.004050||pn PL_no_modify|5.006000||p PL_ofs_sv|||n PL_perl_destruct_level|5.004050||p PL_perldb|5.004050||p PL_ppaddr|5.006000||p PL_rsfp_filters|5.004050||p PL_rsfp|5.004050||p PL_rs|||n PL_stack_base|5.004050||p PL_stack_sp|5.004050||p PL_stdingv|5.004050||p PL_sv_arenaroot|5.004050||p PL_sv_no|5.004050||pn PL_sv_undef|5.004050||pn PL_sv_yes|5.004050||pn PL_tainted|5.004050||p PL_tainting|5.004050||p POPi|||n POPl|||n POPn|||n POPpbytex||5.007001|n POPpx||5.005030|n POPp|||n POPs|||n PTR2IV|5.006000||p PTR2NV|5.006000||p PTR2UV|5.006000||p PTR2ul|5.007001||p PTRV|5.006000||p PUSHMARK||| PUSHi||| PUSHmortal|5.009002||p PUSHn||| PUSHp||| PUSHs||| PUSHu|5.004000||p PUTBACK||| PerlIO_clearerr||5.007003| PerlIO_close||5.007003| PerlIO_eof||5.007003| PerlIO_error||5.007003| PerlIO_fileno||5.007003| PerlIO_fill||5.007003| PerlIO_flush||5.007003| PerlIO_get_base||5.007003| PerlIO_get_bufsiz||5.007003| PerlIO_get_cnt||5.007003| PerlIO_get_ptr||5.007003| PerlIO_read||5.007003| PerlIO_seek||5.007003| PerlIO_set_cnt||5.007003| PerlIO_set_ptrcnt||5.007003| PerlIO_setlinebuf||5.007003| PerlIO_stderr||5.007003| PerlIO_stdin||5.007003| PerlIO_stdout||5.007003| PerlIO_tell||5.007003| PerlIO_unread||5.007003| PerlIO_write||5.007003| Poison|5.008000||p RETVAL|||n Renewc||| Renew||| SAVECLEARSV||| SAVECOMPPAD||| SAVEPADSV||| SAVETMPS||| SAVE_DEFSV|5.004050||p SPAGAIN||| SP||| START_EXTERN_C|5.005000||p START_MY_CXT|5.007003||p STMT_END|||p STMT_START|||p ST||| SVt_IV||| SVt_NV||| SVt_PVAV||| SVt_PVCV||| SVt_PVHV||| SVt_PVMG||| SVt_PV||| Safefree||| Slab_Alloc||| Slab_Free||| StructCopy||| SvCUR_set||| SvCUR||| SvEND||| SvGETMAGIC|5.004050||p SvGROW||| SvIOK_UV||5.006000| SvIOK_notUV||5.006000| SvIOK_off||| SvIOK_only_UV||5.006000| SvIOK_only||| SvIOK_on||| SvIOKp||| SvIOK||| SvIVX||| SvIV_nomg|5.009001||p SvIV_set||| SvIVx||| SvIV||| SvIsCOW_shared_hash||5.008003| SvIsCOW||5.008003| SvLEN_set||| SvLEN||| SvLOCK||5.007003| SvMAGIC_set||5.009003| SvNIOK_off||| SvNIOKp||| SvNIOK||| SvNOK_off||| SvNOK_only||| SvNOK_on||| SvNOKp||| SvNOK||| SvNVX||| SvNV_set||| SvNVx||| SvNV||| SvOK||| SvOOK||| SvPOK_off||| SvPOK_only_UTF8||5.006000| SvPOK_only||| SvPOK_on||| SvPOKp||| SvPOK||| SvPVX||| SvPV_force_nomg|5.007002||p SvPV_force||| SvPV_nolen|5.006000||p SvPV_nomg|5.007002||p SvPV_set||| SvPVbyte_force||5.009002| SvPVbyte_nolen||5.006000| SvPVbytex_force||5.006000| SvPVbytex||5.006000| SvPVbyte|5.006000||p SvPVutf8_force||5.006000| SvPVutf8_nolen||5.006000| SvPVutf8x_force||5.006000| SvPVutf8x||5.006000| SvPVutf8||5.006000| SvPVx||| SvPV||| SvREFCNT_dec||| SvREFCNT_inc||| SvREFCNT||| SvROK_off||| SvROK_on||| SvROK||| SvRV_set||5.009003| SvRV||| SvSETMAGIC||| SvSHARE||5.007003| SvSTASH_set||5.009003| SvSTASH||| SvSetMagicSV_nosteal||5.004000| SvSetMagicSV||5.004000| SvSetSV_nosteal||5.004000| SvSetSV||| SvTAINTED_off||5.004000| SvTAINTED_on||5.004000| SvTAINTED||5.004000| SvTAINT||| SvTRUE||| SvTYPE||| SvUNLOCK||5.007003| SvUOK||5.007001| SvUPGRADE||| SvUTF8_off||5.006000| SvUTF8_on||5.006000| SvUTF8||5.006000| SvUVXx|5.004000||p SvUVX|5.004000||p SvUV_nomg|5.009001||p SvUV_set||5.009003| SvUVx|5.004000||p SvUV|5.004000||p SvVOK||5.008001| THIS|||n UNDERBAR|5.009002||p UVSIZE|5.006000||p UVTYPE|5.006000||p UVXf|5.007001||p UVof|5.006000||p UVuf|5.006000||p UVxf|5.006000||p XCPT_CATCH|5.009002||p XCPT_RETHROW|5.009002||p XCPT_TRY_END|5.009002||p XCPT_TRY_START|5.009002||p XPUSHi||| XPUSHmortal|5.009002||p XPUSHn||| XPUSHp||| XPUSHs||| XPUSHu|5.004000||p XSRETURN_EMPTY||| XSRETURN_IV||| XSRETURN_NO||| XSRETURN_NV||| XSRETURN_PV||| XSRETURN_UNDEF||| XSRETURN_UV|5.008001||p XSRETURN_YES||| XSRETURN||| XST_mIV||| XST_mNO||| XST_mNV||| XST_mPV||| XST_mUNDEF||| XST_mUV|5.008001||p XST_mYES||| XS_VERSION_BOOTCHECK||| XS_VERSION||| XS||| ZeroD|5.009002||p Zero||| _aMY_CXT|5.007003||p _pMY_CXT|5.007003||p aMY_CXT_|5.007003||p aMY_CXT|5.007003||p aTHX_|5.006000||p aTHX|5.006000||p add_data||| allocmy||| amagic_call||| any_dup||| ao||| append_elem||| append_list||| apply_attrs_my||| apply_attrs_string||5.006001| apply_attrs||| apply||| asIV||| asUV||| atfork_lock||5.007003|n atfork_unlock||5.007003|n av_arylen_p||5.009003| av_clear||| av_delete||5.006000| av_exists||5.006000| av_extend||| av_fake||| av_fetch||| av_fill||| av_len||| av_make||| av_pop||| av_push||| av_reify||| av_shift||| av_store||| av_undef||| av_unshift||| ax|||n bad_type||| bind_match||| block_end||| block_gimme||5.004000| block_start||| boolSV|5.004000||p boot_core_PerlIO||| boot_core_UNIVERSAL||| boot_core_xsutils||| bytes_from_utf8||5.007001| bytes_to_utf8||5.006001| cache_re||| call_argv|5.006000||p call_atexit||5.006000| call_body||| call_list_body||| call_list||5.004000| call_method|5.006000||p call_pv|5.006000||p call_sv|5.006000||p calloc||5.007002|n cando||| cast_i32||5.006000| cast_iv||5.006000| cast_ulong||5.006000| cast_uv||5.006000| check_uni||| checkcomma||| checkposixcc||| ck_anoncode||| ck_bitop||| ck_concat||| ck_defined||| ck_delete||| ck_die||| ck_eof||| ck_eval||| ck_exec||| ck_exists||| ck_exit||| ck_ftst||| ck_fun||| ck_glob||| ck_grep||| ck_index||| ck_join||| ck_lengthconst||| ck_lfun||| ck_listiob||| ck_match||| ck_method||| ck_null||| ck_open||| ck_repeat||| ck_require||| ck_retarget||| ck_return||| ck_rfun||| ck_rvconst||| ck_sassign||| ck_select||| ck_shift||| ck_sort||| ck_spair||| ck_split||| ck_subr||| ck_substr||| ck_svconst||| ck_trunc||| ck_unpack||| cl_and||| cl_anything||| cl_init_zero||| cl_init||| cl_is_anything||| cl_or||| closest_cop||| convert||| cop_free||| cr_textfilter||| croak_nocontext|||vn croak|||v csighandler||5.007001|n custom_op_desc||5.007003| custom_op_name||5.007003| cv_ckproto||| cv_clone||| cv_const_sv||5.004000| cv_dump||| cv_undef||| cx_dump||5.005000| cx_dup||| cxinc||| dAXMARK||5.009003| dAX|5.007002||p dITEMS|5.007002||p dMARK||| dMY_CXT_SV|5.007003||p dMY_CXT|5.007003||p dNOOP|5.006000||p dORIGMARK||| dSP||| dTHR|5.004050||p dTHXa|5.006000||p dTHXoa|5.006000||p dTHX|5.006000||p dUNDERBAR|5.009002||p dXCPT|5.009002||p dXSARGS||| dXSI32||| dXSTARG|5.006000||p deb_curcv||| deb_nocontext|||vn deb_stack_all||| deb_stack_n||| debop||5.005000| debprofdump||5.005000| debprof||| debstackptrs||5.007003| debstack||5.007003| deb||5.007003|v del_he||| del_sv||| delimcpy||5.004000| depcom||| deprecate_old||| deprecate||| despatch_signals||5.007001| die_nocontext|||vn die_where||| die|||v dirp_dup||| div128||| djSP||| do_aexec5||| do_aexec||| do_aspawn||| do_binmode||5.004050| do_chomp||| do_chop||| do_close||| do_dump_pad||| do_eof||| do_exec3||| do_execfree||| do_exec||| do_gv_dump||5.006000| do_gvgv_dump||5.006000| do_hv_dump||5.006000| do_ipcctl||| do_ipcget||| do_join||| do_kv||| do_magic_dump||5.006000| do_msgrcv||| do_msgsnd||| do_oddball||| do_op_dump||5.006000| do_open9||5.006000| do_openn||5.007001| do_open||5.004000| do_pipe||| do_pmop_dump||5.006000| do_print||| do_readline||| do_seek||| do_semop||| do_shmio||| do_spawn_nowait||| do_spawn||| do_sprintf||| do_sv_dump||5.006000| do_sysseek||| do_tell||| do_trans_complex_utf8||| do_trans_complex||| do_trans_count_utf8||| do_trans_count||| do_trans_simple_utf8||| do_trans_simple||| do_trans||| do_vecget||| do_vecset||| do_vop||| docatch_body||| docatch||| doeval||| dofile||| dofindlabel||| doform||| doing_taint||5.008001|n dooneliner||| doopen_pm||| doparseform||| dopoptoeval||| dopoptolabel||| dopoptoloop||| dopoptosub_at||| dopoptosub||| dounwind||| dowantarray||| dump_all||5.006000| dump_eval||5.006000| dump_fds||| dump_form||5.006000| dump_indent||5.006000|v dump_mstats||| dump_packsubs||5.006000| dump_sub||5.006000| dump_vindent||5.006000| dumpuntil||| dup_attrlist||| emulate_eaccess||| eval_pv|5.006000||p eval_sv|5.006000||p expect_number||| fbm_compile||5.005000| fbm_instr||5.005000| fd_on_nosuid_fs||| filter_add||| filter_del||| filter_gets||| filter_read||| find_beginning||| find_byclass||| find_in_my_stash||| find_runcv||| find_rundefsvoffset||5.009002| find_script||| find_uninit_var||| fold_constants||| forbid_setid||| force_ident||| force_list||| force_next||| force_version||| force_word||| form_nocontext|||vn form||5.004000|v fp_dup||| fprintf_nocontext|||vn free_global_struct||| free_tied_hv_pool||| free_tmps||| gen_constant_list||| get_av|5.006000||p get_context||5.006000|n get_cv|5.006000||p get_db_sub||| get_debug_opts||| get_hash_seed||| get_hv|5.006000||p get_mstats||| get_no_modify||| get_num||| get_op_descs||5.005000| get_op_names||5.005000| get_opargs||| get_ppaddr||5.006000| get_sv|5.006000||p get_vtbl||5.005030| getcwd_sv||5.007002| getenv_len||| gp_dup||| gp_free||| gp_ref||| grok_bin|5.007003||p grok_hex|5.007003||p grok_number|5.007002||p grok_numeric_radix|5.007002||p grok_oct|5.007003||p group_end||| gv_AVadd||| gv_HVadd||| gv_IOadd||| gv_autoload4||5.004000| gv_check||| gv_dump||5.006000| gv_efullname3||5.004000| gv_efullname4||5.006001| gv_efullname||| gv_ename||| gv_fetchfile||| gv_fetchmeth_autoload||5.007003| gv_fetchmethod_autoload||5.004000| gv_fetchmethod||| gv_fetchmeth||| gv_fetchpvn_flags||5.009002| gv_fetchpv||| gv_fetchsv||5.009002| gv_fullname3||5.004000| gv_fullname4||5.006001| gv_fullname||| gv_handler||5.007001| gv_init_sv||| gv_init||| gv_share||| gv_stashpvn|5.006000||p gv_stashpv||| gv_stashsv||| he_dup||| hek_dup||| hfreeentries||| hsplit||| hv_assert||5.009001| hv_auxinit||| hv_clear_placeholders||5.009001| hv_clear||| hv_delayfree_ent||5.004000| hv_delete_common||| hv_delete_ent||5.004000| hv_delete||| hv_eiter_p||5.009003| hv_eiter_set||5.009003| hv_exists_ent||5.004000| hv_exists||| hv_fetch_common||| hv_fetch_ent||5.004000| hv_fetch||| hv_free_ent||5.004000| hv_iterinit||| hv_iterkeysv||5.004000| hv_iterkey||| hv_iternext_flags||5.008000| hv_iternextsv||| hv_iternext||| hv_iterval||| hv_ksplit||5.004000| hv_magic_check||| hv_magic||| hv_name_set||5.009003| hv_notallowed||| hv_placeholders_get||5.009003| hv_placeholders_p||5.009003| hv_placeholders_set||5.009003| hv_riter_p||5.009003| hv_riter_set||5.009003| hv_scalar||5.009001| hv_store_ent||5.004000| hv_store_flags||5.008000| hv_store||| hv_undef||| ibcmp_locale||5.004000| ibcmp_utf8||5.007003| ibcmp||| incl_perldb||| incline||| incpush||| ingroup||| init_argv_symbols||| init_debugger||| init_global_struct||| init_i18nl10n||5.006000| init_i18nl14n||5.006000| init_ids||| init_interp||| init_lexer||| init_main_stash||| init_perllib||| init_postdump_symbols||| init_predump_symbols||| init_stacks||5.005000| init_tm||5.007002| instr||| intro_my||| intuit_method||| intuit_more||| invert||| io_close||| isALNUM||| isALPHA||| isDIGIT||| isLOWER||| isSPACE||| isUPPER||| is_an_int||| is_gv_magical_sv||| is_gv_magical||| is_handle_constructor||| is_list_assignment||| is_lvalue_sub||5.007001| is_uni_alnum_lc||5.006000| is_uni_alnumc_lc||5.006000| is_uni_alnumc||5.006000| is_uni_alnum||5.006000| is_uni_alpha_lc||5.006000| is_uni_alpha||5.006000| is_uni_ascii_lc||5.006000| is_uni_ascii||5.006000| is_uni_cntrl_lc||5.006000| is_uni_cntrl||5.006000| is_uni_digit_lc||5.006000| is_uni_digit||5.006000| is_uni_graph_lc||5.006000| is_uni_graph||5.006000| is_uni_idfirst_lc||5.006000| is_uni_idfirst||5.006000| is_uni_lower_lc||5.006000| is_uni_lower||5.006000| is_uni_print_lc||5.006000| is_uni_print||5.006000| is_uni_punct_lc||5.006000| is_uni_punct||5.006000| is_uni_space_lc||5.006000| is_uni_space||5.006000| is_uni_upper_lc||5.006000| is_uni_upper||5.006000| is_uni_xdigit_lc||5.006000| is_uni_xdigit||5.006000| is_utf8_alnumc||5.006000| is_utf8_alnum||5.006000| is_utf8_alpha||5.006000| is_utf8_ascii||5.006000| is_utf8_char_slow||| is_utf8_char||5.006000| is_utf8_cntrl||5.006000| is_utf8_digit||5.006000| is_utf8_graph||5.006000| is_utf8_idcont||5.008000| is_utf8_idfirst||5.006000| is_utf8_lower||5.006000| is_utf8_mark||5.006000| is_utf8_print||5.006000| is_utf8_punct||5.006000| is_utf8_space||5.006000| is_utf8_string_loclen||5.009003| is_utf8_string_loc||5.008001| is_utf8_string||5.006001| is_utf8_upper||5.006000| is_utf8_xdigit||5.006000| isa_lookup||| items|||n ix|||n jmaybe||| keyword||| leave_scope||| lex_end||| lex_start||| linklist||| listkids||| list||| load_module_nocontext|||vn load_module||5.006000|v localize||| looks_like_number||| lop||| mPUSHi|5.009002||p mPUSHn|5.009002||p mPUSHp|5.009002||p mPUSHu|5.009002||p mXPUSHi|5.009002||p mXPUSHn|5.009002||p mXPUSHp|5.009002||p mXPUSHu|5.009002||p magic_clear_all_env||| magic_clearenv||| magic_clearpack||| magic_clearsig||| magic_dump||5.006000| magic_existspack||| magic_freearylen_p||| magic_freeovrld||| magic_freeregexp||| magic_getarylen||| magic_getdefelem||| magic_getglob||| magic_getnkeys||| magic_getpack||| magic_getpos||| magic_getsig||| magic_getsubstr||| magic_gettaint||| magic_getuvar||| magic_getvec||| magic_get||| magic_killbackrefs||| magic_len||| magic_methcall||| magic_methpack||| magic_nextpack||| magic_regdata_cnt||| magic_regdatum_get||| magic_regdatum_set||| magic_scalarpack||| magic_set_all_env||| magic_setamagic||| magic_setarylen||| magic_setbm||| magic_setcollxfrm||| magic_setdbline||| magic_setdefelem||| magic_setenv||| magic_setfm||| magic_setglob||| magic_setisa||| magic_setmglob||| magic_setnkeys||| magic_setpack||| magic_setpos||| magic_setregexp||| magic_setsig||| magic_setsubstr||| magic_settaint||| magic_setutf8||| magic_setuvar||| magic_setvec||| magic_set||| magic_sizepack||| magic_wipepack||| magicname||| make_trie||| malloced_size|||n malloc||5.007002|n markstack_grow||| measure_struct||| memEQ|5.004000||p memNE|5.004000||p mem_collxfrm||| mess_alloc||| mess_nocontext|||vn mess||5.006000|v method_common||| mfree||5.007002|n mg_clear||| mg_copy||| mg_dup||| mg_find||| mg_free||| mg_get||| mg_length||5.005000| mg_localize||| mg_magical||| mg_set||| mg_size||5.005000| mini_mktime||5.007002| missingterm||| mode_from_discipline||| modkids||| mod||| moreswitches||| mul128||| mulexp10|||n my_atof2||5.007002| my_atof||5.006000| my_attrs||| my_bcopy|||n my_betoh16|||n my_betoh32|||n my_betoh64|||n my_betohi|||n my_betohl|||n my_betohs|||n my_bzero|||n my_chsize||| my_exit_jump||| my_exit||| my_failure_exit||5.004000| my_fflush_all||5.006000| my_fork||5.007003|n my_htobe16|||n my_htobe32|||n my_htobe64|||n my_htobei|||n my_htobel|||n my_htobes|||n my_htole16|||n my_htole32|||n my_htole64|||n my_htolei|||n my_htolel|||n my_htoles|||n my_htonl||| my_kid||| my_letoh16|||n my_letoh32|||n my_letoh64|||n my_letohi|||n my_letohl|||n my_letohs|||n my_lstat||| my_memcmp||5.004000|n my_memset|||n my_ntohl||| my_pclose||5.004000| my_popen_list||5.007001| my_popen||5.004000| my_setenv||| my_socketpair||5.007003|n my_stat||| my_strftime||5.007002| my_swabn|||n my_swap||| my_unexec||| my||| newANONATTRSUB||5.006000| newANONHASH||| newANONLIST||| newANONSUB||| newASSIGNOP||| newATTRSUB||5.006000| newAVREF||| newAV||| newBINOP||| newCONDOP||| newCONSTSUB|5.006000||p newCVREF||| newDEFSVOP||| newFORM||| newFOROP||| newGVOP||| newGVREF||| newGVgen||| newHVREF||| newHVhv||5.005000| newHV||| newIO||| newLISTOP||| newLOGOP||| newLOOPEX||| newLOOPOP||| newMYSUB||5.006000| newNULLLIST||| newOP||| newPADOP||5.006000| newPMOP||| newPROG||| newPVOP||| newRANGE||| newRV_inc|5.004000||p newRV_noinc|5.006000||p newRV||| newSLICEOP||| newSTATEOP||| newSUB||| newSVOP||| newSVREF||| newSVhek||5.009003| newSViv||| newSVnv||| newSVpvf_nocontext|||vn newSVpvf||5.004000|v newSVpvn_share||5.007001| newSVpvn|5.006000||p newSVpv||| newSVrv||| newSVsv||| newSVuv|5.006000||p newSV||| newUNOP||| newWHILEOP||5.009003| newXSproto||5.006000| newXS||5.006000| new_collate||5.006000| new_constant||| new_ctype||5.006000| new_he||| new_logop||| new_numeric||5.006000| new_stackinfo||5.005000| new_version||5.009000| next_symbol||| nextargv||| nextchar||| ninstr||| no_bareword_allowed||| no_fh_allowed||| no_op||| not_a_number||| nothreadhook||5.008000| nuke_stacks||| num_overflow|||n oopsAV||| oopsCV||| oopsHV||| op_clear||| op_const_sv||| op_dump||5.006000| op_free||| op_null||5.007002| op_refcnt_lock||5.009002| op_refcnt_unlock||5.009002| open_script||| pMY_CXT_|5.007003||p pMY_CXT|5.007003||p pTHX_|5.006000||p pTHX|5.006000||p pack_cat||5.007003| pack_rec||| package||| packlist||5.008001| pad_add_anon||| pad_add_name||| pad_alloc||| pad_block_start||| pad_check_dup||| pad_compname_type||| pad_findlex||| pad_findmy||| pad_fixup_inner_anons||| pad_free||| pad_leavemy||| pad_new||| pad_push||| pad_reset||| pad_setsv||| pad_sv||| pad_swipe||| pad_tidy||| pad_undef||| parse_body||| parse_unicode_opts||| path_is_absolute||| peep||| pending_ident||| perl_alloc_using|||n perl_alloc|||n perl_clone_using|||n perl_clone|||n perl_construct|||n perl_destruct||5.007003|n perl_free|||n perl_parse||5.006000|n perl_run|||n pidgone||| pmflag||| pmop_dump||5.006000| pmruntime||| pmtrans||| pop_scope||| pregcomp||| pregexec||| pregfree||| prepend_elem||| printf_nocontext|||vn ptr_table_clear||| ptr_table_fetch||| ptr_table_free||| ptr_table_new||| ptr_table_split||| ptr_table_store||| push_scope||| put_byte||| pv_display||5.006000| pv_uni_display||5.007003| qerror||| re_croak2||| re_dup||| re_intuit_start||5.006000| re_intuit_string||5.006000| realloc||5.007002|n reentrant_free||| reentrant_init||| reentrant_retry|||vn reentrant_size||| refkids||| refto||| ref||| reg_node||| reganode||| regatom||| regbranch||| regclass_swash||5.007003| regclass||| regcp_set_to||| regcppop||| regcppush||| regcurly||| regdump||5.005000| regexec_flags||5.005000| reghop3||| reghopmaybe3||| reghopmaybe||| reghop||| reginclass||| reginitcolors||5.006000| reginsert||| regmatch||| regnext||5.005000| regoptail||| regpiece||| regpposixcc||| regprop||| regrepeat_hard||| regrepeat||| regtail||| regtry||| reguni||| regwhite||| reg||| repeatcpy||| report_evil_fh||| report_uninit||| require_errno||| require_pv||5.006000| rninstr||| rsignal_restore||| rsignal_save||| rsignal_state||5.004000| rsignal||5.004000| run_body||| runops_debug||5.005000| runops_standard||5.005000| rvpv_dup||| rxres_free||| rxres_restore||| rxres_save||| safesyscalloc||5.006000|n safesysfree||5.006000|n safesysmalloc||5.006000|n safesysrealloc||5.006000|n same_dirent||| save_I16||5.004000| save_I32||| save_I8||5.006000| save_aelem||5.004050| save_alloc||5.006000| save_aptr||| save_ary||| save_bool||5.008001| save_clearsv||| save_delete||| save_destructor_x||5.006000| save_destructor||5.006000| save_freeop||| save_freepv||| save_freesv||| save_generic_pvref||5.006001| save_generic_svref||5.005030| save_gp||5.004000| save_hash||| save_hek_flags||| save_helem||5.004050| save_hints||5.005000| save_hptr||| save_int||| save_item||| save_iv||5.005000| save_lines||| save_list||| save_long||| save_magic||| save_mortalizesv||5.007001| save_nogv||| save_op||| save_padsv||5.007001| save_pptr||| save_re_context||5.006000| save_scalar_at||| save_scalar||| save_set_svflags||5.009000| save_shared_pvref||5.007003| save_sptr||| save_svref||| save_threadsv||5.005000| save_vptr||5.006000| savepvn||| savepv||| savesharedpv||5.007003| savestack_grow_cnt||5.008001| savestack_grow||| savesvpv||5.009002| sawparens||| scalar_mod_type||| scalarboolean||| scalarkids||| scalarseq||| scalarvoid||| scalar||| scan_bin||5.006000| scan_commit||| scan_const||| scan_formline||| scan_heredoc||| scan_hex||| scan_ident||| scan_inputsymbol||| scan_num||5.007001| scan_oct||| scan_pat||| scan_str||| scan_subst||| scan_trans||| scan_version||5.009001| scan_vstring||5.008001| scan_word||| scope||| screaminstr||5.005000| seed||| set_context||5.006000|n set_csh||| set_numeric_local||5.006000| set_numeric_radix||5.006000| set_numeric_standard||5.006000| setdefout||| setenv_getix||| share_hek_flags||| share_hek||| si_dup||| sighandler|||n simplify_sort||| skipspace||| sortsv||5.007003| ss_dup||| stack_grow||| start_glob||| start_subparse||5.004000| stashpv_hvname_match||5.009003| stdize_locale||| strEQ||| strGE||| strGT||| strLE||| strLT||| strNE||| str_to_version||5.006000| strnEQ||| strnNE||| study_chunk||| sub_crush_depth||| sublex_done||| sublex_push||| sublex_start||| sv_2bool||| sv_2cv||| sv_2io||| sv_2iuv_non_preserve||| sv_2iv_flags||5.009001| sv_2iv||| sv_2mortal||| sv_2nv||| sv_2pv_flags||5.007002| sv_2pv_nolen|5.006000||p sv_2pvbyte_nolen||| sv_2pvbyte|5.006000||p sv_2pvutf8_nolen||5.006000| sv_2pvutf8||5.006000| sv_2pv||| sv_2uv_flags||5.009001| sv_2uv|5.004000||p sv_add_arena||| sv_add_backref||| sv_backoff||| sv_bless||| sv_cat_decode||5.008001| sv_catpv_mg|5.006000||p sv_catpvf_mg_nocontext|||pvn sv_catpvf_mg|5.006000|5.004000|pv sv_catpvf_nocontext|||vn sv_catpvf||5.004000|v sv_catpvn_flags||5.007002| sv_catpvn_mg|5.006000||p sv_catpvn_nomg|5.007002||p sv_catpvn||| sv_catpv||| sv_catsv_flags||5.007002| sv_catsv_mg|5.006000||p sv_catsv_nomg|5.007002||p sv_catsv||| sv_chop||| sv_clean_all||| sv_clean_objs||| sv_clear||| sv_cmp_locale||5.004000| sv_cmp||| sv_collxfrm||| sv_compile_2op||5.008001| sv_copypv||5.007003| sv_dec||| sv_del_backref||| sv_derived_from||5.004000| sv_dump||| sv_dup||| sv_eq||| sv_force_normal_flags||5.007001| sv_force_normal||5.006000| sv_free2||| sv_free_arenas||| sv_free||| sv_gets||5.004000| sv_grow||| sv_inc||| sv_insert||| sv_isa||| sv_isobject||| sv_iv||5.005000| sv_len_utf8||5.006000| sv_len||| sv_magicext||5.007003| sv_magic||| sv_mortalcopy||| sv_newmortal||| sv_newref||| sv_nolocking||5.007003| sv_nosharing||5.007003| sv_nounlocking||5.007003| sv_nv||5.005000| sv_peek||5.005000| sv_pos_b2u||5.006000| sv_pos_u2b||5.006000| sv_pvbyten_force||5.006000| sv_pvbyten||5.006000| sv_pvbyte||5.006000| sv_pvn_force_flags||5.007002| sv_pvn_force|||p sv_pvn_nomg|5.007003||p sv_pvn|5.006000||p sv_pvutf8n_force||5.006000| sv_pvutf8n||5.006000| sv_pvutf8||5.006000| sv_pv||5.006000| sv_recode_to_utf8||5.007003| sv_reftype||| sv_release_COW||| sv_release_IVX||| sv_replace||| sv_report_used||| sv_reset||| sv_rvweaken||5.006000| sv_setiv_mg|5.006000||p sv_setiv||| sv_setnv_mg|5.006000||p sv_setnv||| sv_setpv_mg|5.006000||p sv_setpvf_mg_nocontext|||pvn sv_setpvf_mg|5.006000|5.004000|pv sv_setpvf_nocontext|||vn sv_setpvf||5.004000|v sv_setpviv_mg||5.008001| sv_setpviv||5.008001| sv_setpvn_mg|5.006000||p sv_setpvn||| sv_setpv||| sv_setref_iv||| sv_setref_nv||| sv_setref_pvn||| sv_setref_pv||| sv_setref_uv||5.007001| sv_setsv_cow||| sv_setsv_flags||5.007002| sv_setsv_mg|5.006000||p sv_setsv_nomg|5.007002||p sv_setsv||| sv_setuv_mg|5.006000||p sv_setuv|5.006000||p sv_tainted||5.004000| sv_taint||5.004000| sv_true||5.005000| sv_unglob||| sv_uni_display||5.007003| sv_unmagic||| sv_unref_flags||5.007001| sv_unref||| sv_untaint||5.004000| sv_upgrade||| sv_usepvn_mg|5.006000||p sv_usepvn||| sv_utf8_decode||5.006000| sv_utf8_downgrade||5.006000| sv_utf8_encode||5.006000| sv_utf8_upgrade_flags||5.007002| sv_utf8_upgrade||5.007001| sv_uv|5.006000||p sv_vcatpvf_mg|5.006000|5.004000|p sv_vcatpvfn||5.004000| sv_vcatpvf|5.006000|5.004000|p sv_vsetpvf_mg|5.006000|5.004000|p sv_vsetpvfn||5.004000| sv_vsetpvf|5.006000|5.004000|p svtype||| swallow_bom||| swash_fetch||5.007002| swash_init||5.006000| sys_intern_clear||| sys_intern_dup||| sys_intern_init||| taint_env||| taint_proper||| tmps_grow||5.006000| toLOWER||| toUPPER||| to_byte_substr||| to_uni_fold||5.007003| to_uni_lower_lc||5.006000| to_uni_lower||5.007003| to_uni_title_lc||5.006000| to_uni_title||5.007003| to_uni_upper_lc||5.006000| to_uni_upper||5.007003| to_utf8_case||5.007003| to_utf8_fold||5.007003| to_utf8_lower||5.007003| to_utf8_substr||| to_utf8_title||5.007003| to_utf8_upper||5.007003| tokeq||| tokereport||| too_few_arguments||| too_many_arguments||| unlnk||| unpack_rec||| unpack_str||5.007003| unpackstring||5.008001| unshare_hek_or_pvn||| unshare_hek||| unsharepvn||5.004000| upg_version||5.009000| usage||| utf16_textfilter||| utf16_to_utf8_reversed||5.006001| utf16_to_utf8||5.006001| utf16rev_textfilter||| utf8_distance||5.006000| utf8_hop||5.006000| utf8_length||5.007001| utf8_mg_pos_init||| utf8_mg_pos||| utf8_to_bytes||5.006001| utf8_to_uvchr||5.007001| utf8_to_uvuni||5.007001| utf8n_to_uvchr||5.007001| utf8n_to_uvuni||5.007001| utilize||| uvchr_to_utf8_flags||5.007003| uvchr_to_utf8||5.007001| uvuni_to_utf8_flags||5.007003| uvuni_to_utf8||5.007001| validate_suid||| varname||| vcmp||5.009000| vcroak||5.006000| vdeb||5.007003| vdie||| vform||5.006000| visit||| vivify_defelem||| vivify_ref||| vload_module||5.006000| vmess||5.006000| vnewSVpvf|5.006000|5.004000|p vnormal||5.009002| vnumify||5.009000| vstringify||5.009000| vwarner||5.006000| vwarn||5.006000| wait4pid||| warn_nocontext|||vn warner_nocontext|||vn warner||5.006000|v warn|||v watch||| whichsig||| write_to_stderr||| yyerror||| yylex||| yyparse||| yywarn||| ); if (exists $opt{'list-unsupported'}) { my $f; for $f (sort { lc $a cmp lc $b } keys %API) { next unless $API{$f}{todo}; print "$f ", '.'x(40-length($f)), " ", format_version($API{$f}{todo}), "\n"; } exit 0; } # Scan for possible replacement candidates my(%replace, %need, %hints, %depends); my $replace = 0; my $hint = ''; while () { if ($hint) { if (m{^\s*\*\s(.*?)\s*$}) { $hints{$hint} ||= ''; # suppress warning with older perls $hints{$hint} .= "$1\n"; } else { $hint = ''; } } $hint = $1 if m{^\s*$rccs\sHint:\s+(\w+)\s*$}; $replace = $1 if m{^\s*$rccs\s+Replace:\s+(\d+)\s+$rcce\s*$}; $replace{$2} = $1 if $replace and m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+)}; $replace{$2} = $1 if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+).*$rccs\s+Replace\s+$rcce}; $replace{$1} = $2 if m{^\s*$rccs\s+Replace (\w+) with (\w+)\s+$rcce\s*$}; if (m{^\s*$rccs\s+(\w+)\s+depends\s+on\s+(\w+(\s*,\s*\w+)*)\s+$rcce\s*$}) { push @{$depends{$1}}, map { s/\s+//g; $_ } split /,/, $2; } $need{$1} = 1 if m{^#if\s+defined\(NEED_(\w+)(?:_GLOBAL)?\)}; } if (exists $opt{'api-info'}) { my $f; my $count = 0; my $match = $opt{'api-info'} =~ m!^/(.*)/$! ? $1 : "^\Q$opt{'api-info'}\E\$"; for $f (sort { lc $a cmp lc $b } keys %API) { next unless $f =~ /$match/; print "\n=== $f ===\n\n"; my $info = 0; if ($API{$f}{base} || $API{$f}{todo}) { my $base = format_version($API{$f}{base} || $API{$f}{todo}); print "Supported at least starting from perl-$base.\n"; $info++; } if ($API{$f}{provided}) { my $todo = $API{$f}{todo} ? format_version($API{$f}{todo}) : "5.003"; print "Support by $ppport provided back to perl-$todo.\n"; print "Support needs to be explicitly requested by NEED_$f.\n" if exists $need{$f}; print "Depends on: ", join(', ', @{$depends{$f}}), ".\n" if exists $depends{$f}; print "$hints{$f}" if exists $hints{$f}; $info++; } unless ($info) { print "No portability information available.\n"; } $count++; } if ($count > 0) { print "\n"; } else { print "Found no API matching '$opt{'api-info'}'.\n"; } exit 0; } if (exists $opt{'list-provided'}) { my $f; for $f (sort { lc $a cmp lc $b } keys %API) { next unless $API{$f}{provided}; my @flags; push @flags, 'explicit' if exists $need{$f}; push @flags, 'depend' if exists $depends{$f}; push @flags, 'hint' if exists $hints{$f}; my $flags = @flags ? ' ['.join(', ', @flags).']' : ''; print "$f$flags\n"; } exit 0; } my @files; my @srcext = qw( xs c h cc cpp ); my $srcext = join '|', @srcext; if (@ARGV) { my %seen; @files = grep { -f && !exists $seen{$_} } map { glob $_ } @ARGV; } else { eval { require File::Find; File::Find::find(sub { $File::Find::name =~ /\.($srcext)$/i and push @files, $File::Find::name; }, '.'); }; if ($@) { @files = map { glob "*.$_" } @srcext; } } if (!@ARGV || $opt{filter}) { my(@in, @out); my %xsc = map { /(.*)\.xs$/ ? ("$1.c" => 1, "$1.cc" => 1) : () } @files; for (@files) { my $out = exists $xsc{$_} || /\b\Q$ppport\E$/i || !/\.($srcext)$/i; push @{ $out ? \@out : \@in }, $_; } if (@ARGV && @out) { warning("Skipping the following files (use --nofilter to avoid this):\n| ", join "\n| ", @out); } @files = @in; } unless (@files) { die "No input files given!\n"; } my(%files, %global, %revreplace); %revreplace = reverse %replace; my $filename; my $patch_opened = 0; for $filename (@files) { unless (open IN, "<$filename") { warn "Unable to read from $filename: $!\n"; next; } info("Scanning $filename ..."); my $c = do { local $/; }; close IN; my %file = (orig => $c, changes => 0); # temporarily remove C comments from the code my @ccom; $c =~ s{ ( [^"'/]+ | (?:"[^"\\]*(?:\\.[^"\\]*)*" [^"'/]*)+ | (?:'[^'\\]*(?:\\.[^'\\]*)*' [^"'/]*)+ ) | (/ (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]* )) }{ defined $2 and push @ccom, $2; defined $1 ? $1 : "$ccs$#ccom$cce"; }egsx; $file{ccom} = \@ccom; $file{code} = $c; $file{has_inc_ppport} = ($c =~ /#.*include.*\Q$ppport\E/); my $func; for $func (keys %API) { my $match = $func; $match .= "|$revreplace{$func}" if exists $revreplace{$func}; if ($c =~ /\b(?:Perl_)?($match)\b/) { $file{uses_replace}{$1}++ if exists $revreplace{$func} && $1 eq $revreplace{$func}; $file{uses_Perl}{$func}++ if $c =~ /\bPerl_$func\b/; if (exists $API{$func}{provided}) { if (!exists $API{$func}{base} || $API{$func}{base} > $opt{'compat-version'}) { $file{uses}{$func}++; my @deps = rec_depend($func); if (@deps) { $file{uses_deps}{$func} = \@deps; for (@deps) { $file{uses}{$_} = 0 unless exists $file{uses}{$_}; } } for ($func, @deps) { if (exists $need{$_}) { $file{needs}{$_} = 'static'; } } } } if (exists $API{$func}{todo} && $API{$func}{todo} > $opt{'compat-version'}) { if ($c =~ /\b$func\b/) { $file{uses_todo}{$func}++; } } } } while ($c =~ /^$HS*#$HS*define$HS+(NEED_(\w+?)(_GLOBAL)?)\b/mg) { if (exists $need{$2}) { $file{defined $3 ? 'needed_global' : 'needed_static'}{$2}++; } else { warning("Possibly wrong #define $1 in $filename"); } } for (qw(uses needs uses_todo needed_global needed_static)) { for $func (keys %{$file{$_}}) { push @{$global{$_}{$func}}, $filename; } } $files{$filename} = \%file; } # Globally resolve NEED_'s my $need; for $need (keys %{$global{needs}}) { if (@{$global{needs}{$need}} > 1) { my @targets = @{$global{needs}{$need}}; my @t = grep $files{$_}{needed_global}{$need}, @targets; @targets = @t if @t; @t = grep /\.xs$/i, @targets; @targets = @t if @t; my $target = shift @targets; $files{$target}{needs}{$need} = 'global'; for (@{$global{needs}{$need}}) { $files{$_}{needs}{$need} = 'extern' if $_ ne $target; } } } for $filename (@files) { exists $files{$filename} or next; info("=== Analyzing $filename ==="); my %file = %{$files{$filename}}; my $func; my $c = $file{code}; for $func (sort keys %{$file{uses_Perl}}) { if ($API{$func}{varargs}) { my $changes = ($c =~ s{\b(Perl_$func\s*\(\s*)(?!aTHX_?)(\)|[^\s)]*\))} { $1 . ($2 eq ')' ? 'aTHX' : 'aTHX_ ') . $2 }ge); if ($changes) { warning("Doesn't pass interpreter argument aTHX to Perl_$func"); $file{changes} += $changes; } } else { warning("Uses Perl_$func instead of $func"); $file{changes} += ($c =~ s{\bPerl_$func(\s*)\((\s*aTHX_?)?\s*} {$func$1(}g); } } for $func (sort keys %{$file{uses_replace}}) { warning("Uses $func instead of $replace{$func}"); $file{changes} += ($c =~ s/\b$func\b/$replace{$func}/g); } for $func (sort keys %{$file{uses}}) { next unless $file{uses}{$func}; # if it's only a dependency if (exists $file{uses_deps}{$func}) { diag("Uses $func, which depends on ", join(', ', @{$file{uses_deps}{$func}})); } elsif (exists $replace{$func}) { warning("Uses $func instead of $replace{$func}"); $file{changes} += ($c =~ s/\b$func\b/$replace{$func}/g); } else { diag("Uses $func"); } hint($func); } for $func (sort keys %{$file{uses_todo}}) { warning("Uses $func, which may not be portable below perl ", format_version($API{$func}{todo})); } for $func (sort keys %{$file{needed_static}}) { my $message = ''; if (not exists $file{uses}{$func}) { $message = "No need to define NEED_$func if $func is never used"; } elsif (exists $file{needs}{$func} && $file{needs}{$func} ne 'static') { $message = "No need to define NEED_$func when already needed globally"; } if ($message) { diag($message); $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_$func\b.*$LF//mg); } } for $func (sort keys %{$file{needed_global}}) { my $message = ''; if (not exists $global{uses}{$func}) { $message = "No need to define NEED_${func}_GLOBAL if $func is never used"; } elsif (exists $file{needs}{$func}) { if ($file{needs}{$func} eq 'extern') { $message = "No need to define NEED_${func}_GLOBAL when already needed globally"; } elsif ($file{needs}{$func} eq 'static') { $message = "No need to define NEED_${func}_GLOBAL when only used in this file"; } } if ($message) { diag($message); $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_${func}_GLOBAL\b.*$LF//mg); } } $file{needs_inc_ppport} = keys %{$file{uses}}; if ($file{needs_inc_ppport}) { my $pp = ''; for $func (sort keys %{$file{needs}}) { my $type = $file{needs}{$func}; next if $type eq 'extern'; my $suffix = $type eq 'global' ? '_GLOBAL' : ''; unless (exists $file{"needed_$type"}{$func}) { if ($type eq 'global') { diag("Files [@{$global{needs}{$func}}] need $func, adding global request"); } else { diag("File needs $func, adding static request"); } $pp .= "#define NEED_$func$suffix\n"; } } if ($pp && ($c =~ s/^(?=$HS*#$HS*define$HS+NEED_\w+)/$pp/m)) { $pp = ''; $file{changes}++; } unless ($file{has_inc_ppport}) { diag("Needs to include '$ppport'"); $pp .= qq(#include "$ppport"\n) } if ($pp) { $file{changes} += ($c =~ s/^($HS*#$HS*define$HS+NEED_\w+.*?)^/$1$pp/ms) || ($c =~ s/^(?=$HS*#$HS*include.*\Q$ppport\E)/$pp/m) || ($c =~ s/^($HS*#$HS*include.*XSUB.*\s*?)^/$1$pp/m) || ($c =~ s/^/$pp/); } } else { if ($file{has_inc_ppport}) { diag("No need to include '$ppport'"); $file{changes} += ($c =~ s/^$HS*?#$HS*include.*\Q$ppport\E.*?$LF//m); } } # put back in our C comments my $ix; my $cppc = 0; my @ccom = @{$file{ccom}}; for $ix (0 .. $#ccom) { if (!$opt{cplusplus} && $ccom[$ix] =~ s!^//!!) { $cppc++; $file{changes} += $c =~ s/$rccs$ix$rcce/$ccs$ccom[$ix] $cce/; } else { $c =~ s/$rccs$ix$rcce/$ccom[$ix]/; } } if ($cppc) { my $s = $cppc != 1 ? 's' : ''; warning("Uses $cppc C++ style comment$s, which is not portable"); } if ($file{changes}) { if (exists $opt{copy}) { my $newfile = "$filename$opt{copy}"; if (-e $newfile) { error("'$newfile' already exists, refusing to write copy of '$filename'"); } else { local *F; if (open F, ">$newfile") { info("Writing copy of '$filename' with changes to '$newfile'"); print F $c; close F; } else { error("Cannot open '$newfile' for writing: $!"); } } } elsif (exists $opt{patch} || $opt{changes}) { if (exists $opt{patch}) { unless ($patch_opened) { if (open PATCH, ">$opt{patch}") { $patch_opened = 1; } else { error("Cannot open '$opt{patch}' for writing: $!"); delete $opt{patch}; $opt{changes} = 1; goto fallback; } } mydiff(\*PATCH, $filename, $c); } else { fallback: info("Suggested changes:"); mydiff(\*STDOUT, $filename, $c); } } else { my $s = $file{changes} == 1 ? '' : 's'; info("$file{changes} potentially required change$s detected"); } } else { info("Looks good"); } } close PATCH if $patch_opened; exit 0; sub mydiff { local *F = shift; my($file, $str) = @_; my $diff; if (exists $opt{diff}) { $diff = run_diff($opt{diff}, $file, $str); } if (!defined $diff and can_use('Text::Diff')) { $diff = Text::Diff::diff($file, \$str, { STYLE => 'Unified' }); $diff = <
$tmp") { print F $str; close F; if (open F, "$prog $file $tmp |") { while () { s/\Q$tmp\E/$file.patched/; $diff .= $_; } close F; unlink $tmp; return $diff; } unlink $tmp; } else { error("Cannot open '$tmp' for writing: $!"); } return undef; } sub can_use { eval "use @_;"; return $@ eq ''; } sub rec_depend { my $func = shift; my %seen; return () unless exists $depends{$func}; grep !$seen{$_}++, map { ($_, rec_depend($_)) } @{$depends{$func}}; } sub parse_version { my $ver = shift; if ($ver =~ /^(\d+)\.(\d+)\.(\d+)$/) { return ($1, $2, $3); } elsif ($ver !~ /^\d+\.[\d_]+$/) { die "cannot parse version '$ver'\n"; } $ver =~ s/_//g; $ver =~ s/$/000000/; my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/; $v = int $v; $s = int $s; if ($r < 5 || ($r == 5 && $v < 6)) { if ($s % 10) { die "cannot parse version '$ver'\n"; } } return ($r, $v, $s); } sub format_version { my $ver = shift; $ver =~ s/$/000000/; my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/; $v = int $v; $s = int $s; if ($r < 5 || ($r == 5 && $v < 6)) { if ($s % 10) { die "invalid version '$ver'\n"; } $s /= 10; $ver = sprintf "%d.%03d", $r, $v; $s > 0 and $ver .= sprintf "_%02d", $s; return $ver; } return sprintf "%d.%d.%d", $r, $v, $s; } sub info { $opt{quiet} and return; print @_, "\n"; } sub diag { $opt{quiet} and return; $opt{diag} and print @_, "\n"; } sub warning { $opt{quiet} and return; print "*** ", @_, "\n"; } sub error { print "*** ERROR: ", @_, "\n"; } my %given_hints; sub hint { $opt{quiet} and return; $opt{hints} or return; my $func = shift; exists $hints{$func} or return; $given_hints{$func}++ and return; my $hint = $hints{$func}; $hint =~ s/^/ /mg; print " --- hint for $func ---\n", $hint; } sub usage { my($usage) = do { local(@ARGV,$/)=($0); <> } =~ /^=head\d$HS+SYNOPSIS\s*^(.*?)\s*^=/ms; my %M = ( 'I' => '*' ); $usage =~ s/^\s*perl\s+\S+/$^X $0/; $usage =~ s/([A-Z])<([^>]+)>/$M{$1}$2$M{$1}/g; print < # endif # if !(defined(PERL_VERSION) || (defined(SUBVERSION) && defined(PATCHLEVEL))) # include # endif # ifndef PERL_REVISION # define PERL_REVISION (5) /* Replace: 1 */ # define PERL_VERSION PATCHLEVEL # define PERL_SUBVERSION SUBVERSION /* Replace PERL_PATCHLEVEL with PERL_VERSION */ /* Replace: 0 */ # endif #endif #define PERL_BCDVERSION ((PERL_REVISION * 0x1000000L) + (PERL_VERSION * 0x1000L) + PERL_SUBVERSION) /* It is very unlikely that anyone will try to use this with Perl 6 (or greater), but who knows. */ #if PERL_REVISION != 5 # error ppport.h only works with Perl version 5 #endif /* PERL_REVISION != 5 */ #ifdef I_LIMITS # include #endif #ifndef PERL_UCHAR_MIN # define PERL_UCHAR_MIN ((unsigned char)0) #endif #ifndef PERL_UCHAR_MAX # ifdef UCHAR_MAX # define PERL_UCHAR_MAX ((unsigned char)UCHAR_MAX) # else # ifdef MAXUCHAR # define PERL_UCHAR_MAX ((unsigned char)MAXUCHAR) # else # define PERL_UCHAR_MAX ((unsigned char)~(unsigned)0) # endif # endif #endif #ifndef PERL_USHORT_MIN # define PERL_USHORT_MIN ((unsigned short)0) #endif #ifndef PERL_USHORT_MAX # ifdef USHORT_MAX # define PERL_USHORT_MAX ((unsigned short)USHORT_MAX) # else # ifdef MAXUSHORT # define PERL_USHORT_MAX ((unsigned short)MAXUSHORT) # else # ifdef USHRT_MAX # define PERL_USHORT_MAX ((unsigned short)USHRT_MAX) # else # define PERL_USHORT_MAX ((unsigned short)~(unsigned)0) # endif # endif # endif #endif #ifndef PERL_SHORT_MAX # ifdef SHORT_MAX # define PERL_SHORT_MAX ((short)SHORT_MAX) # else # ifdef MAXSHORT /* Often used in */ # define PERL_SHORT_MAX ((short)MAXSHORT) # else # ifdef SHRT_MAX # define PERL_SHORT_MAX ((short)SHRT_MAX) # else # define PERL_SHORT_MAX ((short) (PERL_USHORT_MAX >> 1)) # endif # endif # endif #endif #ifndef PERL_SHORT_MIN # ifdef SHORT_MIN # define PERL_SHORT_MIN ((short)SHORT_MIN) # else # ifdef MINSHORT # define PERL_SHORT_MIN ((short)MINSHORT) # else # ifdef SHRT_MIN # define PERL_SHORT_MIN ((short)SHRT_MIN) # else # define PERL_SHORT_MIN (-PERL_SHORT_MAX - ((3 & -1) == 3)) # endif # endif # endif #endif #ifndef PERL_UINT_MAX # ifdef UINT_MAX # define PERL_UINT_MAX ((unsigned int)UINT_MAX) # else # ifdef MAXUINT # define PERL_UINT_MAX ((unsigned int)MAXUINT) # else # define PERL_UINT_MAX (~(unsigned int)0) # endif # endif #endif #ifndef PERL_UINT_MIN # define PERL_UINT_MIN ((unsigned int)0) #endif #ifndef PERL_INT_MAX # ifdef INT_MAX # define PERL_INT_MAX ((int)INT_MAX) # else # ifdef MAXINT /* Often used in */ # define PERL_INT_MAX ((int)MAXINT) # else # define PERL_INT_MAX ((int)(PERL_UINT_MAX >> 1)) # endif # endif #endif #ifndef PERL_INT_MIN # ifdef INT_MIN # define PERL_INT_MIN ((int)INT_MIN) # else # ifdef MININT # define PERL_INT_MIN ((int)MININT) # else # define PERL_INT_MIN (-PERL_INT_MAX - ((3 & -1) == 3)) # endif # endif #endif #ifndef PERL_ULONG_MAX # ifdef ULONG_MAX # define PERL_ULONG_MAX ((unsigned long)ULONG_MAX) # else # ifdef MAXULONG # define PERL_ULONG_MAX ((unsigned long)MAXULONG) # else # define PERL_ULONG_MAX (~(unsigned long)0) # endif # endif #endif #ifndef PERL_ULONG_MIN # define PERL_ULONG_MIN ((unsigned long)0L) #endif #ifndef PERL_LONG_MAX # ifdef LONG_MAX # define PERL_LONG_MAX ((long)LONG_MAX) # else # ifdef MAXLONG # define PERL_LONG_MAX ((long)MAXLONG) # else # define PERL_LONG_MAX ((long) (PERL_ULONG_MAX >> 1)) # endif # endif #endif #ifndef PERL_LONG_MIN # ifdef LONG_MIN # define PERL_LONG_MIN ((long)LONG_MIN) # else # ifdef MINLONG # define PERL_LONG_MIN ((long)MINLONG) # else # define PERL_LONG_MIN (-PERL_LONG_MAX - ((3 & -1) == 3)) # endif # endif #endif #if defined(HAS_QUAD) && (defined(convex) || defined(uts)) # ifndef PERL_UQUAD_MAX # ifdef ULONGLONG_MAX # define PERL_UQUAD_MAX ((unsigned long long)ULONGLONG_MAX) # else # ifdef MAXULONGLONG # define PERL_UQUAD_MAX ((unsigned long long)MAXULONGLONG) # else # define PERL_UQUAD_MAX (~(unsigned long long)0) # endif # endif # endif # ifndef PERL_UQUAD_MIN # define PERL_UQUAD_MIN ((unsigned long long)0L) # endif # ifndef PERL_QUAD_MAX # ifdef LONGLONG_MAX # define PERL_QUAD_MAX ((long long)LONGLONG_MAX) # else # ifdef MAXLONGLONG # define PERL_QUAD_MAX ((long long)MAXLONGLONG) # else # define PERL_QUAD_MAX ((long long) (PERL_UQUAD_MAX >> 1)) # endif # endif # endif # ifndef PERL_QUAD_MIN # ifdef LONGLONG_MIN # define PERL_QUAD_MIN ((long long)LONGLONG_MIN) # else # ifdef MINLONGLONG # define PERL_QUAD_MIN ((long long)MINLONGLONG) # else # define PERL_QUAD_MIN (-PERL_QUAD_MAX - ((3 & -1) == 3)) # endif # endif # endif #endif /* This is based on code from 5.003 perl.h */ #ifdef HAS_QUAD # ifdef cray #ifndef IVTYPE # define IVTYPE int #endif #ifndef IV_MIN # define IV_MIN PERL_INT_MIN #endif #ifndef IV_MAX # define IV_MAX PERL_INT_MAX #endif #ifndef UV_MIN # define UV_MIN PERL_UINT_MIN #endif #ifndef UV_MAX # define UV_MAX PERL_UINT_MAX #endif # ifdef INTSIZE #ifndef IVSIZE # define IVSIZE INTSIZE #endif # endif # else # if defined(convex) || defined(uts) #ifndef IVTYPE # define IVTYPE long long #endif #ifndef IV_MIN # define IV_MIN PERL_QUAD_MIN #endif #ifndef IV_MAX # define IV_MAX PERL_QUAD_MAX #endif #ifndef UV_MIN # define UV_MIN PERL_UQUAD_MIN #endif #ifndef UV_MAX # define UV_MAX PERL_UQUAD_MAX #endif # ifdef LONGLONGSIZE #ifndef IVSIZE # define IVSIZE LONGLONGSIZE #endif # endif # else #ifndef IVTYPE # define IVTYPE long #endif #ifndef IV_MIN # define IV_MIN PERL_LONG_MIN #endif #ifndef IV_MAX # define IV_MAX PERL_LONG_MAX #endif #ifndef UV_MIN # define UV_MIN PERL_ULONG_MIN #endif #ifndef UV_MAX # define UV_MAX PERL_ULONG_MAX #endif # ifdef LONGSIZE #ifndef IVSIZE # define IVSIZE LONGSIZE #endif # endif # endif # endif #ifndef IVSIZE # define IVSIZE 8 #endif #ifndef PERL_QUAD_MIN # define PERL_QUAD_MIN IV_MIN #endif #ifndef PERL_QUAD_MAX # define PERL_QUAD_MAX IV_MAX #endif #ifndef PERL_UQUAD_MIN # define PERL_UQUAD_MIN UV_MIN #endif #ifndef PERL_UQUAD_MAX # define PERL_UQUAD_MAX UV_MAX #endif #else #ifndef IVTYPE # define IVTYPE long #endif #ifndef IV_MIN # define IV_MIN PERL_LONG_MIN #endif #ifndef IV_MAX # define IV_MAX PERL_LONG_MAX #endif #ifndef UV_MIN # define UV_MIN PERL_ULONG_MIN #endif #ifndef UV_MAX # define UV_MAX PERL_ULONG_MAX #endif #endif #ifndef IVSIZE # ifdef LONGSIZE # define IVSIZE LONGSIZE # else # define IVSIZE 4 /* A bold guess, but the best we can make. */ # endif #endif #ifndef UVTYPE # define UVTYPE unsigned IVTYPE #endif #ifndef UVSIZE # define UVSIZE IVSIZE #endif #ifndef sv_setuv # define sv_setuv(sv, uv) \ STMT_START { \ UV TeMpUv = uv; \ if (TeMpUv <= IV_MAX) \ sv_setiv(sv, TeMpUv); \ else \ sv_setnv(sv, (double)TeMpUv); \ } STMT_END #endif #ifndef newSVuv # define newSVuv(uv) ((uv) <= IV_MAX ? newSViv((IV)uv) : newSVnv((NV)uv)) #endif #ifndef sv_2uv # define sv_2uv(sv) ((PL_Sv = (sv)), (UV) (SvNOK(PL_Sv) ? SvNV(PL_Sv) : sv_2nv(PL_Sv))) #endif #ifndef SvUVX # define SvUVX(sv) ((UV)SvIVX(sv)) #endif #ifndef SvUVXx # define SvUVXx(sv) SvUVX(sv) #endif #ifndef SvUV # define SvUV(sv) (SvIOK(sv) ? SvUVX(sv) : sv_2uv(sv)) #endif #ifndef SvUVx # define SvUVx(sv) ((PL_Sv = (sv)), SvUV(PL_Sv)) #endif /* Hint: sv_uv * Always use the SvUVx() macro instead of sv_uv(). */ #ifndef sv_uv # define sv_uv(sv) SvUVx(sv) #endif #ifndef XST_mUV # define XST_mUV(i,v) (ST(i) = sv_2mortal(newSVuv(v)) ) #endif #ifndef XSRETURN_UV # define XSRETURN_UV(v) STMT_START { XST_mUV(0,v); XSRETURN(1); } STMT_END #endif #ifndef PUSHu # define PUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); PUSHTARG; } STMT_END #endif #ifndef XPUSHu # define XPUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); XPUSHTARG; } STMT_END #endif #if (PERL_VERSION < 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION <= 5)) /* Replace: 1 */ # define PL_DBsingle DBsingle # define PL_DBsub DBsub # define PL_Sv Sv # define PL_compiling compiling # define PL_copline copline # define PL_curcop curcop # define PL_curstash curstash # define PL_debstash debstash # define PL_defgv defgv # define PL_diehook diehook # define PL_dirty dirty # define PL_dowarn dowarn # define PL_errgv errgv # define PL_hexdigit hexdigit # define PL_hints hints # define PL_na na # define PL_no_modify no_modify # define PL_perl_destruct_level perl_destruct_level # define PL_perldb perldb # define PL_ppaddr ppaddr # define PL_rsfp_filters rsfp_filters # define PL_rsfp rsfp # define PL_stack_base stack_base # define PL_stack_sp stack_sp # define PL_stdingv stdingv # define PL_sv_arenaroot sv_arenaroot # define PL_sv_no sv_no # define PL_sv_undef sv_undef # define PL_sv_yes sv_yes # define PL_tainted tainted # define PL_tainting tainting /* Replace: 0 */ #endif #ifndef PERL_UNUSED_DECL # ifdef HASATTRIBUTE # if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER) # define PERL_UNUSED_DECL # else # define PERL_UNUSED_DECL __attribute__((unused)) # endif # else # define PERL_UNUSED_DECL # endif #endif #ifndef NOOP # define NOOP (void)0 #endif #ifndef dNOOP # define dNOOP extern int Perl___notused PERL_UNUSED_DECL #endif #ifndef NVTYPE # if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) # define NVTYPE long double # else # define NVTYPE double # endif typedef NVTYPE NV; #endif #ifndef INT2PTR # if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE) # define PTRV UV # define INT2PTR(any,d) (any)(d) # else # if PTRSIZE == LONGSIZE # define PTRV unsigned long # else # define PTRV unsigned # endif # define INT2PTR(any,d) (any)(PTRV)(d) # endif # define NUM2PTR(any,d) (any)(PTRV)(d) # define PTR2IV(p) INT2PTR(IV,p) # define PTR2UV(p) INT2PTR(UV,p) # define PTR2NV(p) NUM2PTR(NV,p) # if PTRSIZE == LONGSIZE # define PTR2ul(p) (unsigned long)(p) # else # define PTR2ul(p) INT2PTR(unsigned long,p) # endif #endif /* !INT2PTR */ #undef START_EXTERN_C #undef END_EXTERN_C #undef EXTERN_C #ifdef __cplusplus # define START_EXTERN_C extern "C" { # define END_EXTERN_C } # define EXTERN_C extern "C" #else # define START_EXTERN_C # define END_EXTERN_C # define EXTERN_C extern #endif #ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN # if defined(__STRICT_ANSI__) && defined(PERL_GCC_PEDANTIC) # define PERL_GCC_BRACE_GROUPS_FORBIDDEN # endif #endif #undef STMT_START #undef STMT_END #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus) # define STMT_START (void)( /* gcc supports ``({ STATEMENTS; })'' */ # define STMT_END ) #else # if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__) # define STMT_START if (1) # define STMT_END else (void)0 # else # define STMT_START do # define STMT_END while (0) # endif #endif #ifndef boolSV # define boolSV(b) ((b) ? &PL_sv_yes : &PL_sv_no) #endif /* DEFSV appears first in 5.004_56 */ #ifndef DEFSV # define DEFSV GvSV(PL_defgv) #endif #ifndef SAVE_DEFSV # define SAVE_DEFSV SAVESPTR(GvSV(PL_defgv)) #endif /* Older perls (<=5.003) lack AvFILLp */ #ifndef AvFILLp # define AvFILLp AvFILL #endif #ifndef ERRSV # define ERRSV get_sv("@",FALSE) #endif #ifndef newSVpvn # define newSVpvn(data,len) ((data) \ ? ((len) ? newSVpv((data), (len)) : newSVpv("", 0)) \ : newSV(0)) #endif /* Hint: gv_stashpvn * This function's backport doesn't support the length parameter, but * rather ignores it. Portability can only be ensured if the length * parameter is used for speed reasons, but the length can always be * correctly computed from the string argument. */ #ifndef gv_stashpvn # define gv_stashpvn(str,len,create) gv_stashpv(str,create) #endif /* Replace: 1 */ #ifndef get_cv # define get_cv perl_get_cv #endif #ifndef get_sv # define get_sv perl_get_sv #endif #ifndef get_av # define get_av perl_get_av #endif #ifndef get_hv # define get_hv perl_get_hv #endif /* Replace: 0 */ #ifdef HAS_MEMCMP #ifndef memNE # define memNE(s1,s2,l) (memcmp(s1,s2,l)) #endif #ifndef memEQ # define memEQ(s1,s2,l) (!memcmp(s1,s2,l)) #endif #else #ifndef memNE # define memNE(s1,s2,l) (bcmp(s1,s2,l)) #endif #ifndef memEQ # define memEQ(s1,s2,l) (!bcmp(s1,s2,l)) #endif #endif #ifndef MoveD # define MoveD(s,d,n,t) memmove((char*)(d),(char*)(s), (n) * sizeof(t)) #endif #ifndef CopyD # define CopyD(s,d,n,t) memcpy((char*)(d),(char*)(s), (n) * sizeof(t)) #endif #ifdef HAS_MEMSET #ifndef ZeroD # define ZeroD(d,n,t) memzero((char*)(d), (n) * sizeof(t)) #endif #else #ifndef ZeroD # define ZeroD(d,n,t) ((void)memzero((char*)(d), (n) * sizeof(t)),d) #endif #endif #ifndef Poison # define Poison(d,n,t) (void)memset((char*)(d), 0xAB, (n) * sizeof(t)) #endif #ifndef dUNDERBAR # define dUNDERBAR dNOOP #endif #ifndef UNDERBAR # define UNDERBAR DEFSV #endif #ifndef dAX # define dAX I32 ax = MARK - PL_stack_base + 1 #endif #ifndef dITEMS # define dITEMS I32 items = SP - MARK #endif #ifndef dXSTARG # define dXSTARG SV * targ = sv_newmortal() #endif #ifndef dTHR # define dTHR dNOOP #endif #ifndef dTHX # define dTHX dNOOP #endif #ifndef dTHXa # define dTHXa(x) dNOOP #endif #ifndef pTHX # define pTHX void #endif #ifndef pTHX_ # define pTHX_ #endif #ifndef aTHX # define aTHX #endif #ifndef aTHX_ # define aTHX_ #endif #ifndef dTHXoa # define dTHXoa(x) dTHXa(x) #endif #ifndef PUSHmortal # define PUSHmortal PUSHs(sv_newmortal()) #endif #ifndef mPUSHp # define mPUSHp(p,l) sv_setpvn_mg(PUSHmortal, (p), (l)) #endif #ifndef mPUSHn # define mPUSHn(n) sv_setnv_mg(PUSHmortal, (NV)(n)) #endif #ifndef mPUSHi # define mPUSHi(i) sv_setiv_mg(PUSHmortal, (IV)(i)) #endif #ifndef mPUSHu # define mPUSHu(u) sv_setuv_mg(PUSHmortal, (UV)(u)) #endif #ifndef XPUSHmortal # define XPUSHmortal XPUSHs(sv_newmortal()) #endif #ifndef mXPUSHp # define mXPUSHp(p,l) STMT_START { EXTEND(sp,1); sv_setpvn_mg(PUSHmortal, (p), (l)); } STMT_END #endif #ifndef mXPUSHn # define mXPUSHn(n) STMT_START { EXTEND(sp,1); sv_setnv_mg(PUSHmortal, (NV)(n)); } STMT_END #endif #ifndef mXPUSHi # define mXPUSHi(i) STMT_START { EXTEND(sp,1); sv_setiv_mg(PUSHmortal, (IV)(i)); } STMT_END #endif #ifndef mXPUSHu # define mXPUSHu(u) STMT_START { EXTEND(sp,1); sv_setuv_mg(PUSHmortal, (UV)(u)); } STMT_END #endif /* Replace: 1 */ #ifndef call_sv # define call_sv perl_call_sv #endif #ifndef call_pv # define call_pv perl_call_pv #endif #ifndef call_argv # define call_argv perl_call_argv #endif #ifndef call_method # define call_method perl_call_method #endif #ifndef eval_sv # define eval_sv perl_eval_sv #endif /* Replace: 0 */ /* Replace perl_eval_pv with eval_pv */ /* eval_pv depends on eval_sv */ #ifndef eval_pv #if defined(NEED_eval_pv) static SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error); static #else extern SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error); #endif #ifdef eval_pv # undef eval_pv #endif #define eval_pv(a,b) DPPP_(my_eval_pv)(aTHX_ a,b) #define Perl_eval_pv DPPP_(my_eval_pv) #if defined(NEED_eval_pv) || defined(NEED_eval_pv_GLOBAL) SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error) { dSP; SV* sv = newSVpv(p, 0); PUSHMARK(sp); eval_sv(sv, G_SCALAR); SvREFCNT_dec(sv); SPAGAIN; sv = POPs; PUTBACK; if (croak_on_error && SvTRUE(GvSV(errgv))) croak(SvPVx(GvSV(errgv), na)); return sv; } #endif #endif #ifndef newRV_inc # define newRV_inc(sv) newRV(sv) /* Replace */ #endif #ifndef newRV_noinc #if defined(NEED_newRV_noinc) static SV * DPPP_(my_newRV_noinc)(SV *sv); static #else extern SV * DPPP_(my_newRV_noinc)(SV *sv); #endif #ifdef newRV_noinc # undef newRV_noinc #endif #define newRV_noinc(a) DPPP_(my_newRV_noinc)(aTHX_ a) #define Perl_newRV_noinc DPPP_(my_newRV_noinc) #if defined(NEED_newRV_noinc) || defined(NEED_newRV_noinc_GLOBAL) SV * DPPP_(my_newRV_noinc)(SV *sv) { SV *rv = (SV *)newRV(sv); SvREFCNT_dec(sv); return rv; } #endif #endif /* Hint: newCONSTSUB * Returns a CV* as of perl-5.7.1. This return value is not supported * by Devel::PPPort. */ /* newCONSTSUB from IO.xs is in the core starting with 5.004_63 */ #if ((PERL_VERSION < 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION < 63))) && ((PERL_VERSION != 4) || (PERL_SUBVERSION != 5)) #if defined(NEED_newCONSTSUB) static void DPPP_(my_newCONSTSUB)(HV *stash, char *name, SV *sv); static #else extern void DPPP_(my_newCONSTSUB)(HV *stash, char *name, SV *sv); #endif #ifdef newCONSTSUB # undef newCONSTSUB #endif #define newCONSTSUB(a,b,c) DPPP_(my_newCONSTSUB)(aTHX_ a,b,c) #define Perl_newCONSTSUB DPPP_(my_newCONSTSUB) #if defined(NEED_newCONSTSUB) || defined(NEED_newCONSTSUB_GLOBAL) void DPPP_(my_newCONSTSUB)(HV *stash, char *name, SV *sv) { U32 oldhints = PL_hints; HV *old_cop_stash = PL_curcop->cop_stash; HV *old_curstash = PL_curstash; line_t oldline = PL_curcop->cop_line; PL_curcop->cop_line = PL_copline; PL_hints &= ~HINT_BLOCK_SCOPE; if (stash) PL_curstash = PL_curcop->cop_stash = stash; newSUB( #if ((PERL_VERSION < 3) || ((PERL_VERSION == 3) && (PERL_SUBVERSION < 22))) start_subparse(), #elif ((PERL_VERSION == 3) && (PERL_SUBVERSION == 22)) start_subparse(0), #else /* 5.003_23 onwards */ start_subparse(FALSE, 0), #endif newSVOP(OP_CONST, 0, newSVpv(name,0)), newSVOP(OP_CONST, 0, &PL_sv_no), /* SvPV(&PL_sv_no) == "" -- GMB */ newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv)) ); PL_hints = oldhints; PL_curcop->cop_stash = old_cop_stash; PL_curstash = old_curstash; PL_curcop->cop_line = oldline; } #endif #endif /* * Boilerplate macros for initializing and accessing interpreter-local * data from C. All statics in extensions should be reworked to use * this, if you want to make the extension thread-safe. See ext/re/re.xs * for an example of the use of these macros. * * Code that uses these macros is responsible for the following: * 1. #define MY_CXT_KEY to a unique string, e.g. "DynaLoader_guts" * 2. Declare a typedef named my_cxt_t that is a structure that contains * all the data that needs to be interpreter-local. * 3. Use the START_MY_CXT macro after the declaration of my_cxt_t. * 4. Use the MY_CXT_INIT macro such that it is called exactly once * (typically put in the BOOT: section). * 5. Use the members of the my_cxt_t structure everywhere as * MY_CXT.member. * 6. Use the dMY_CXT macro (a declaration) in all the functions that * access MY_CXT. */ #if defined(MULTIPLICITY) || defined(PERL_OBJECT) || \ defined(PERL_CAPI) || defined(PERL_IMPLICIT_CONTEXT) #ifndef START_MY_CXT /* This must appear in all extensions that define a my_cxt_t structure, * right after the definition (i.e. at file scope). The non-threads * case below uses it to declare the data as static. */ #define START_MY_CXT #if (PERL_VERSION < 4 || (PERL_VERSION == 4 && PERL_SUBVERSION < 68 )) /* Fetches the SV that keeps the per-interpreter data. */ #define dMY_CXT_SV \ SV *my_cxt_sv = get_sv(MY_CXT_KEY, FALSE) #else /* >= perl5.004_68 */ #define dMY_CXT_SV \ SV *my_cxt_sv = *hv_fetch(PL_modglobal, MY_CXT_KEY, \ sizeof(MY_CXT_KEY)-1, TRUE) #endif /* < perl5.004_68 */ /* This declaration should be used within all functions that use the * interpreter-local data. */ #define dMY_CXT \ dMY_CXT_SV; \ my_cxt_t *my_cxtp = INT2PTR(my_cxt_t*,SvUV(my_cxt_sv)) /* Creates and zeroes the per-interpreter data. * (We allocate my_cxtp in a Perl SV so that it will be released when * the interpreter goes away.) */ #define MY_CXT_INIT \ dMY_CXT_SV; \ /* newSV() allocates one more than needed */ \ my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\ Zero(my_cxtp, 1, my_cxt_t); \ sv_setuv(my_cxt_sv, PTR2UV(my_cxtp)) /* This macro must be used to access members of the my_cxt_t structure. * e.g. MYCXT.some_data */ #define MY_CXT (*my_cxtp) /* Judicious use of these macros can reduce the number of times dMY_CXT * is used. Use is similar to pTHX, aTHX etc. */ #define pMY_CXT my_cxt_t *my_cxtp #define pMY_CXT_ pMY_CXT, #define _pMY_CXT ,pMY_CXT #define aMY_CXT my_cxtp #define aMY_CXT_ aMY_CXT, #define _aMY_CXT ,aMY_CXT #endif /* START_MY_CXT */ #ifndef MY_CXT_CLONE /* Clones the per-interpreter data. */ #define MY_CXT_CLONE \ dMY_CXT_SV; \ my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\ Copy(INT2PTR(my_cxt_t*, SvUV(my_cxt_sv)), my_cxtp, 1, my_cxt_t);\ sv_setuv(my_cxt_sv, PTR2UV(my_cxtp)) #endif #else /* single interpreter */ #ifndef START_MY_CXT #define START_MY_CXT static my_cxt_t my_cxt; #define dMY_CXT_SV dNOOP #define dMY_CXT dNOOP #define MY_CXT_INIT NOOP #define MY_CXT my_cxt #define pMY_CXT void #define pMY_CXT_ #define _pMY_CXT #define aMY_CXT #define aMY_CXT_ #define _aMY_CXT #endif /* START_MY_CXT */ #ifndef MY_CXT_CLONE #define MY_CXT_CLONE NOOP #endif #endif #ifndef IVdf # if IVSIZE == LONGSIZE # define IVdf "ld" # define UVuf "lu" # define UVof "lo" # define UVxf "lx" # define UVXf "lX" # else # if IVSIZE == INTSIZE # define IVdf "d" # define UVuf "u" # define UVof "o" # define UVxf "x" # define UVXf "X" # endif # endif #endif #ifndef NVef # if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && \ defined(PERL_PRIfldbl) /* Not very likely, but let's try anyway. */ # define NVef PERL_PRIeldbl # define NVff PERL_PRIfldbl # define NVgf PERL_PRIgldbl # else # define NVef "e" # define NVff "f" # define NVgf "g" # endif #endif #ifndef SvPV_nolen #if defined(NEED_sv_2pv_nolen) static char * DPPP_(my_sv_2pv_nolen)(pTHX_ register SV *sv); static #else extern char * DPPP_(my_sv_2pv_nolen)(pTHX_ register SV *sv); #endif #ifdef sv_2pv_nolen # undef sv_2pv_nolen #endif #define sv_2pv_nolen(a) DPPP_(my_sv_2pv_nolen)(aTHX_ a) #define Perl_sv_2pv_nolen DPPP_(my_sv_2pv_nolen) #if defined(NEED_sv_2pv_nolen) || defined(NEED_sv_2pv_nolen_GLOBAL) char * DPPP_(my_sv_2pv_nolen)(pTHX_ register SV *sv) { STRLEN n_a; return sv_2pv(sv, &n_a); } #endif /* Hint: sv_2pv_nolen * Use the SvPV_nolen() macro instead of sv_2pv_nolen(). */ /* SvPV_nolen depends on sv_2pv_nolen */ #define SvPV_nolen(sv) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? SvPVX(sv) : sv_2pv_nolen(sv)) #endif #ifdef SvPVbyte /* Hint: SvPVbyte * Does not work in perl-5.6.1, ppport.h implements a version * borrowed from perl-5.7.3. */ #if ((PERL_VERSION < 7) || ((PERL_VERSION == 7) && (PERL_SUBVERSION < 0))) #if defined(NEED_sv_2pvbyte) static char * DPPP_(my_sv_2pvbyte)(pTHX_ register SV *sv, STRLEN *lp); static #else extern char * DPPP_(my_sv_2pvbyte)(pTHX_ register SV *sv, STRLEN *lp); #endif #ifdef sv_2pvbyte # undef sv_2pvbyte #endif #define sv_2pvbyte(a,b) DPPP_(my_sv_2pvbyte)(aTHX_ a,b) #define Perl_sv_2pvbyte DPPP_(my_sv_2pvbyte) #if defined(NEED_sv_2pvbyte) || defined(NEED_sv_2pvbyte_GLOBAL) char * DPPP_(my_sv_2pvbyte)(pTHX_ register SV *sv, STRLEN *lp) { sv_utf8_downgrade(sv,0); return SvPV(sv,*lp); } #endif /* Hint: sv_2pvbyte * Use the SvPVbyte() macro instead of sv_2pvbyte(). */ #undef SvPVbyte /* SvPVbyte depends on sv_2pvbyte */ #define SvPVbyte(sv, lp) \ ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK) \ ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pvbyte(sv, &lp)) #endif #else # define SvPVbyte SvPV # define sv_2pvbyte sv_2pv #endif /* sv_2pvbyte_nolen depends on sv_2pv_nolen */ #ifndef sv_2pvbyte_nolen # define sv_2pvbyte_nolen sv_2pv_nolen #endif /* Hint: sv_pvn * Always use the SvPV() macro instead of sv_pvn(). */ #ifndef sv_pvn # define sv_pvn(sv, len) SvPV(sv, len) #endif /* Hint: sv_pvn_force * Always use the SvPV_force() macro instead of sv_pvn_force(). */ #ifndef sv_pvn_force # define sv_pvn_force(sv, len) SvPV_force(sv, len) #endif #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(vnewSVpvf) #if defined(NEED_vnewSVpvf) static SV * DPPP_(my_vnewSVpvf)(pTHX_ const char * pat, va_list * args); static #else extern SV * DPPP_(my_vnewSVpvf)(pTHX_ const char * pat, va_list * args); #endif #ifdef vnewSVpvf # undef vnewSVpvf #endif #define vnewSVpvf(a,b) DPPP_(my_vnewSVpvf)(aTHX_ a,b) #define Perl_vnewSVpvf DPPP_(my_vnewSVpvf) #if defined(NEED_vnewSVpvf) || defined(NEED_vnewSVpvf_GLOBAL) SV * DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args) { register SV *sv = newSV(0); sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); return sv; } #endif #endif /* sv_vcatpvf depends on sv_vcatpvfn */ #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_vcatpvf) # define sv_vcatpvf(sv, pat, args) sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)) #endif /* sv_vsetpvf depends on sv_vsetpvfn */ #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_vsetpvf) # define sv_vsetpvf(sv, pat, args) sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)) #endif /* sv_catpvf_mg depends on sv_vcatpvfn, sv_catpvf_mg_nocontext */ #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_catpvf_mg) #if defined(NEED_sv_catpvf_mg) static void DPPP_(my_sv_catpvf_mg)(pTHX_ SV * sv, const char * pat, ...); static #else extern void DPPP_(my_sv_catpvf_mg)(pTHX_ SV * sv, const char * pat, ...); #endif #define Perl_sv_catpvf_mg DPPP_(my_sv_catpvf_mg) #if defined(NEED_sv_catpvf_mg) || defined(NEED_sv_catpvf_mg_GLOBAL) void DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...) { va_list args; va_start(args, pat); sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); SvSETMAGIC(sv); va_end(args); } #endif #endif /* sv_catpvf_mg_nocontext depends on sv_vcatpvfn */ #ifdef PERL_IMPLICIT_CONTEXT #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_catpvf_mg_nocontext) #if defined(NEED_sv_catpvf_mg_nocontext) static void DPPP_(my_sv_catpvf_mg_nocontext)(SV * sv, const char * pat, ...); static #else extern void DPPP_(my_sv_catpvf_mg_nocontext)(SV * sv, const char * pat, ...); #endif #define sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext) #define Perl_sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext) #if defined(NEED_sv_catpvf_mg_nocontext) || defined(NEED_sv_catpvf_mg_nocontext_GLOBAL) void DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...) { dTHX; va_list args; va_start(args, pat); sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); SvSETMAGIC(sv); va_end(args); } #endif #endif #endif #ifndef sv_catpvf_mg # ifdef PERL_IMPLICIT_CONTEXT # define sv_catpvf_mg Perl_sv_catpvf_mg_nocontext # else # define sv_catpvf_mg Perl_sv_catpvf_mg # endif #endif /* sv_vcatpvf_mg depends on sv_vcatpvfn */ #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_vcatpvf_mg) # define sv_vcatpvf_mg(sv, pat, args) \ STMT_START { \ sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); \ SvSETMAGIC(sv); \ } STMT_END #endif /* sv_setpvf_mg depends on sv_vsetpvfn, sv_setpvf_mg_nocontext */ #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_setpvf_mg) #if defined(NEED_sv_setpvf_mg) static void DPPP_(my_sv_setpvf_mg)(pTHX_ SV * sv, const char * pat, ...); static #else extern void DPPP_(my_sv_setpvf_mg)(pTHX_ SV * sv, const char * pat, ...); #endif #define Perl_sv_setpvf_mg DPPP_(my_sv_setpvf_mg) #if defined(NEED_sv_setpvf_mg) || defined(NEED_sv_setpvf_mg_GLOBAL) void DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...) { va_list args; va_start(args, pat); sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); SvSETMAGIC(sv); va_end(args); } #endif #endif /* sv_setpvf_mg_nocontext depends on sv_vsetpvfn */ #ifdef PERL_IMPLICIT_CONTEXT #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_setpvf_mg_nocontext) #if defined(NEED_sv_setpvf_mg_nocontext) static void DPPP_(my_sv_setpvf_mg_nocontext)(SV * sv, const char * pat, ...); static #else extern void DPPP_(my_sv_setpvf_mg_nocontext)(SV * sv, const char * pat, ...); #endif #define sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext) #define Perl_sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext) #if defined(NEED_sv_setpvf_mg_nocontext) || defined(NEED_sv_setpvf_mg_nocontext_GLOBAL) void DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...) { dTHX; va_list args; va_start(args, pat); sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); SvSETMAGIC(sv); va_end(args); } #endif #endif #endif #ifndef sv_setpvf_mg # ifdef PERL_IMPLICIT_CONTEXT # define sv_setpvf_mg Perl_sv_setpvf_mg_nocontext # else # define sv_setpvf_mg Perl_sv_setpvf_mg # endif #endif /* sv_vsetpvf_mg depends on sv_vsetpvfn */ #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_vsetpvf_mg) # define sv_vsetpvf_mg(sv, pat, args) \ STMT_START { \ sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); \ SvSETMAGIC(sv); \ } STMT_END #endif #ifndef SvGETMAGIC # define SvGETMAGIC(x) STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END #endif #ifndef PERL_MAGIC_sv # define PERL_MAGIC_sv '\0' #endif #ifndef PERL_MAGIC_overload # define PERL_MAGIC_overload 'A' #endif #ifndef PERL_MAGIC_overload_elem # define PERL_MAGIC_overload_elem 'a' #endif #ifndef PERL_MAGIC_overload_table # define PERL_MAGIC_overload_table 'c' #endif #ifndef PERL_MAGIC_bm # define PERL_MAGIC_bm 'B' #endif #ifndef PERL_MAGIC_regdata # define PERL_MAGIC_regdata 'D' #endif #ifndef PERL_MAGIC_regdatum # define PERL_MAGIC_regdatum 'd' #endif #ifndef PERL_MAGIC_env # define PERL_MAGIC_env 'E' #endif #ifndef PERL_MAGIC_envelem # define PERL_MAGIC_envelem 'e' #endif #ifndef PERL_MAGIC_fm # define PERL_MAGIC_fm 'f' #endif #ifndef PERL_MAGIC_regex_global # define PERL_MAGIC_regex_global 'g' #endif #ifndef PERL_MAGIC_isa # define PERL_MAGIC_isa 'I' #endif #ifndef PERL_MAGIC_isaelem # define PERL_MAGIC_isaelem 'i' #endif #ifndef PERL_MAGIC_nkeys # define PERL_MAGIC_nkeys 'k' #endif #ifndef PERL_MAGIC_dbfile # define PERL_MAGIC_dbfile 'L' #endif #ifndef PERL_MAGIC_dbline # define PERL_MAGIC_dbline 'l' #endif #ifndef PERL_MAGIC_mutex # define PERL_MAGIC_mutex 'm' #endif #ifndef PERL_MAGIC_shared # define PERL_MAGIC_shared 'N' #endif #ifndef PERL_MAGIC_shared_scalar # define PERL_MAGIC_shared_scalar 'n' #endif #ifndef PERL_MAGIC_collxfrm # define PERL_MAGIC_collxfrm 'o' #endif #ifndef PERL_MAGIC_tied # define PERL_MAGIC_tied 'P' #endif #ifndef PERL_MAGIC_tiedelem # define PERL_MAGIC_tiedelem 'p' #endif #ifndef PERL_MAGIC_tiedscalar # define PERL_MAGIC_tiedscalar 'q' #endif #ifndef PERL_MAGIC_qr # define PERL_MAGIC_qr 'r' #endif #ifndef PERL_MAGIC_sig # define PERL_MAGIC_sig 'S' #endif #ifndef PERL_MAGIC_sigelem # define PERL_MAGIC_sigelem 's' #endif #ifndef PERL_MAGIC_taint # define PERL_MAGIC_taint 't' #endif #ifndef PERL_MAGIC_uvar # define PERL_MAGIC_uvar 'U' #endif #ifndef PERL_MAGIC_uvar_elem # define PERL_MAGIC_uvar_elem 'u' #endif #ifndef PERL_MAGIC_vstring # define PERL_MAGIC_vstring 'V' #endif #ifndef PERL_MAGIC_vec # define PERL_MAGIC_vec 'v' #endif #ifndef PERL_MAGIC_utf8 # define PERL_MAGIC_utf8 'w' #endif #ifndef PERL_MAGIC_substr # define PERL_MAGIC_substr 'x' #endif #ifndef PERL_MAGIC_defelem # define PERL_MAGIC_defelem 'y' #endif #ifndef PERL_MAGIC_glob # define PERL_MAGIC_glob '*' #endif #ifndef PERL_MAGIC_arylen # define PERL_MAGIC_arylen '#' #endif #ifndef PERL_MAGIC_pos # define PERL_MAGIC_pos '.' #endif #ifndef PERL_MAGIC_backref # define PERL_MAGIC_backref '<' #endif #ifndef PERL_MAGIC_ext # define PERL_MAGIC_ext '~' #endif /* That's the best we can do... */ #ifndef SvPV_force_nomg # define SvPV_force_nomg SvPV_force #endif #ifndef SvPV_nomg # define SvPV_nomg SvPV #endif #ifndef sv_catpvn_nomg # define sv_catpvn_nomg sv_catpvn #endif #ifndef sv_catsv_nomg # define sv_catsv_nomg sv_catsv #endif #ifndef sv_setsv_nomg # define sv_setsv_nomg sv_setsv #endif #ifndef sv_pvn_nomg # define sv_pvn_nomg sv_pvn #endif #ifndef SvIV_nomg # define SvIV_nomg SvIV #endif #ifndef SvUV_nomg # define SvUV_nomg SvUV #endif #ifndef sv_catpv_mg # define sv_catpv_mg(sv, ptr) \ STMT_START { \ SV *TeMpSv = sv; \ sv_catpv(TeMpSv,ptr); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_catpvn_mg # define sv_catpvn_mg(sv, ptr, len) \ STMT_START { \ SV *TeMpSv = sv; \ sv_catpvn(TeMpSv,ptr,len); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_catsv_mg # define sv_catsv_mg(dsv, ssv) \ STMT_START { \ SV *TeMpSv = dsv; \ sv_catsv(TeMpSv,ssv); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setiv_mg # define sv_setiv_mg(sv, i) \ STMT_START { \ SV *TeMpSv = sv; \ sv_setiv(TeMpSv,i); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setnv_mg # define sv_setnv_mg(sv, num) \ STMT_START { \ SV *TeMpSv = sv; \ sv_setnv(TeMpSv,num); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setpv_mg # define sv_setpv_mg(sv, ptr) \ STMT_START { \ SV *TeMpSv = sv; \ sv_setpv(TeMpSv,ptr); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setpvn_mg # define sv_setpvn_mg(sv, ptr, len) \ STMT_START { \ SV *TeMpSv = sv; \ sv_setpvn(TeMpSv,ptr,len); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setsv_mg # define sv_setsv_mg(dsv, ssv) \ STMT_START { \ SV *TeMpSv = dsv; \ sv_setsv(TeMpSv,ssv); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setuv_mg # define sv_setuv_mg(sv, i) \ STMT_START { \ SV *TeMpSv = sv; \ sv_setuv(TeMpSv,i); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_usepvn_mg # define sv_usepvn_mg(sv, ptr, len) \ STMT_START { \ SV *TeMpSv = sv; \ sv_usepvn(TeMpSv,ptr,len); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifdef USE_ITHREADS #ifndef CopFILE # define CopFILE(c) ((c)->cop_file) #endif #ifndef CopFILEGV # define CopFILEGV(c) (CopFILE(c) ? gv_fetchfile(CopFILE(c)) : Nullgv) #endif #ifndef CopFILE_set # define CopFILE_set(c,pv) ((c)->cop_file = savepv(pv)) #endif #ifndef CopFILESV # define CopFILESV(c) (CopFILE(c) ? GvSV(gv_fetchfile(CopFILE(c))) : Nullsv) #endif #ifndef CopFILEAV # define CopFILEAV(c) (CopFILE(c) ? GvAV(gv_fetchfile(CopFILE(c))) : Nullav) #endif #ifndef CopSTASHPV # define CopSTASHPV(c) ((c)->cop_stashpv) #endif #ifndef CopSTASHPV_set # define CopSTASHPV_set(c,pv) ((c)->cop_stashpv = ((pv) ? savepv(pv) : Nullch)) #endif #ifndef CopSTASH # define CopSTASH(c) (CopSTASHPV(c) ? gv_stashpv(CopSTASHPV(c),GV_ADD) : Nullhv) #endif #ifndef CopSTASH_set # define CopSTASH_set(c,hv) CopSTASHPV_set(c, (hv) ? HvNAME(hv) : Nullch) #endif #ifndef CopSTASH_eq # define CopSTASH_eq(c,hv) ((hv) && (CopSTASHPV(c) == HvNAME(hv) \ || (CopSTASHPV(c) && HvNAME(hv) \ && strEQ(CopSTASHPV(c), HvNAME(hv))))) #endif #else #ifndef CopFILEGV # define CopFILEGV(c) ((c)->cop_filegv) #endif #ifndef CopFILEGV_set # define CopFILEGV_set(c,gv) ((c)->cop_filegv = (GV*)SvREFCNT_inc(gv)) #endif #ifndef CopFILE_set # define CopFILE_set(c,pv) CopFILEGV_set((c), gv_fetchfile(pv)) #endif #ifndef CopFILESV # define CopFILESV(c) (CopFILEGV(c) ? GvSV(CopFILEGV(c)) : Nullsv) #endif #ifndef CopFILEAV # define CopFILEAV(c) (CopFILEGV(c) ? GvAV(CopFILEGV(c)) : Nullav) #endif #ifndef CopFILE # define CopFILE(c) (CopFILESV(c) ? SvPVX(CopFILESV(c)) : Nullch) #endif #ifndef CopSTASH # define CopSTASH(c) ((c)->cop_stash) #endif #ifndef CopSTASH_set # define CopSTASH_set(c,hv) ((c)->cop_stash = (hv)) #endif #ifndef CopSTASHPV # define CopSTASHPV(c) (CopSTASH(c) ? HvNAME(CopSTASH(c)) : Nullch) #endif #ifndef CopSTASHPV_set # define CopSTASHPV_set(c,pv) CopSTASH_set((c), gv_stashpv(pv,GV_ADD)) #endif #ifndef CopSTASH_eq # define CopSTASH_eq(c,hv) (CopSTASH(c) == (hv)) #endif #endif /* USE_ITHREADS */ #ifndef IN_PERL_COMPILETIME # define IN_PERL_COMPILETIME (PL_curcop == &PL_compiling) #endif #ifndef IN_LOCALE_RUNTIME # define IN_LOCALE_RUNTIME (PL_curcop->op_private & HINT_LOCALE) #endif #ifndef IN_LOCALE_COMPILETIME # define IN_LOCALE_COMPILETIME (PL_hints & HINT_LOCALE) #endif #ifndef IN_LOCALE # define IN_LOCALE (IN_PERL_COMPILETIME ? IN_LOCALE_COMPILETIME : IN_LOCALE_RUNTIME) #endif #ifndef IS_NUMBER_IN_UV # define IS_NUMBER_IN_UV 0x01 #endif #ifndef IS_NUMBER_GREATER_THAN_UV_MAX # define IS_NUMBER_GREATER_THAN_UV_MAX 0x02 #endif #ifndef IS_NUMBER_NOT_INT # define IS_NUMBER_NOT_INT 0x04 #endif #ifndef IS_NUMBER_NEG # define IS_NUMBER_NEG 0x08 #endif #ifndef IS_NUMBER_INFINITY # define IS_NUMBER_INFINITY 0x10 #endif #ifndef IS_NUMBER_NAN # define IS_NUMBER_NAN 0x20 #endif /* GROK_NUMERIC_RADIX depends on grok_numeric_radix */ #ifndef GROK_NUMERIC_RADIX # define GROK_NUMERIC_RADIX(sp, send) grok_numeric_radix(sp, send) #endif #ifndef PERL_SCAN_GREATER_THAN_UV_MAX # define PERL_SCAN_GREATER_THAN_UV_MAX 0x02 #endif #ifndef PERL_SCAN_SILENT_ILLDIGIT # define PERL_SCAN_SILENT_ILLDIGIT 0x04 #endif #ifndef PERL_SCAN_ALLOW_UNDERSCORES # define PERL_SCAN_ALLOW_UNDERSCORES 0x01 #endif #ifndef PERL_SCAN_DISALLOW_PREFIX # define PERL_SCAN_DISALLOW_PREFIX 0x02 #endif #ifndef grok_numeric_radix #if defined(NEED_grok_numeric_radix) static bool DPPP_(my_grok_numeric_radix)(pTHX_ const char ** sp, const char * send); static #else extern bool DPPP_(my_grok_numeric_radix)(pTHX_ const char ** sp, const char * send); #endif #ifdef grok_numeric_radix # undef grok_numeric_radix #endif #define grok_numeric_radix(a,b) DPPP_(my_grok_numeric_radix)(aTHX_ a,b) #define Perl_grok_numeric_radix DPPP_(my_grok_numeric_radix) #if defined(NEED_grok_numeric_radix) || defined(NEED_grok_numeric_radix_GLOBAL) bool DPPP_(my_grok_numeric_radix)(pTHX_ const char **sp, const char *send) { #ifdef USE_LOCALE_NUMERIC #ifdef PL_numeric_radix_sv if (PL_numeric_radix_sv && IN_LOCALE) { STRLEN len; char* radix = SvPV(PL_numeric_radix_sv, len); if (*sp + len <= send && memEQ(*sp, radix, len)) { *sp += len; return TRUE; } } #else /* older perls don't have PL_numeric_radix_sv so the radix * must manually be requested from locale.h */ #include dTHR; /* needed for older threaded perls */ struct lconv *lc = localeconv(); char *radix = lc->decimal_point; if (radix && IN_LOCALE) { STRLEN len = strlen(radix); if (*sp + len <= send && memEQ(*sp, radix, len)) { *sp += len; return TRUE; } } #endif /* PERL_VERSION */ #endif /* USE_LOCALE_NUMERIC */ /* always try "." if numeric radix didn't match because * we may have data from different locales mixed */ if (*sp < send && **sp == '.') { ++*sp; return TRUE; } return FALSE; } #endif #endif /* grok_number depends on grok_numeric_radix */ #ifndef grok_number #if defined(NEED_grok_number) static int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep); static #else extern int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep); #endif #ifdef grok_number # undef grok_number #endif #define grok_number(a,b,c) DPPP_(my_grok_number)(aTHX_ a,b,c) #define Perl_grok_number DPPP_(my_grok_number) #if defined(NEED_grok_number) || defined(NEED_grok_number_GLOBAL) int DPPP_(my_grok_number)(pTHX_ const char *pv, STRLEN len, UV *valuep) { const char *s = pv; const char *send = pv + len; const UV max_div_10 = UV_MAX / 10; const char max_mod_10 = UV_MAX % 10; int numtype = 0; int sawinf = 0; int sawnan = 0; while (s < send && isSPACE(*s)) s++; if (s == send) { return 0; } else if (*s == '-') { s++; numtype = IS_NUMBER_NEG; } else if (*s == '+') s++; if (s == send) return 0; /* next must be digit or the radix separator or beginning of infinity */ if (isDIGIT(*s)) { /* UVs are at least 32 bits, so the first 9 decimal digits cannot overflow. */ UV value = *s - '0'; /* This construction seems to be more optimiser friendly. (without it gcc does the isDIGIT test and the *s - '0' separately) With it gcc on arm is managing 6 instructions (6 cycles) per digit. In theory the optimiser could deduce how far to unroll the loop before checking for overflow. */ if (++s < send) { int digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { /* Now got 9 digits, so need to check each time for overflow. */ digit = *s - '0'; while (digit >= 0 && digit <= 9 && (value < max_div_10 || (value == max_div_10 && digit <= max_mod_10))) { value = value * 10 + digit; if (++s < send) digit = *s - '0'; else break; } if (digit >= 0 && digit <= 9 && (s < send)) { /* value overflowed. skip the remaining digits, don't worry about setting *valuep. */ do { s++; } while (s < send && isDIGIT(*s)); numtype |= IS_NUMBER_GREATER_THAN_UV_MAX; goto skip_value; } } } } } } } } } } } } } } } } } } numtype |= IS_NUMBER_IN_UV; if (valuep) *valuep = value; skip_value: if (GROK_NUMERIC_RADIX(&s, send)) { numtype |= IS_NUMBER_NOT_INT; while (s < send && isDIGIT(*s)) /* optional digits after the radix */ s++; } } else if (GROK_NUMERIC_RADIX(&s, send)) { numtype |= IS_NUMBER_NOT_INT | IS_NUMBER_IN_UV; /* valuep assigned below */ /* no digits before the radix means we need digits after it */ if (s < send && isDIGIT(*s)) { do { s++; } while (s < send && isDIGIT(*s)); if (valuep) { /* integer approximation is valid - it's 0. */ *valuep = 0; } } else return 0; } else if (*s == 'I' || *s == 'i') { s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; s++; if (s == send || (*s != 'F' && *s != 'f')) return 0; s++; if (s < send && (*s == 'I' || *s == 'i')) { s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; s++; if (s == send || (*s != 'I' && *s != 'i')) return 0; s++; if (s == send || (*s != 'T' && *s != 't')) return 0; s++; if (s == send || (*s != 'Y' && *s != 'y')) return 0; s++; } sawinf = 1; } else if (*s == 'N' || *s == 'n') { /* XXX TODO: There are signaling NaNs and quiet NaNs. */ s++; if (s == send || (*s != 'A' && *s != 'a')) return 0; s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; s++; sawnan = 1; } else return 0; if (sawinf) { numtype &= IS_NUMBER_NEG; /* Keep track of sign */ numtype |= IS_NUMBER_INFINITY | IS_NUMBER_NOT_INT; } else if (sawnan) { numtype &= IS_NUMBER_NEG; /* Keep track of sign */ numtype |= IS_NUMBER_NAN | IS_NUMBER_NOT_INT; } else if (s < send) { /* we can have an optional exponent part */ if (*s == 'e' || *s == 'E') { /* The only flag we keep is sign. Blow away any "it's UV" */ numtype &= IS_NUMBER_NEG; numtype |= IS_NUMBER_NOT_INT; s++; if (s < send && (*s == '-' || *s == '+')) s++; if (s < send && isDIGIT(*s)) { do { s++; } while (s < send && isDIGIT(*s)); } else return 0; } } while (s < send && isSPACE(*s)) s++; if (s >= send) return numtype; if (len == 10 && memEQ(pv, "0 but true", 10)) { if (valuep) *valuep = 0; return IS_NUMBER_IN_UV; } return 0; } #endif #endif /* * The grok_* routines have been modified to use warn() instead of * Perl_warner(). Also, 'hexdigit' was the former name of PL_hexdigit, * which is why the stack variable has been renamed to 'xdigit'. */ #ifndef grok_bin #if defined(NEED_grok_bin) static UV DPPP_(my_grok_bin)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result); static #else extern UV DPPP_(my_grok_bin)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result); #endif #ifdef grok_bin # undef grok_bin #endif #define grok_bin(a,b,c,d) DPPP_(my_grok_bin)(aTHX_ a,b,c,d) #define Perl_grok_bin DPPP_(my_grok_bin) #if defined(NEED_grok_bin) || defined(NEED_grok_bin_GLOBAL) UV DPPP_(my_grok_bin)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result) { const char *s = start; STRLEN len = *len_p; UV value = 0; NV value_nv = 0; const UV max_div_2 = UV_MAX / 2; bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; bool overflowed = FALSE; if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) { /* strip off leading b or 0b. for compatibility silently suffer "b" and "0b" as valid binary numbers. */ if (len >= 1) { if (s[0] == 'b') { s++; len--; } else if (len >= 2 && s[0] == '0' && s[1] == 'b') { s+=2; len-=2; } } } for (; len-- && *s; s++) { char bit = *s; if (bit == '0' || bit == '1') { /* Write it in this wonky order with a goto to attempt to get the compiler to make the common case integer-only loop pretty tight. With gcc seems to be much straighter code than old scan_bin. */ redo: if (!overflowed) { if (value <= max_div_2) { value = (value << 1) | (bit - '0'); continue; } /* Bah. We're just overflowed. */ warn("Integer overflow in binary number"); overflowed = TRUE; value_nv = (NV) value; } value_nv *= 2.0; /* If an NV has not enough bits in its mantissa to * represent a UV this summing of small low-order numbers * is a waste of time (because the NV cannot preserve * the low-order bits anyway): we could just remember when * did we overflow and in the end just multiply value_nv by the * right amount. */ value_nv += (NV)(bit - '0'); continue; } if (bit == '_' && len && allow_underscores && (bit = s[1]) && (bit == '0' || bit == '1')) { --len; ++s; goto redo; } if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) warn("Illegal binary digit '%c' ignored", *s); break; } if ( ( overflowed && value_nv > 4294967295.0) #if UVSIZE > 4 || (!overflowed && value > 0xffffffff ) #endif ) { warn("Binary number > 0b11111111111111111111111111111111 non-portable"); } *len_p = s - start; if (!overflowed) { *flags = 0; return value; } *flags = PERL_SCAN_GREATER_THAN_UV_MAX; if (result) *result = value_nv; return UV_MAX; } #endif #endif #ifndef grok_hex #if defined(NEED_grok_hex) static UV DPPP_(my_grok_hex)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result); static #else extern UV DPPP_(my_grok_hex)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result); #endif #ifdef grok_hex # undef grok_hex #endif #define grok_hex(a,b,c,d) DPPP_(my_grok_hex)(aTHX_ a,b,c,d) #define Perl_grok_hex DPPP_(my_grok_hex) #if defined(NEED_grok_hex) || defined(NEED_grok_hex_GLOBAL) UV DPPP_(my_grok_hex)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result) { const char *s = start; STRLEN len = *len_p; UV value = 0; NV value_nv = 0; const UV max_div_16 = UV_MAX / 16; bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; bool overflowed = FALSE; const char *xdigit; if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) { /* strip off leading x or 0x. for compatibility silently suffer "x" and "0x" as valid hex numbers. */ if (len >= 1) { if (s[0] == 'x') { s++; len--; } else if (len >= 2 && s[0] == '0' && s[1] == 'x') { s+=2; len-=2; } } } for (; len-- && *s; s++) { xdigit = strchr((char *) PL_hexdigit, *s); if (xdigit) { /* Write it in this wonky order with a goto to attempt to get the compiler to make the common case integer-only loop pretty tight. With gcc seems to be much straighter code than old scan_hex. */ redo: if (!overflowed) { if (value <= max_div_16) { value = (value << 4) | ((xdigit - PL_hexdigit) & 15); continue; } warn("Integer overflow in hexadecimal number"); overflowed = TRUE; value_nv = (NV) value; } value_nv *= 16.0; /* If an NV has not enough bits in its mantissa to * represent a UV this summing of small low-order numbers * is a waste of time (because the NV cannot preserve * the low-order bits anyway): we could just remember when * did we overflow and in the end just multiply value_nv by the * right amount of 16-tuples. */ value_nv += (NV)((xdigit - PL_hexdigit) & 15); continue; } if (*s == '_' && len && allow_underscores && s[1] && (xdigit = strchr((char *) PL_hexdigit, s[1]))) { --len; ++s; goto redo; } if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) warn("Illegal hexadecimal digit '%c' ignored", *s); break; } if ( ( overflowed && value_nv > 4294967295.0) #if UVSIZE > 4 || (!overflowed && value > 0xffffffff ) #endif ) { warn("Hexadecimal number > 0xffffffff non-portable"); } *len_p = s - start; if (!overflowed) { *flags = 0; return value; } *flags = PERL_SCAN_GREATER_THAN_UV_MAX; if (result) *result = value_nv; return UV_MAX; } #endif #endif #ifndef grok_oct #if defined(NEED_grok_oct) static UV DPPP_(my_grok_oct)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result); static #else extern UV DPPP_(my_grok_oct)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result); #endif #ifdef grok_oct # undef grok_oct #endif #define grok_oct(a,b,c,d) DPPP_(my_grok_oct)(aTHX_ a,b,c,d) #define Perl_grok_oct DPPP_(my_grok_oct) #if defined(NEED_grok_oct) || defined(NEED_grok_oct_GLOBAL) UV DPPP_(my_grok_oct)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result) { const char *s = start; STRLEN len = *len_p; UV value = 0; NV value_nv = 0; const UV max_div_8 = UV_MAX / 8; bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; bool overflowed = FALSE; for (; len-- && *s; s++) { /* gcc 2.95 optimiser not smart enough to figure that this subtraction out front allows slicker code. */ int digit = *s - '0'; if (digit >= 0 && digit <= 7) { /* Write it in this wonky order with a goto to attempt to get the compiler to make the common case integer-only loop pretty tight. */ redo: if (!overflowed) { if (value <= max_div_8) { value = (value << 3) | digit; continue; } /* Bah. We're just overflowed. */ warn("Integer overflow in octal number"); overflowed = TRUE; value_nv = (NV) value; } value_nv *= 8.0; /* If an NV has not enough bits in its mantissa to * represent a UV this summing of small low-order numbers * is a waste of time (because the NV cannot preserve * the low-order bits anyway): we could just remember when * did we overflow and in the end just multiply value_nv by the * right amount of 8-tuples. */ value_nv += (NV)digit; continue; } if (digit == ('_' - '0') && len && allow_underscores && (digit = s[1] - '0') && (digit >= 0 && digit <= 7)) { --len; ++s; goto redo; } /* Allow \octal to work the DWIM way (that is, stop scanning * as soon as non-octal characters are seen, complain only iff * someone seems to want to use the digits eight and nine). */ if (digit == 8 || digit == 9) { if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) warn("Illegal octal digit '%c' ignored", *s); } break; } if ( ( overflowed && value_nv > 4294967295.0) #if UVSIZE > 4 || (!overflowed && value > 0xffffffff ) #endif ) { warn("Octal number > 037777777777 non-portable"); } *len_p = s - start; if (!overflowed) { *flags = 0; return value; } *flags = PERL_SCAN_GREATER_THAN_UV_MAX; if (result) *result = value_nv; return UV_MAX; } #endif #endif #ifdef NO_XSLOCKS # ifdef dJMPENV # define dXCPT dJMPENV; int rEtV = 0 # define XCPT_TRY_START JMPENV_PUSH(rEtV); if (rEtV == 0) # define XCPT_TRY_END JMPENV_POP; # define XCPT_CATCH if (rEtV != 0) # define XCPT_RETHROW JMPENV_JUMP(rEtV) # else # define dXCPT Sigjmp_buf oldTOP; int rEtV = 0 # define XCPT_TRY_START Copy(top_env, oldTOP, 1, Sigjmp_buf); rEtV = Sigsetjmp(top_env, 1); if (rEtV == 0) # define XCPT_TRY_END Copy(oldTOP, top_env, 1, Sigjmp_buf); # define XCPT_CATCH if (rEtV != 0) # define XCPT_RETHROW Siglongjmp(top_env, rEtV) # endif #endif #endif /* _P_P_PORTABILITY_H_ */ /* End of File ppport.h */ libapreq2-2.13/glue/perl/xsbuilder/tables/APR/Request/CallbackTable.pm0000644000076400017500000001120211473533305024537 0ustar issacissacpackage APR::Request::CallbackTable; # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # ! WARNING: generated by My::ParseSource/ # ! Thu Nov 25 21:19:33 2010 # ! do NOT edit, any changes will be lost ! # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! $APR::Request::CallbackTable = [ { 'return_type' => 'apr_status_t', 'name' => 'apr_status_t(*)(apreq_handle_t * ,const apr_table_t * * )', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => undef }, { 'type' => 'const apr_table_t * *', 'name' => undef } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apr_status_t(*)(apreq_handle_t * ,const apr_table_t * * )', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => undef }, { 'type' => 'const apr_table_t * *', 'name' => undef } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apr_status_t(*)(apreq_handle_t * ,const apr_table_t * * )', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => undef }, { 'type' => 'const apr_table_t * *', 'name' => undef } ] }, { 'return_type' => 'apreq_cookie_t *', 'name' => 'apreq_cookie_t *(*)(apreq_handle_t * ,const char * )', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => undef }, { 'type' => 'const char *', 'name' => undef } ] }, { 'return_type' => 'apreq_param_t *', 'name' => 'apreq_param_t *(*)(apreq_handle_t * ,const char * )', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => undef }, { 'type' => 'const char *', 'name' => undef } ] }, { 'return_type' => 'apreq_param_t *', 'name' => 'apreq_param_t *(*)(apreq_handle_t * ,const char * )', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => undef }, { 'type' => 'const char *', 'name' => undef } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apr_status_t(*)(apreq_handle_t * ,const apreq_parser_t * * )', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => undef }, { 'type' => 'const apreq_parser_t * *', 'name' => undef } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apr_status_t(*)(apreq_handle_t * ,apreq_parser_t * )', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => undef }, { 'type' => 'apreq_parser_t *', 'name' => undef } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apr_status_t(*)(apreq_handle_t * ,apreq_hook_t * )', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => undef }, { 'type' => 'apreq_hook_t *', 'name' => undef } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apr_status_t(*)(apreq_handle_t * ,apr_size_t * )', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => undef }, { 'type' => 'apr_size_t *', 'name' => undef } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apr_status_t(*)(apreq_handle_t * ,apr_size_t )', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => undef }, { 'type' => 'apr_size_t', 'name' => undef } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apr_status_t(*)(apreq_handle_t * ,apr_uint64_t * )', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => undef }, { 'type' => 'apr_uint64_t *', 'name' => undef } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apr_status_t(*)(apreq_handle_t * ,apr_uint64_t )', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => undef }, { 'type' => 'apr_uint64_t', 'name' => undef } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apr_status_t(*)(apreq_handle_t * ,const char * * )', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => undef }, { 'type' => 'const char * *', 'name' => undef } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apr_status_t(*)(apreq_handle_t * ,const char * )', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => undef }, { 'type' => 'const char *', 'name' => undef } ] } ]; 1; libapreq2-2.13/glue/perl/xsbuilder/tables/APR/Request/ConstantsTable.pm0000644000076400017500000001631011473533305025024 0ustar issacissacpackage APR::Request::ConstantsTable; # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # ! WARNING: generated by My::ParseSource/ # ! Thu Nov 25 21:19:33 2010 # ! do NOT edit, any changes will be lost ! # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! $APR::Request::ConstantsTable = [ { 'name' => 'APREQ_APACHE2_H' }, { 'name' => 'APREQ_APACHE2_MMN' }, { 'name' => 'APREQ_CHARSET_BIT' }, { 'name' => 'APREQ_CHARSET_MASK' }, { 'name' => 'APREQ_COOKIE_H' }, { 'name' => 'APREQ_COOKIE_HTTPONLY_BIT' }, { 'name' => 'APREQ_COOKIE_HTTPONLY_MASK' }, { 'name' => 'APREQ_COOKIE_MAX_LENGTH' }, { 'name' => 'APREQ_COOKIE_SECURE_BIT' }, { 'name' => 'APREQ_COOKIE_SECURE_MASK' }, { 'name' => 'APREQ_COOKIE_VERSION_BIT' }, { 'name' => 'APREQ_COOKIE_VERSION_MASK' }, { 'name' => 'APREQ_DECLARE_DATA' }, { 'name' => 'APREQ_DECLARE_DATA' }, { 'name' => 'APREQ_DECLARE_DATA' }, { 'name' => 'APREQ_DECLARE_DATA' }, { 'name' => 'APREQ_DECLARE_NONSTD' }, { 'name' => 'APREQ_DECLARE_NONSTD' }, { 'name' => 'APREQ_DECLARE_NONSTD' }, { 'name' => 'APREQ_DECLARE_NONSTD' }, { 'name' => 'APREQ_DECLARE_NONSTD' }, { 'name' => 'APREQ_DECLARE_NONSTD' }, { 'name' => 'APREQ_DEFAULT_BRIGADE_LIMIT' }, { 'name' => 'APREQ_DEFAULT_NELTS' }, { 'name' => 'APREQ_DEFAULT_READ_BLOCK_SIZE' }, { 'name' => 'APREQ_DEFAULT_READ_LIMIT' }, { 'name' => 'APREQ_ERROR_BADATTR' }, { 'name' => 'APREQ_ERROR_BADCHAR' }, { 'name' => 'APREQ_ERROR_BADDATA' }, { 'name' => 'APREQ_ERROR_BADHEADER' }, { 'name' => 'APREQ_ERROR_BADSEQ' }, { 'name' => 'APREQ_ERROR_BADUTF8' }, { 'name' => 'APREQ_ERROR_GENERAL' }, { 'name' => 'APREQ_ERROR_H' }, { 'name' => 'APREQ_ERROR_INTERRUPT' }, { 'name' => 'APREQ_ERROR_MISMATCH' }, { 'name' => 'APREQ_ERROR_NOATTR' }, { 'name' => 'APREQ_ERROR_NODATA' }, { 'name' => 'APREQ_ERROR_NOHEADER' }, { 'name' => 'APREQ_ERROR_NOPARSER' }, { 'name' => 'APREQ_ERROR_NOTEMPTY' }, { 'name' => 'APREQ_ERROR_NOTOKEN' }, { 'name' => 'APREQ_ERROR_OVERLIMIT' }, { 'name' => 'APREQ_ERROR_TAINTED' }, { 'name' => 'APREQ_ERROR_UNDERLIMIT' }, { 'name' => 'APREQ_EXPIRES_HTTP', 'comment' => '*< Use date formatting consistent with RFC 2616' }, { 'name' => 'APREQ_EXPIRES_NSCOOKIE', 'comment' => '*< Use format consistent with Netscape\'s Cookie Spec' }, { 'name' => 'APREQ_FILTER_NAME' }, { 'name' => 'APREQ_FLAGS_GET' }, { 'name' => 'APREQ_FLAGS_OFF' }, { 'name' => 'APREQ_FLAGS_ON' }, { 'name' => 'APREQ_FLAGS_SET' }, { 'name' => 'APREQ_H' }, { 'name' => 'APREQ_HOOK_ARGS' }, { 'name' => 'APREQ_IS_DEV_STRING' }, { 'name' => 'APREQ_IS_DEV_STRING' }, { 'name' => 'APREQ_JOIN_AS_IS', 'comment' => '*< Join the strings without modification' }, { 'name' => 'APREQ_JOIN_DECODE', 'comment' => '*< Url-decode the strings before joining them' }, { 'name' => 'APREQ_JOIN_ENCODE', 'comment' => '*< Url-encode the strings before joining them' }, { 'name' => 'APREQ_JOIN_QUOTE', 'comment' => '*< Quote the strings, backslashing existing quote marks.' }, { 'name' => 'APREQ_MAJOR_VERSION' }, { 'name' => 'APREQ_MATCH_FULL', 'comment' => '*< Full match only.' }, { 'name' => 'APREQ_MATCH_PARTIAL', 'comment' => '*< Partial matches are ok.' }, { 'name' => 'APREQ_MINOR_VERSION' }, { 'name' => 'APREQ_MODULE' }, { 'name' => 'APREQ_MODULE_H' }, { 'name' => 'APREQ_PARAM_H' }, { 'name' => 'APREQ_PARSERS_H', 'comment' => 'These structs are defined below' }, { 'name' => 'APREQ_PARSER_ARGS' }, { 'name' => 'APREQ_PATCH_VERSION' }, { 'name' => 'APREQ_TAINTED_BIT' }, { 'name' => 'APREQ_TAINTED_MASK' }, { 'name' => 'APREQ_UTIL_H' }, { 'name' => 'APREQ_VERSION_H' }, { 'name' => 'APREQ_VERSION_STRING' }, { 'name' => 'APREQ_XS_POSTPERL_H', 'comment' => 'avoid namespace collisions from perl\'s XSUB.h' }, { 'name' => 'APREQ_XS_PREPERL_H', 'comment' => 'we want efficiency under ithreads' }, { 'name' => 'APREQ_XS_TABLES_H', 'comment' => 'backward compatibility macros support' }, { 'name' => 'APR_EBADARG', 'comment' => 'XXX: don\'t use APR_BADARG' }, { 'name' => 'APR__BucketAlloc' }, { 'name' => 'APR__Request__Param__Table' }, { 'name' => 'COOKIE_CLASS' }, { 'name' => 'COOKIE_TABLE_CLASS' }, { 'name' => 'DEREF' }, { 'name' => 'DPPP_' }, { 'name' => 'DPPP_CAT2' }, { 'name' => 'ERROR_CLASS' }, { 'name' => 'HANDLE_CLASS' }, { 'name' => 'MY_CXT' }, { 'name' => 'MY_CXT' }, { 'name' => 'MY_CXT_CLONE' }, { 'name' => 'MY_CXT_CLONE' }, { 'name' => 'MY_CXT_INIT' }, { 'name' => 'MY_CXT_INIT' }, { 'name' => 'PARAM_CLASS' }, { 'name' => 'PARAM_TABLE_CLASS' }, { 'name' => 'PERL_BCDVERSION' }, { 'name' => 'Perl_eval_pv' }, { 'name' => 'Perl_grok_bin' }, { 'name' => 'Perl_grok_hex' }, { 'name' => 'Perl_grok_number' }, { 'name' => 'Perl_grok_numeric_radix' }, { 'name' => 'Perl_grok_oct' }, { 'name' => 'Perl_newCONSTSUB' }, { 'name' => 'Perl_newRV_noinc' }, { 'name' => 'Perl_sv_2pv_nolen' }, { 'name' => 'Perl_sv_2pvbyte' }, { 'name' => 'Perl_sv_catpvf_mg' }, { 'name' => 'Perl_sv_catpvf_mg_nocontext' }, { 'name' => 'Perl_sv_setpvf_mg' }, { 'name' => 'Perl_sv_setpvf_mg_nocontext' }, { 'name' => 'Perl_vnewSVpvf' }, { 'name' => 'START_MY_CXT' }, { 'name' => 'START_MY_CXT' }, { 'name' => 'SvPV_nolen' }, { 'name' => 'SvPVbyte' }, { 'name' => '_P_P_PORTABILITY_H_' }, { 'name' => '_aMY_CXT' }, { 'name' => '_aMY_CXT', 'comment' => 'START_MY_CXT' }, { 'name' => '_pMY_CXT' }, { 'name' => 'aMY_CXT' }, { 'name' => 'aMY_CXT' }, { 'name' => 'aMY_CXT_' }, { 'name' => 'apreq_attr_to_type' }, { 'name' => 'apreq_cookie' }, { 'name' => 'd' }, { 'name' => 'dMY_CXT' }, { 'name' => 'dMY_CXT' }, { 'name' => 'dMY_CXT_SV' }, { 'name' => 'dMY_CXT_SV' }, { 'name' => 'dMY_CXT_SV' }, { 'name' => 'eval_pv' }, { 'name' => 'grok_bin' }, { 'name' => 'grok_hex' }, { 'name' => 'grok_number' }, { 'name' => 'grok_numeric_radix' }, { 'name' => 'grok_oct' }, { 'name' => 'newCONSTSUB' }, { 'name' => 'newRV_noinc' }, { 'name' => 'pMY_CXT' }, { 'name' => 'pMY_CXT' }, { 'name' => 'pMY_CXT_' }, { 'name' => 'pMY_CXT_' }, { 'name' => 'sv_2pv_nolen' }, { 'name' => 'sv_2pvbyte' }, { 'name' => 'sv_catpvf_mg_nocontext' }, { 'name' => 'sv_setpvf_mg_nocontext' }, { 'name' => 'type' }, { 'name' => 'type' }, { 'name' => 'type' }, { 'name' => 'vnewSVpvf' } ]; 1; libapreq2-2.13/glue/perl/xsbuilder/tables/APR/Request/FunctionTable.pm0000644000076400017500000020602611473533305024642 0ustar issacissacpackage APR::Request::FunctionTable; # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # ! WARNING: generated by My::ParseSource/ # ! Thu Nov 25 21:19:33 2010 # ! do NOT edit, any changes will be lost ! # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! $APR::Request::FunctionTable = [ { 'return_type' => 'return', 'name' => 'INT2PTR', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => 'arg0' }, { 'type' => 'iv', 'name' => 'arg1' } ] }, { 'return_type' => 'return', 'name' => 'SvPV_nolen', 'args' => [ { 'type' => 'sv', 'name' => 'arg0' } ] }, { 'return_type' => 'return', 'name' => 'SvRV', 'args' => [ { 'type' => 'sv', 'name' => 'arg0' } ] }, { 'return_type' => 'else', 'name' => 'XSRETURN', 'args' => [ { 'type' => '0', 'name' => 'arg0' } ] }, { 'return_type' => 'MP_STATIC void', 'name' => 'XS_APR__Request__Cookie_nil', 'args' => [] }, { 'return_type' => 'MP_STATIC void', 'name' => 'XS_APR__Request__Error_nil', 'args' => [] }, { 'return_type' => 'MP_STATIC void', 'name' => 'XS_APR__Request__Param_nil', 'args' => [] }, { 'return_type' => 'return', 'name' => 'apr_pstrmemdup', 'args' => [ { 'type' => 'p', 'name' => 'arg0' }, { 'type' => 'v', 'name' => 'arg1' }, { 'type' => 'vlen', 'name' => 'arg2' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_args', 'comment' => '* * Expose the parsed "query string" associated to this handle. * * @param req The request handle * @param t The resulting table, which will either be NULL or a * valid table object on return. * * @return APR_SUCCESS or a module-specific error status code.', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => 'req' }, { 'type' => 'const apr_table_t * *', 'name' => 't' } ] }, { 'return_type' => 'apreq_param_t *', 'name' => 'apreq_args_get', 'comment' => '* * Fetch the first query string param with the given name. * * @param req The request handle * @param name Case-insensitive param name. * * @return First matching param, or NULL if none match.', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => 'req' }, { 'type' => 'const char *', 'name' => 'name' } ] }, { 'return_type' => 'apr_int64_t', 'name' => 'apreq_atoi64f', 'comment' => '* * Converts file sizes (KMG) to bytes * * @param s file size matching m/^\\\\d+[KMG]b?$/i * * @return 64-bit integer representation of s. * * @todo What happens when s is malformed? Should this return * an unsigned value instead?', 'args' => [ { 'type' => 'const char *', 'name' => 's' } ] }, { 'return_type' => 'apr_int64_t', 'name' => 'apreq_atoi64t', 'comment' => '* * Converts time strings (YMDhms) to seconds * * @param s time string matching m/^\\\\+?\\\\d+[YMDhms]$/ * * @return 64-bit integer representation of s as seconds. * * @todo What happens when s is malformed? Should this return * an unsigned value instead?', 'args' => [ { 'type' => 'const char *', 'name' => 's' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_body', 'comment' => '* * Expose the parsed "request body" associated to this handle. * * @param req The request handle * @param t The resulting table, which will either be NULL or a * valid table object on return. * * @return APR_SUCCESS or a module-specific error status code.', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => 'req' }, { 'type' => 'const apr_table_t * *', 'name' => 't' } ] }, { 'return_type' => 'apreq_param_t *', 'name' => 'apreq_body_get', 'comment' => '* * Fetch the first body param with the given name. * * @param req The request handle * @param name Case-insensitive cookie name. * * @return First matching param, or NULL if none match.', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => 'req' }, { 'type' => 'const char *', 'name' => 'name' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_brigade_concat', 'comment' => '* * Concatenates the brigades, spooling large brigades into * a tempfile (APREQ_SPOOL) bucket. * * @param pool Pool for creating a tempfile bucket. * @param temp_dir Directory for tempfile creation. * @param brigade_limit If out\'s length would exceed this value, * the appended buckets get written to a tempfile. * @param out Resulting brigade. * @param in Brigade to append. * * @return APR_SUCCESS. * @return Error status code resulting from either apr_brigade_length(), * apreq_file_mktemp(), apreq_brigade_fwrite(), or apr_file_seek(). * * @todo Flesh out these error codes, making them as explicit as possible.', 'args' => [ { 'type' => 'apr_pool_t *', 'name' => 'pool' }, { 'type' => 'const char *', 'name' => 'temp_dir' }, { 'type' => 'apr_size_t', 'name' => 'brigade_limit' }, { 'type' => 'apr_bucket_brigade *', 'name' => 'out' }, { 'type' => 'apr_bucket_brigade *', 'name' => 'in' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_brigade_copy', 'comment' => '* * Copy a brigade. * * @param d (destination) Copied buckets are appended to this brigade. * @param s (source) Brigade to copy from. * * @return APR_SUCCESS. * @return Error status code from an unsuccessful apr_bucket_copy(). * * @remarks s == d produces Undefined Behavior.', 'args' => [ { 'type' => 'apr_bucket_brigade *', 'name' => 'd' }, { 'type' => 'apr_bucket_brigade *', 'name' => 's' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_brigade_fwrite', 'comment' => '* * Writes brigade to a file. * * @param f File that gets the brigade. * @param wlen On a successful return, wlen holds the length of * the brigade, which is the amount of data written to * the file. * @param bb Bucket brigade. * * @return APR_SUCCESS. * @return Error status code from either an unsuccessful apr_bucket_read(), * or a failed apr_file_writev(). * * @remarks This function leaks a bucket brigade into bb->p whenever * the final bucket in bb is a spool bucket.', 'args' => [ { 'type' => 'apr_file_t *', 'name' => 'f' }, { 'type' => 'apr_off_t *', 'name' => 'wlen' }, { 'type' => 'apr_bucket_brigade *', 'name' => 'bb' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_brigade_limit_get', 'comment' => '* * Get the active brigade limit. * * @param req The handle. * @param bytes Pointer to resulting (current) limit. * * @return APR_SUCCESS or a module-specific error, * which may leave bytes undefined.', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => 'req' }, { 'type' => 'apr_size_t *', 'name' => 'bytes' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_brigade_limit_set', 'comment' => '* * Set the active brigade limit. * * @param req The handle. * @param bytes New limit to use. * * @return APR_SUCCESS or module-specific error. *', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => 'req' }, { 'type' => 'apr_size_t', 'name' => 'bytes' } ] }, { 'return_type' => 'void', 'name' => 'apreq_brigade_move', 'comment' => '* * Move the front of a brigade. * * @param d (destination) Append buckets to this brigade. * @param s (source) Brigade to take buckets from. * @param e First bucket of s after the move. All buckets * before e are appended to d. * * @remarks This moves all buckets when e == APR_BRIGADE_SENTINEL(s).', 'args' => [ { 'type' => 'apr_bucket_brigade *', 'name' => 'd' }, { 'type' => 'apr_bucket_brigade *', 'name' => 's' }, { 'type' => 'apr_bucket *', 'name' => 'e' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_brigade_setaside', 'comment' => '* * Set aside all buckets in the brigade. * * @param bb Brigade. * @param p Setaside buckets into this pool. * @return APR_SUCCESS. * @return Error status code from an unsuccessful apr_bucket_setaside().', 'args' => [ { 'type' => 'apr_bucket_brigade *', 'name' => 'bb' }, { 'type' => 'apr_pool_t *', 'name' => 'p' } ] }, { 'return_type' => 'apr_file_t *', 'name' => 'apreq_brigade_spoolfile', 'comment' => '* * Determines the spool file used by the brigade. Returns NULL if the * brigade is not spooled in a file (does not use an APREQ_SPOOL * bucket). * * @param bb the bucket brigade * @return the spool file, or NULL.', 'args' => [ { 'type' => 'apr_bucket_brigade *', 'name' => 'bb' } ] }, { 'return_type' => 'apreq_charset_t', 'name' => 'apreq_charset_divine', 'comment' => '* * Heuristically determine the charset of a string. * * @param src String to scan. * @param slen Length of string. * * @return APREQ_CHARSET_ASCII if the string contains only 7-bit chars; * @return APREQ_CHARSET_UTF8 if the string is a valid utf8 byte sequence; * @return APREQ_CHARSET_LATIN1 if the string has no control chars; * @return APREQ_CHARSET_CP1252 if the string has control chars.', 'args' => [ { 'type' => 'const char *', 'name' => 'src' }, { 'type' => 'apr_size_t', 'name' => 'slen' } ] }, { 'return_type' => 'char *', 'name' => 'apreq_cookie_as_string', 'comment' => '* * Returns a string that represents the cookie as it would appear * in a valid "Set-Cookie*" header. * * @param c cookie. * @param p pool which allocates the returned string. * * @return header string.', 'args' => [ { 'type' => 'const apreq_cookie_t *', 'name' => 'c' }, { 'type' => 'apr_pool_t *', 'name' => 'p' } ] }, { 'return_type' => 'void', 'name' => 'apreq_cookie_expires', 'comment' => '* * Set the Cookie\'s expiration date. * * @param c The cookie. * @param time_str If NULL, the Cookie\'s expiration date is unset, * making it a session cookie. This means no "expires" or "max-age" * attribute will appear in the cookie\'s serialized form. If time_str * is not NULL, the expiration date will be reset to the offset (from now) * represented by time_str. The time_str should be in a format that * apreq_atoi64t() can understand, namely /[+-]?\\\\d+\\\\s*[YMDhms]/. * * @remarks Now time_str may also be a fixed date; see apr_date_parse_rfc() * for admissible formats.', 'args' => [ { 'type' => 'apreq_cookie_t *', 'name' => 'c' }, { 'type' => 'const char *', 'name' => 'time_str' } ] }, { 'return_type' => 'void', 'name' => 'apreq_cookie_httponly_off', 'comment' => '* Turns off the cookie\'s HttpOnly flag.', 'args' => [ { 'type' => 'apreq_cookie_t *', 'name' => 'c' } ] }, { 'return_type' => 'void', 'name' => 'apreq_cookie_httponly_on', 'comment' => '* Sets the cookie\'s HttpOnly flag, meaning it is not * accessible through client-side script in supported * browsers.', 'args' => [ { 'type' => 'apreq_cookie_t *', 'name' => 'c' } ] }, { 'return_type' => 'unsigned', 'name' => 'apreq_cookie_is_httponly', 'comment' => '* @return 1 if the HttpOnly flag is set, 0 otherwise.', 'args' => [ { 'type' => 'const apreq_cookie_t *', 'name' => 'c' } ] }, { 'return_type' => 'unsigned', 'name' => 'apreq_cookie_is_secure', 'comment' => '* @return 1 if the secure flag is set, 0 otherwise.', 'args' => [ { 'type' => 'const apreq_cookie_t *', 'name' => 'c' } ] }, { 'return_type' => 'unsigned', 'name' => 'apreq_cookie_is_tainted', 'comment' => '* @return 1 if the taint flag is set, 0 otherwise.', 'args' => [ { 'type' => 'const apreq_cookie_t *', 'name' => 'c' } ] }, { 'return_type' => 'apreq_cookie_t *', 'name' => 'apreq_cookie_make', 'comment' => '* * Returns a new cookie, made from the argument list. * * @param pool Pool which allocates the cookie. * @param name The cookie\'s name. * @param nlen Length of name. * @param value The cookie\'s value. * @param vlen Length of value. * * @return the new cookie', 'args' => [ { 'type' => 'apr_pool_t *', 'name' => 'pool' }, { 'type' => 'const char *', 'name' => 'name' }, { 'type' => 'const apr_size_t', 'name' => 'nlen' }, { 'type' => 'const char *', 'name' => 'value' }, { 'type' => 'const apr_size_t', 'name' => 'vlen' } ] }, { 'return_type' => 'void', 'name' => 'apreq_cookie_secure_off', 'comment' => '* Turns off the cookie\'s secure flag.', 'args' => [ { 'type' => 'apreq_cookie_t *', 'name' => 'c' } ] }, { 'return_type' => 'void', 'name' => 'apreq_cookie_secure_on', 'comment' => '* Sets the cookie\'s secure flag, meaning it only * comes back over an SSL-encrypted connction.', 'args' => [ { 'type' => 'apreq_cookie_t *', 'name' => 'c' } ] }, { 'return_type' => 'int', 'name' => 'apreq_cookie_serialize', 'comment' => '* * Same functionality as apreq_cookie_as_string. Stores the string * representation in buf, using up to len bytes in buf as storage. * The return value has the same semantics as that of apr_snprintf, * including the special behavior for a "len = 0" argument. * * @param c cookie. * @param buf storage location for the result. * @param len size of buf\'s storage area. * * @return size of resulting header string.', 'args' => [ { 'type' => 'const apreq_cookie_t *', 'name' => 'c' }, { 'type' => 'char *', 'name' => 'buf' }, { 'type' => 'apr_size_t', 'name' => 'len' } ] }, { 'return_type' => 'void', 'name' => 'apreq_cookie_tainted_off', 'comment' => '* Turns off the cookie\'s tainted flag.', 'args' => [ { 'type' => 'apreq_cookie_t *', 'name' => 'c' } ] }, { 'return_type' => 'void', 'name' => 'apreq_cookie_tainted_on', 'comment' => '* Sets the cookie\'s tainted flag.', 'args' => [ { 'type' => 'apreq_cookie_t *', 'name' => 'c' } ] }, { 'return_type' => 'unsigned', 'name' => 'apreq_cookie_version', 'comment' => '*@return 1 if this is an RFC cookie, 0 if its a Netscape cookie.', 'args' => [ { 'type' => 'const apreq_cookie_t *', 'name' => 'c' } ] }, { 'return_type' => 'void', 'name' => 'apreq_cookie_version_set', 'comment' => '* Sets the cookie\'s protocol version.', 'args' => [ { 'type' => 'apreq_cookie_t *', 'name' => 'c' }, { 'type' => 'unsigned', 'name' => 'v' } ] }, { 'return_type' => 'apr_table_t *', 'name' => 'apreq_cookies', 'comment' => '* * Returns a table containing all request cookies. * * @param req the apreq request handle * @param p Allocates the returned table.', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => 'req' }, { 'type' => 'apr_pool_t *', 'name' => 'p' } ] }, { 'return_type' => 'apr_size_t', 'name' => 'apreq_cp1252_to_utf8', 'comment' => '* * Convert a string from cp1252 to utf8. Caller must ensure it is large enough * to hold the encoded string and trailing \'\\\\0\'. * * @param dest Location of utf8-encoded result string. Caller must ensure it * is large enough to hold the encoded string and trailing \'\\\\0\'. * @param src Original string. * @param slen Length of original string. * * @return length of utf8-encoded string in dest; does not exceed 3 * slen.', 'args' => [ { 'type' => 'char *', 'name' => 'dest' }, { 'type' => 'const char *', 'name' => 'src' }, { 'type' => 'apr_size_t', 'name' => 'slen' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_decode', 'comment' => '* * Url-decodes a string. * * @param dest Location of url-encoded result string. Caller must ensure dest is * large enough to hold the encoded string and trailing null character. * @param dlen points to resultant length of url-decoded string in dest * @param src Original string. * @param slen Length of original string. * * @return APR_SUCCESS. * @return APR_INCOMPLETE if the string * ends in the middle of an escape sequence. * @return ::APREQ_ERROR_BADSEQ or ::APREQ_ERROR_BADCHAR on malformed input. * * @remarks In the non-success case, dlen will be set to include * the last succesfully decoded value. This function decodes * \\%uXXXX into a utf8 (wide) character, following ECMA-262 * (the Javascript spec) Section B.2.1.', 'args' => [ { 'type' => 'char *', 'name' => 'dest' }, { 'type' => 'apr_size_t *', 'name' => 'dlen' }, { 'type' => 'const char *', 'name' => 'src' }, { 'type' => 'apr_size_t', 'name' => 'slen' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_decodev', 'comment' => '* * Url-decodes an iovec array. * * @param dest Location of url-encoded result string. Caller must ensure dest is * large enough to hold the encoded string and trailing null character. * @param dlen Resultant length of dest. * @param v Array of iovecs that represent the source string * @param nelts Number of iovecs in the array. * * @return APR_SUCCESS. * @return APR_INCOMPLETE if the iovec * ends in the middle of an escape sequence. * @return ::APREQ_ERROR_BADSEQ or ::APREQ_ERROR_BADCHAR on malformed input. * * @remarks In the non-APR_SUCCESS case, dlen will be set to include * the last succesfully decoded value. This function decodes * \\%uXXXX into a utf8 (wide) character, following ECMA-262 * (the Javascript spec) Section B.2.1.', 'args' => [ { 'type' => 'char *', 'name' => 'dest' }, { 'type' => 'apr_size_t *', 'name' => 'dlen' }, { 'type' => 'struct iovec *', 'name' => 'v' }, { 'type' => 'int', 'name' => 'nelts' } ] }, { 'return_type' => 'apr_size_t', 'name' => 'apreq_encode', 'comment' => '* * Url-encodes a string. * * @param dest Location of url-encoded result string. Caller must ensure it * is large enough to hold the encoded string and trailing \'\\\\0\'. * @param src Original string. * @param slen Length of original string. * * @return length of url-encoded string in dest; does not exceed 3 * slen.', 'args' => [ { 'type' => 'char *', 'name' => 'dest' }, { 'type' => 'const char *', 'name' => 'src' }, { 'type' => 'const apr_size_t', 'name' => 'slen' } ] }, { 'return_type' => 'char *', 'name' => 'apreq_escape', 'comment' => '* * Returns an url-encoded copy of a string. * * @param p Pool used to allocate the return value. * @param src Original string. * @param slen Length of original string. * * @return The url-encoded string. * * @remarks Use this function insead of apreq_encode if its * caller might otherwise overflow dest.', 'args' => [ { 'type' => 'apr_pool_t *', 'name' => 'p' }, { 'type' => 'const char *', 'name' => 'src' }, { 'type' => 'const apr_size_t', 'name' => 'slen' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_file_mktemp', 'comment' => '* * Makes a temporary file. * * @param fp Points to the temporary apr_file_t on success. * @param pool Pool to associate with the temp file. When the * pool is destroyed, the temp file will be closed * and deleted. * @param path The base directory which will contain the temp file. * If param == NULL, the directory will be selected via * tempnam(). See the tempnam manpage for details. * * @return APR_SUCCESS. * @return Error status code from unsuccessful apr_filepath_merge(), * or a failed apr_file_mktemp().', 'args' => [ { 'type' => 'apr_file_t * *', 'name' => 'fp' }, { 'type' => 'apr_pool_t *', 'name' => 'pool' }, { 'type' => 'const char *', 'name' => 'path' } ] }, { 'return_type' => 'apreq_handle_t *', 'name' => 'apreq_handle_apache2', 'comment' => '* * @defgroup mod_apreq2 Apache 2.X Filter Module * @ingroup apreq_module * @brief mod_apreq2 - DSO that ties libapreq2 to Apache HTTPD 2.X. * * mod_apreq2 provides the "APREQ2" input filter for using libapreq2 * (and allow its parsed data structures to be shared) within * the Apache 2.X webserver. Using it, libapreq2 works properly * in every phase of the HTTP request, from translation handlers * to output filters, and even for subrequests / internal redirects. * *
* *

Activating mod_apreq2 in Apache 2.X

* * The installation process triggered by * % make install * will not modify your webserver\'s config file. Hence, * be sure you activate it on startup by adding a LoadModule directive * to your webserver config; e.g. * * @code * * LoadModule apreq_module modules/mod_apreq2.so * * @endcode * * The mod_apreq2 filter is named "apreq2", and may be used in Apache\'s * input filter directives, e.g. * @code * * AddInputFilter apreq2 # or * SetInputFilter apreq2 * * @endcode * * However, this is not required because libapreq2 will add the filter (only) * if it\'s necessary. You just need to ensure that your module invokes * apreq_handle_apache2() before the content handler ultimately reads * from the input filter chain. It is important to realize that no * matter how the input filters are initially arranged, the APREQ2 filter * will attempt to reposition itself to be the last input filter to read the * data. * * If you want to use other input filters to transform the incoming HTTP * request data, is important to register those filters with Apache * as having type AP_FTYPE_CONTENT_SET or AP_FTYPE_RESOURCE. Due to the * limitations of Apache\'s current input filter design, types higher than * AP_FTYPE_CONTENT_SET may not work properly whenever the apreq filter is * active. * * This is especially true when a content handler uses libapreq2 to parse * some of the post data before doing an internal redirect. Any input * filter subsequently added to the redirected request will bypass the * original apreq filter (and therefore lose access to some of the original * post data), unless its type is less than the type of the apreq filter * (currently AP_FTYPE_PROTOCOL-1). * * *

Server Configuration Directives

* * * * * * * * * * * * * * * * * * * * * * * * * * *
Per-directory commands for mod_apreq2
DirectiveContextDefaultDescription
APREQ2_ReadLimitdirectory #APREQ_DEFAULT_READ_LIMIT Maximum number of bytes mod_apreq2 will send off to libapreq2 * for parsing. mod_apreq2 will log this event and subsequently * remove itself from the filter chain. *
APREQ2_BrigadeLimitdirectory#APREQ_DEFAULT_BRIGADE_LIMIT Maximum number of bytes mod_apreq2 will let accumulate * within the heap-buckets in a brigade. Excess data will be * spooled to an appended file bucket. *
APREQ2_TempDirdirectoryNULL Sets the location of the temporary directory apreq will use to spool * overflow brigade data (based on the APREQ2_BrigadeLimit setting). * If left unset, libapreq2 will select a platform-specific location * via apr_temp_dir_get(). *
* *

Implementation Details

*
 *   XXX apreq as a normal input filter
 *   XXX apreq as a "virtual" content handler.
 *   XXX apreq as a transparent "tee".
 *   XXX apreq parser registration in post_config
 * 
* * @{ * * Create an apreq handle which communicates with an Apache 2.X * request_rec.', 'args' => [ { 'type' => 'request_rec *', 'name' => 'r' } ] }, { 'return_type' => 'apreq_handle_t *', 'name' => 'apreq_handle_cgi', 'comment' => '* * Create an apreq handle which is suitable for a CGI program. It * reads input from stdin and writes output to stdout. * * @param pool Pool associated to this handle. * * @return New handle; can only be NULL if the pool allocation failed. * * @remarks The handle gets cached in the pool\'s userdata, so subsequent * calls will retrieve the original cached handle.', 'args' => [ { 'type' => 'apr_pool_t *', 'name' => 'pool' } ] }, { 'return_type' => 'apreq_handle_t *', 'name' => 'apreq_handle_custom', 'comment' => '* * Create a custom apreq handle which knows only some * values. Useful if you want to test the parser code or if you have * got data from a custom source (neither Apache 2 nor CGI). * * @param pool allocates the parse data, * @param query_string parsed into args table * @param cookie value of the request "Cookie" header * @param parser parses the request body * @param read_limit maximum bytes to read from the body * @param in brigade containing the request body * * @return new handle; can only be NULL if the pool allocation failed.', 'args' => [ { 'type' => 'apr_pool_t *', 'name' => 'pool' }, { 'type' => 'const char *', 'name' => 'query_string' }, { 'type' => 'const char *', 'name' => 'cookie' }, { 'type' => 'apreq_parser_t *', 'name' => 'parser' }, { 'type' => 'apr_uint64_t', 'name' => 'read_limit' }, { 'type' => 'apr_bucket_brigade *', 'name' => 'in' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_header_attribute', 'comment' => '* * Search a header string for the value of a particular named attribute. * * @param hdr Header string to scan. * @param name Name of attribute to search for. * @param nlen Length of name. * @param val Location of (first) matching value. * @param vlen Length of matching value. * * @return APR_SUCCESS. * @return ::APREQ_ERROR_NOATTR if the attribute is not found. * @return ::APREQ_ERROR_BADSEQ if an unpaired quote mark was detected.', 'args' => [ { 'type' => 'const char *', 'name' => 'hdr' }, { 'type' => 'const char *', 'name' => 'name' }, { 'type' => 'const apr_size_t', 'name' => 'nlen' }, { 'type' => 'const char * *', 'name' => 'val' }, { 'type' => 'apr_size_t *', 'name' => 'vlen' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_hook_add', 'comment' => '* * Add a parser hook for this request. * * @param req The request handle * @param hook Hook to add. * * @return APR_SUCCESS or module-specific error.', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => 'req' }, { 'type' => 'apreq_hook_t *', 'name' => 'hook' } ] }, { 'return_type' => 'apreq_hook_t *', 'name' => 'apreq_hook_make', 'comment' => '* * Construct a hook. * * @param pool used to allocate the hook. * @param hook The hook function. * @param next List of other hooks for this hook to call on. * @param ctx Hook\'s internal scratch pad. * @return New hook.', 'args' => [ { 'type' => 'apr_pool_t *', 'name' => 'pool' }, { 'type' => 'apreq_hook_function_t', 'name' => 'hook' }, { 'type' => 'apreq_hook_t *', 'name' => 'next' }, { 'type' => 'void *', 'name' => 'ctx' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_hook_run', 'comment' => '* * Run the hook with the current parameter and the incoming * bucket brigade. The hook may modify the brigade if necessary. * Once all hooks have completed, the contents of the brigade will * be added to the parameter\'s bb attribute. * @return APR_SUCCESS on success. All other values represent errors.', 'args' => [ { 'type' => 'struct apreq_hook_t *', 'name' => 'h' }, { 'type' => 'apreq_param_t *', 'name' => 'param' }, { 'type' => 'apr_bucket_brigade *', 'name' => 'bb' } ] }, { 'return_type' => 'apr_ssize_t', 'name' => 'apreq_index', 'comment' => '* * Returns offset of match string\'s location, or -1 if no match is found. * * @param hay Location of bytes to scan. * @param hlen Number of bytes available for scanning. * @param ndl Search string * @param nlen Length of search string. * @param type Match type. * * @return Offset of match string, or -1 if no match is found. *', 'args' => [ { 'type' => 'const char *', 'name' => 'hay' }, { 'type' => 'apr_size_t', 'name' => 'hlen' }, { 'type' => 'const char *', 'name' => 'ndl' }, { 'type' => 'apr_size_t', 'name' => 'nlen' }, { 'type' => 'const apreq_match_t', 'name' => 'type' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_initialize', 'comment' => '* * Initialize libapreq2. Applications (except apache modules using * mod_apreq) should call this exactly once before they use any * libapreq2 modules. If you want to modify the list of default parsers * with apreq_register_parser(), please use apreq_pre_initialize() * and apreq_post_initialize() instead. * * @param pool a base pool persisting while libapreq2 is used * @remarks after you detroy the pool, you have to call this function again * with a new pool if you still plan to use libapreq2', 'args' => [ { 'type' => 'apr_pool_t *', 'name' => 'pool' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_jar', 'comment' => '* * Expose the parsed "cookie" header associated to this handle. * * @param req The request handle * @param t The resulting table, which will either be NULL or a * valid table object on return. * * @return APR_SUCCESS or a module-specific error status code.', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => 'req' }, { 'type' => 'const apr_table_t * *', 'name' => 't' } ] }, { 'return_type' => 'apreq_cookie_t *', 'name' => 'apreq_jar_get', 'comment' => '* * Fetch the first cookie with the given name. * * @param req The request handle * @param name Case-insensitive cookie name. * * @return First matching cookie, or NULL if none match.', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => 'req' }, { 'type' => 'const char *', 'name' => 'name' } ] }, { 'return_type' => 'char *', 'name' => 'apreq_join', 'comment' => '* * This header contains useful functions for creating new * parsers, hooks or modules. It includes * * - string <-> array converters * - substring search functions * - simple encoders & decoders for urlencoded strings * - simple time, date, & file-size converters * @file apreq_util.h * @brief Utility functions for apreq. * @ingroup libapreq2 * * Join an array of values. The result is an empty string if there are * no values. * * @param p Pool to allocate return value. * @param sep String that is inserted between the joined values. * @param arr Array of apreq_value_t entries. * @param mode Join type- see apreq_join_t. * * @return Joined string, or NULL on error', 'args' => [ { 'type' => 'apr_pool_t *', 'name' => 'p' }, { 'type' => 'const char *', 'name' => 'sep' }, { 'type' => 'const apr_array_header_t *', 'name' => 'arr' }, { 'type' => 'apreq_join_t', 'name' => 'mode' } ] }, { 'return_type' => 'unsigned', 'name' => 'apreq_module_status_is_error', 'comment' => '* * Defines the module-specific status codes which * are commonly considered to be non-fatal. * * @param s status code returned by an apreq_module_t method. * * @return 1 if s is fatal, 0 otherwise.', 'args' => [ { 'type' => 'apr_status_t', 'name' => 's' } ] }, { 'return_type' => 'apreq_param_t *', 'name' => 'apreq_param', 'comment' => '* * Find the first query string parameter or body parameter with the * specified name. The match is case-insensitive. * * @param req request handle. * @param key desired parameter name * * @return The first matching parameter (with args searched first) or NULL.', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => 'req' }, { 'type' => 'const char *', 'name' => 'key' } ] }, { 'return_type' => 'apreq_charset_t', 'name' => 'apreq_param_charset_get', 'comment' => '* Gets the character encoding for this parameter.', 'args' => [ { 'type' => 'apreq_param_t *', 'name' => 'p' } ] }, { 'return_type' => 'apreq_charset_t', 'name' => 'apreq_param_charset_set', 'comment' => '* Sets the character encoding for this parameter.', 'args' => [ { 'type' => 'apreq_param_t *', 'name' => 'p' }, { 'type' => 'apreq_charset_t', 'name' => 'c' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_param_decode', 'comment' => '* * Url-decodes a name=value pair into a param. * * @param param points to the decoded parameter on success * @param pool Pool from which the param is allocated. * @param word Start of the name=value pair. * @param nlen Length of urlencoded name. * @param vlen Length of urlencoded value. * * @return APR_SUCCESS on success. * @return ::APREQ_ERROR_BADSEQ or ::APREQ_ERROR_BADCHAR on malformed input. * * @remarks Unless vlen == 0, this function assumes there is * exactly one character (\'=\') which separates the pair. *', 'args' => [ { 'type' => 'apreq_param_t * *', 'name' => 'param' }, { 'type' => 'apr_pool_t *', 'name' => 'pool' }, { 'type' => 'const char *', 'name' => 'word' }, { 'type' => 'apr_size_t', 'name' => 'nlen' }, { 'type' => 'apr_size_t', 'name' => 'vlen' } ] }, { 'return_type' => 'char *', 'name' => 'apreq_param_encode', 'comment' => '* * Url-encodes the param into a name-value pair. * @param pool Pool which allocates the returned string. * @param param Param to encode. * @return name-value pair representing the param.', 'args' => [ { 'type' => 'apr_pool_t *', 'name' => 'pool' }, { 'type' => 'const apreq_param_t *', 'name' => 'param' } ] }, { 'return_type' => 'unsigned', 'name' => 'apreq_param_is_tainted', 'comment' => '* @return 1 if the taint flag is set, 0 otherwise.', 'args' => [ { 'type' => 'const apreq_param_t *', 'name' => 'p' } ] }, { 'return_type' => 'apreq_param_t *', 'name' => 'apreq_param_make', 'comment' => '* creates a param from name/value information', 'args' => [ { 'type' => 'apr_pool_t *', 'name' => 'p' }, { 'type' => 'const char *', 'name' => 'name' }, { 'type' => 'const apr_size_t', 'name' => 'nlen' }, { 'type' => 'const char *', 'name' => 'val' }, { 'type' => 'const apr_size_t', 'name' => 'vlen' } ] }, { 'return_type' => 'void', 'name' => 'apreq_param_tainted_off', 'comment' => '* Turns off the taint flag.', 'args' => [ { 'type' => 'apreq_param_t *', 'name' => 'p' } ] }, { 'return_type' => 'void', 'name' => 'apreq_param_tainted_on', 'comment' => '* Sets the tainted flag.', 'args' => [ { 'type' => 'apreq_param_t *', 'name' => 'p' } ] }, { 'return_type' => 'apr_table_t *', 'name' => 'apreq_params', 'comment' => '* * Returns a table containing key-value pairs for the full request * (args + body). * * @param req request handle * @param p allocates the returned table. * * @return table representing all available params; is never NULL.', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => 'req' }, { 'type' => 'apr_pool_t *', 'name' => 'p' } ] }, { 'return_type' => 'apr_array_header_t *', 'name' => 'apreq_params_as_array', 'comment' => '* * Returns an array of parameters (apreq_param_t *) matching the given key. * The key is case-insensitive. * @param p Allocates the returned array. * @param t the parameter table returned by apreq_args(), apreq_body() * or apreq_params() * @param key Null-terminated search key, case insensitive. * key==NULL fetches all parameters. * @return an array of apreq_param_t* (pointers) * @remark Also parses the request if necessary.', 'args' => [ { 'type' => 'apr_pool_t *', 'name' => 'p' }, { 'type' => 'const apr_table_t *', 'name' => 't' }, { 'type' => 'const char *', 'name' => 'key' } ] }, { 'return_type' => 'const char *', 'name' => 'apreq_params_as_string', 'comment' => '* * Returns a ", " -joined string containing all parameters * for the requested key, an empty string if none are found. * The key is case-insensitive. * * @param p Allocates the return string. * @param t the parameter table returned by apreq_args(), apreq_body() * or apreq_params() * @param key Null-terminated parameter name, case insensitive. * key==NULL fetches all values. * @param mode Join type- see apreq_join(). * @return the joined string or NULL on error * @remark Also parses the request if necessary.', 'args' => [ { 'type' => 'apr_pool_t *', 'name' => 'p' }, { 'type' => 'const apr_table_t *', 'name' => 't' }, { 'type' => 'const char *', 'name' => 'key' }, { 'type' => 'apreq_join_t', 'name' => 'mode' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_parse_cookie_header', 'comment' => '* * Parse a cookie header and store the cookies in an apr_table_t. * * @param pool pool which allocates the cookies * @param jar table where parsed cookies are stored * @param header the header value * * @return APR_SUCCESS. * @return ::APREQ_ERROR_BADSEQ if an unparseable character sequence appears. * @return ::APREQ_ERROR_MISMATCH if an rfc-cookie attribute appears in a * netscape cookie header. * @return ::APR_ENOTIMPL if an unrecognized rfc-cookie attribute appears. * @return ::APREQ_ERROR_NOTOKEN if a required token was not present. * @return ::APREQ_ERROR_BADCHAR if an unexpected token was present.', 'args' => [ { 'type' => 'apr_pool_t *', 'name' => 'pool' }, { 'type' => 'apr_table_t *', 'name' => 'jar' }, { 'type' => 'const char *', 'name' => 'header' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_parse_query_string', 'comment' => '* * Parse a url-encoded string into a param table. * @param pool pool used to allocate the param data. * @param t table to which the params are added. * @param qs Query string to url-decode. * @return APR_SUCCESS if successful, error otherwise. * @remark This function uses [&;] as the set of tokens * to delineate words, and will treat a word w/o \'=\' * as a name-value pair with value-length = 0. *', 'args' => [ { 'type' => 'apr_pool_t *', 'name' => 'pool' }, { 'type' => 'apr_table_t *', 'name' => 't' }, { 'type' => 'const char *', 'name' => 'qs' } ] }, { 'return_type' => 'apreq_parser_function_t', 'name' => 'apreq_parser', 'comment' => '* * Fetch the default parser function associated with the given MIME type. * @param enctype The desired enctype (can also be a full "Content-Type" * header). * @return The parser function, or NULL if the enctype is unrecognized.', 'args' => [ { 'type' => 'const char *', 'name' => 'enctype' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_parser_add_hook', 'comment' => '* * Add a new hook to the end of the parser\'s hook list. * * @param p Parser. * @param h Hook to append.', 'args' => [ { 'type' => 'apreq_parser_t *', 'name' => 'p' }, { 'type' => 'apreq_hook_t *', 'name' => 'h' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_parser_get', 'comment' => '* * Fetch the active body parser. * * @param req The request handle * @param parser Points to the active parser on return. * * @return APR_SUCCESS or module-specific error. *', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => 'req' }, { 'type' => 'const apreq_parser_t * *', 'name' => 'parser' } ] }, { 'return_type' => 'apreq_parser_t *', 'name' => 'apreq_parser_make', 'comment' => '* * Construct a parser. * * @param pool Pool used to allocate the parser. * @param ba bucket allocator used to create bucket brigades * @param content_type Content-type that this parser can deal with. * @param pfn The parser function. * @param brigade_limit the maximum in-memory bytes a brigade may use * @param temp_dir the directory used by the parser for temporary files * @param hook Hooks to associate this parser with. * @param ctx Parser\'s internal scratch pad. * @return New parser.', 'args' => [ { 'type' => 'apr_pool_t *', 'name' => 'pool' }, { 'type' => 'apr_bucket_alloc_t *', 'name' => 'ba' }, { 'type' => 'const char *', 'name' => 'content_type' }, { 'type' => 'apreq_parser_function_t', 'name' => 'pfn' }, { 'type' => 'apr_size_t', 'name' => 'brigade_limit' }, { 'type' => 'const char *', 'name' => 'temp_dir' }, { 'type' => 'apreq_hook_t *', 'name' => 'hook' }, { 'type' => 'void *', 'name' => 'ctx' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_parser_run', 'comment' => '* * Parse the incoming brigade into a table. Parsers normally * consume all the buckets of the brigade during parsing. However * parsers may leave "rejected" data in the brigade, even during a * successful parse, so callers may need to clean up the brigade * themselves (in particular, rejected buckets should not be * passed back to the parser again). * @remark bb == NULL is valid: the parser should return its * public status: APR_INCOMPLETE, APR_SUCCESS, or an error code.', 'args' => [ { 'type' => 'struct apreq_parser_t *', 'name' => 'psr' }, { 'type' => 'apr_table_t *', 'name' => 't' }, { 'type' => 'apr_bucket_brigade *', 'name' => 'bb' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_parser_set', 'comment' => '* * Set the body parser for this request. * * @param req The request handle * @param parser New parser to use. * * @return APR_SUCCESS or module-specific error.', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => 'req' }, { 'type' => 'apreq_parser_t *', 'name' => 'parser' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_post_initialize', 'comment' => '* * Post-initialize libapreq2. Applications (except apache modules using * mod_apreq2) should this exactly once before they use any * libapreq2 modules for parsing. * * @param pool the same pool that was used in apreq_pre_initialize().', 'args' => [ { 'type' => 'apr_pool_t *', 'name' => 'pool' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_pre_initialize', 'comment' => '* * Pre-initialize libapreq2. Applications (except apache modules using * mod_apreq2) should call this exactly once before they register custom * parsers with libapreq2. mod_apreq2 does this automatically during the * post-config phase, so modules that need call apreq_register_parser should * create a post-config hook using APR_HOOK_MIDDLE. * * @param pool a base pool persisting while libapreq2 is used * @remarks after you detroyed the pool, you have to call this function again * with a new pool if you still plan to use libapreq2', 'args' => [ { 'type' => 'apr_pool_t *', 'name' => 'pool' } ] }, { 'return_type' => 'apr_size_t', 'name' => 'apreq_quote', 'comment' => '* * Places a quoted copy of src into dest. Embedded quotes are escaped with a * backslash (\'\\\'). * * @param dest Location of quoted copy. Must be large enough to hold the copy * and trailing null byte. * @param src Original string. * @param slen Length of original string. * @param dest Destination string. * * @return length of quoted copy in dest.', 'args' => [ { 'type' => 'char *', 'name' => 'dest' }, { 'type' => 'const char *', 'name' => 'src' }, { 'type' => 'const apr_size_t', 'name' => 'slen' } ] }, { 'return_type' => 'apr_size_t', 'name' => 'apreq_quote_once', 'comment' => '* * * Same as apreq_quote() except when src begins and ends in quote marks. In * that case it assumes src is quoted correctly, and just copies src to dest. * * @param dest Location of quoted copy. Must be large enough to hold the copy * and trailing null byte. * @param src Original string. * @param slen Length of original string. * @param dest Destination string. * * @return length of quoted copy in dest.', 'args' => [ { 'type' => 'char *', 'name' => 'dest' }, { 'type' => 'const char *', 'name' => 'src' }, { 'type' => 'const apr_size_t', 'name' => 'slen' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_read_limit_get', 'comment' => '* * Get the active read limit. * * @param req The request handle. * @param bytes Pointer to resulting (current) limit. * * @return APR_SUCCESS or a module-specific error, * which may leave bytes undefined.', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => 'req' }, { 'type' => 'apr_uint64_t *', 'name' => 'bytes' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_read_limit_set', 'comment' => '* * Set the active read limit. * * @param req The handle. * @param bytes New limit to use. * * @return APR_SUCCESS or a module-specific error. *', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => 'req' }, { 'type' => 'apr_uint64_t', 'name' => 'bytes' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_register_parser', 'comment' => '* * Register a new parsing function with a MIME enctype. * Registered parsers are added to apreq_parser()\'s * internal lookup table. * * @param enctype The MIME type. * @param pfn The function to use during parsing. Setting * parser == NULL will remove an existing parser. * * @return APR_SUCCESS or error.', 'args' => [ { 'type' => 'const char *', 'name' => 'enctype' }, { 'type' => 'apreq_parser_function_t', 'name' => 'pfn' } ] }, { 'return_type' => 'char *', 'name' => 'apreq_strerror', 'comment' => '* * apreq\'s wrapper around apr_strerror(); * recognizes APREQ_ERROR_* status codes.', 'args' => [ { 'type' => 'apr_status_t', 'name' => 's' }, { 'type' => 'char *', 'name' => 'buf' }, { 'type' => 'apr_size_t', 'name' => 'bufsize' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_temp_dir_get', 'comment' => '* * Get the active temp directory. * * @param req The handle. * @param path Resulting path to temp dir. * * @return APR_SUCCESS implies path is valid, but may also be NULL. * Any other return value is module-specific, and may leave * path undefined.', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => 'req' }, { 'type' => 'const char * *', 'name' => 'path' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_temp_dir_set', 'comment' => '* * Set the active temp directory. * * @param req The handle. * @param path New path to use; may be NULL. * * @return APR_SUCCESS or a module-specific error .', 'args' => [ { 'type' => 'apreq_handle_t *', 'name' => 'req' }, { 'type' => 'const char *', 'name' => 'path' } ] }, { 'return_type' => 'apr_ssize_t', 'name' => 'apreq_unescape', 'comment' => '* * An \\e in-situ url-decoder. * * @param str The string to decode * * @return Length of decoded string, or < 0 on error.', 'args' => [ { 'type' => 'char *', 'name' => 'str' } ] }, { 'return_type' => 'const apreq_param_t *', 'name' => 'apreq_upload', 'comment' => '* * Returns the first param in req->body which has both param->v.name * matching key (case insensitive) and param->upload != NULL. * @param body parameter table returned by apreq_body() or apreq_params() * @param name Parameter name. key == NULL returns first upload. * @return Corresponding upload, NULL if none found. * @remark Will parse the request as necessary.', 'args' => [ { 'type' => 'const apr_table_t *', 'name' => 'body' }, { 'type' => 'const char *', 'name' => 'name' } ] }, { 'return_type' => 'const apr_table_t *', 'name' => 'apreq_uploads', 'comment' => '* * Returns a table of all params in req->body with non-NULL upload brigades. * @param body parameter table returned by apreq_body() or apreq_params() * @param pool Pool which allocates the table struct. * @return Upload table. * @remark Will parse the request if necessary.', 'args' => [ { 'type' => 'const apr_table_t *', 'name' => 'body' }, { 'type' => 'apr_pool_t *', 'name' => 'pool' } ] }, { 'return_type' => 'void', 'name' => 'apreq_value_table_add', 'comment' => '* * Adds the specified apreq_value_t to the apr_table_t. * * @param v value to add * @param t add v to this table * * @return void * * @ see apr_table_t @see apr_value_t', 'args' => [ { 'type' => 'const apreq_value_t *', 'name' => 'v' }, { 'type' => 'apr_table_t *', 'name' => 't' } ] }, { 'return_type' => 'apreq_cookie_t *', 'name' => 'apreq_value_to_cookie', 'comment' => '* Upgrades a jar\'s table values to apreq_cookie_t structs.', 'args' => [ { 'type' => 'const char *', 'name' => 'val' } ] }, { 'return_type' => 'apreq_param_t *', 'name' => 'apreq_value_to_param', 'comment' => '* Upgrades args and body table values to apreq_param_t structs.', 'args' => [ { 'type' => 'const char *', 'name' => 'val' } ] }, { 'return_type' => 'void', 'name' => 'apreq_version', 'comment' => '* * Return libapreq\'s version information information in a numeric form. * * @param pvsn Pointer to a version structure for returning the version * information.', 'args' => [ { 'type' => 'apr_version_t *', 'name' => 'pvsn' } ] }, { 'return_type' => 'const char *', 'name' => 'apreq_version_string', 'comment' => '* Return libapreq\'s version information as a string.', 'args' => [] }, { 'return_type' => 'MP_STATIC void', 'name' => 'apreq_xs_args', 'args' => [] }, { 'return_type' => 'MP_STATIC void', 'name' => 'apreq_xs_body', 'args' => [] }, { 'return_type' => 'MP_STATIC void', 'name' => 'apreq_xs_brigade_copy', 'comment' => ' XXX these Apache::Upload::Brigade funcs need a makeover as vanilla XS.', 'args' => [] }, { 'return_type' => 'MP_STATIC void', 'name' => 'apreq_xs_brigade_read', 'args' => [] }, { 'return_type' => 'MP_STATIC void', 'name' => 'apreq_xs_brigade_readline', 'args' => [] }, { 'return_type' => 'SV *', 'name' => 'apreq_xs_cookie2sv', 'args' => [ { 'type' => 'pTHX', 'name' => 'aTHX' }, { 'type' => 'apreq_cookie_t *', 'name' => 'c' }, { 'type' => 'const char *', 'name' => 'class' }, { 'type' => 'SV *', 'name' => 'parent' } ] }, { 'return_type' => 'char *', 'name' => 'apreq_xs_cookie_pool_copy', 'args' => [ { 'type' => 'pTHX', 'name' => 'aTHX' }, { 'type' => 'SV *', 'name' => 'obj' }, { 'type' => 'SV *', 'name' => 'value' } ] }, { 'return_type' => 'SV *', 'name' => 'apreq_xs_cookie_table2sv', 'args' => [ { 'type' => 'pTHX', 'name' => 'aTHX' }, { 'type' => 'const apr_table_t *', 'name' => 't' }, { 'type' => 'const char *', 'name' => 'class' }, { 'type' => 'SV *', 'name' => 'parent' }, { 'type' => 'const char *', 'name' => 'value_class' }, { 'type' => 'I32', 'name' => 'vclen' } ] }, { 'return_type' => 'MP_STATIC void', 'name' => 'apreq_xs_cookie_table_FETCH', 'args' => [] }, { 'return_type' => 'MP_STATIC void', 'name' => 'apreq_xs_cookie_table_NEXTKEY', 'args' => [] }, { 'return_type' => 'MP_STATIC void', 'name' => 'apreq_xs_cookie_table_do', 'args' => [] }, { 'return_type' => 'int', 'name' => 'apreq_xs_cookie_table_do_sub', 'args' => [ { 'type' => 'void *', 'name' => 'data' }, { 'type' => 'const char *', 'name' => 'key' }, { 'type' => 'const char *', 'name' => 'val' } ] }, { 'return_type' => 'int', 'name' => 'apreq_xs_cookie_table_keys', 'args' => [ { 'type' => 'void *', 'name' => 'data' }, { 'type' => 'const char *', 'name' => 'key' }, { 'type' => 'const char *', 'name' => 'val' } ] }, { 'return_type' => 'int', 'name' => 'apreq_xs_cookie_table_magic_copy', 'comment' => ' Requires perl 5.8 or better. * A custom MGVTBL with its "copy" slot filled allows * us to FETCH a table entry immediately during iteration. * For multivalued keys this is essential in order to get * the value corresponding to the current key, otherwise * values() will always report the first value repeatedly. * With this MGVTBL the keys() list always matches up with * the values() list, even in the multivalued case. * We only prefetch the value during iteration, because the * prefetch adds overhead to EXISTS and STORE operations. * They are only "penalized" when the perl program is iterating * via each(), which seems to be a reasonable tradeoff.', 'args' => [ { 'type' => 'pTHX', 'name' => 'aTHX' }, { 'type' => 'SV *', 'name' => 'sv' }, { 'type' => 'MAGIC *', 'name' => 'mg' }, { 'type' => 'SV *', 'name' => 'nsv' }, { 'type' => 'const char *', 'name' => 'name' }, { 'type' => 'int', 'name' => 'namelen' } ] }, { 'return_type' => 'int', 'name' => 'apreq_xs_cookie_table_values', 'args' => [ { 'type' => 'void *', 'name' => 'data' }, { 'type' => 'const char *', 'name' => 'key' }, { 'type' => 'const char *', 'name' => 'val' } ] }, { 'return_type' => 'void', 'name' => 'apreq_xs_croak', 'args' => [ { 'type' => 'pTHX', 'name' => 'aTHX' }, { 'type' => 'HV *', 'name' => 'data' }, { 'type' => 'SV *', 'name' => 'obj' }, { 'type' => 'apr_status_t', 'name' => 'rc' }, { 'type' => 'const char *', 'name' => 'func' }, { 'type' => 'const char *', 'name' => 'class' } ] }, { 'return_type' => 'SV *', 'name' => 'apreq_xs_error2sv', 'args' => [ { 'type' => 'pTHX', 'name' => 'aTHX' }, { 'type' => 'apr_status_t', 'name' => 's' } ] }, { 'return_type' => 'SV *', 'name' => 'apreq_xs_find_bb_obj', 'args' => [ { 'type' => 'pTHX', 'name' => 'aTHX' }, { 'type' => 'SV *', 'name' => 'in' } ] }, { 'return_type' => 'SV *', 'name' => 'apreq_xs_find_obj', 'comment' => '* * @file apreq_xs_postperl.h * @brief XS include file for making Cookie.so and Request.so * * * @defgroup XS Perl * @ingroup GLUE * @{ * * Trace through magic objects & hashrefs looking for original object. * @param in The starting SV *. * @param key The first letter of key is used to search a hashref for * the desired object. * @return Reference to the object.', 'args' => [ { 'type' => 'pTHX', 'name' => 'aTHX' }, { 'type' => 'SV *', 'name' => 'in' }, { 'type' => 'const char', 'name' => 'key' } ] }, { 'return_type' => 'SV *', 'name' => 'apreq_xs_handle2sv', 'args' => [ { 'type' => 'pTHX', 'name' => 'aTHX' }, { 'type' => 'apreq_handle_t *', 'name' => 'req' }, { 'type' => 'const char *', 'name' => 'class' }, { 'type' => 'SV *', 'name' => 'parent' } ] }, { 'return_type' => 'const char *', 'name' => 'apreq_xs_helper_class', 'args' => [ { 'type' => 'pTHX', 'name' => 'aTHX' }, { 'type' => 'SV * *', 'name' => 'SP' }, { 'type' => 'SV *', 'name' => 'sv' }, { 'type' => 'const char *', 'name' => 'method' } ] }, { 'return_type' => 'MP_STATIC void', 'name' => 'apreq_xs_jar', 'args' => [] }, { 'return_type' => 'SV *', 'name' => 'apreq_xs_object2sv', 'comment' => ' conversion function templates based on modperl-2\'s sv2request_rec', 'args' => [ { 'type' => 'pTHX', 'name' => 'aTHX' }, { 'type' => 'void *', 'name' => 'ptr' }, { 'type' => 'const char *', 'name' => 'class' }, { 'type' => 'SV *', 'name' => 'parent' }, { 'type' => 'const char *', 'name' => 'base' } ] }, { 'return_type' => 'MP_STATIC void', 'name' => 'apreq_xs_param', 'args' => [] }, { 'return_type' => 'SV *', 'name' => 'apreq_xs_param2sv', 'args' => [ { 'type' => 'pTHX', 'name' => 'aTHX' }, { 'type' => 'apreq_param_t *', 'name' => 'p' }, { 'type' => 'const char *', 'name' => 'class' }, { 'type' => 'SV *', 'name' => 'parent' } ] }, { 'return_type' => 'SV *', 'name' => 'apreq_xs_param_table2sv', 'args' => [ { 'type' => 'pTHX', 'name' => 'aTHX' }, { 'type' => 'const apr_table_t *', 'name' => 't' }, { 'type' => 'const char *', 'name' => 'class' }, { 'type' => 'SV *', 'name' => 'parent' }, { 'type' => 'const char *', 'name' => 'value_class' }, { 'type' => 'I32', 'name' => 'vclen' } ] }, { 'return_type' => 'MP_STATIC void', 'name' => 'apreq_xs_param_table_FETCH', 'args' => [] }, { 'return_type' => 'MP_STATIC void', 'name' => 'apreq_xs_param_table_NEXTKEY', 'args' => [] }, { 'return_type' => 'MP_STATIC void', 'name' => 'apreq_xs_param_table_do', 'args' => [] }, { 'return_type' => 'int', 'name' => 'apreq_xs_param_table_do_sub', 'args' => [ { 'type' => 'void *', 'name' => 'data' }, { 'type' => 'const char *', 'name' => 'key' }, { 'type' => 'const char *', 'name' => 'val' } ] }, { 'return_type' => 'int', 'name' => 'apreq_xs_param_table_keys', 'args' => [ { 'type' => 'void *', 'name' => 'data' }, { 'type' => 'const char *', 'name' => 'key' }, { 'type' => 'const char *', 'name' => 'val' } ] }, { 'return_type' => 'int', 'name' => 'apreq_xs_param_table_magic_copy', 'comment' => ' Requires perl 5.8 or better. * A custom MGVTBL with its "copy" slot filled allows * us to FETCH a table entry immediately during iteration. * For multivalued keys this is essential in order to get * the value corresponding to the current key, otherwise * values() will always report the first value repeatedly. * With this MGVTBL the keys() list always matches up with * the values() list, even in the multivalued case. * We only prefetch the value during iteration, because the * prefetch adds overhead to EXISTS and STORE operations. * They are only "penalized" when the perl program is iterating * via each(), which seems to be a reasonable tradeoff.', 'args' => [ { 'type' => 'pTHX', 'name' => 'aTHX' }, { 'type' => 'SV *', 'name' => 'sv' }, { 'type' => 'MAGIC *', 'name' => 'mg' }, { 'type' => 'SV *', 'name' => 'nsv' }, { 'type' => 'const char *', 'name' => 'name' }, { 'type' => 'int', 'name' => 'namelen' } ] }, { 'return_type' => 'int', 'name' => 'apreq_xs_param_table_values', 'args' => [ { 'type' => 'void *', 'name' => 'data' }, { 'type' => 'const char *', 'name' => 'key' }, { 'type' => 'const char *', 'name' => 'val' } ] }, { 'return_type' => 'MP_STATIC void', 'name' => 'apreq_xs_parse', 'args' => [] }, { 'return_type' => 'apreq_cookie_t *', 'name' => 'apreq_xs_sv2cookie', 'args' => [ { 'type' => 'pTHX', 'name' => 'aTHX' }, { 'type' => 'SV *', 'name' => 'sv' } ] }, { 'return_type' => 'apreq_handle_t *', 'name' => 'apreq_xs_sv2handle', 'args' => [ { 'type' => 'pTHX', 'name' => 'aTHX' }, { 'type' => 'SV *', 'name' => 'sv' } ] }, { 'return_type' => 'SV *', 'name' => 'apreq_xs_sv2object', 'args' => [ { 'type' => 'pTHX', 'name' => 'aTHX' }, { 'type' => 'SV *', 'name' => 'sv' }, { 'type' => 'const char *', 'name' => 'class' }, { 'type' => 'const char', 'name' => 'attr' } ] }, { 'return_type' => 'apreq_param_t *', 'name' => 'apreq_xs_sv2param', 'args' => [ { 'type' => 'pTHX', 'name' => 'aTHX' }, { 'type' => 'SV *', 'name' => 'sv' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'apreq_xs_upload_hook', 'args' => [ { 'type' => 'APREQ_HOOK_ARGS', 'name' => 'arg0' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'eval_upload_hook', 'args' => [ { 'type' => 'pTHX', 'name' => 'aTHX' }, { 'type' => 'apreq_param_t *', 'name' => 'upload' }, { 'type' => 'struct hook_ctx *', 'name' => 'ctx' } ] }, { 'return_type' => 'apr_status_t', 'name' => 'upload_hook_cleanup', 'args' => [ { 'type' => 'void *', 'name' => 'ctx_' } ] } ]; 1; libapreq2-2.13/glue/perl/xsbuilder/tables/APR/Request/StructureTable.pm0000644000076400017500000002402211473533305025047 0ustar issacissacpackage APR::Request::StructureTable; # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # ! WARNING: generated by My::ParseSource/ # ! Thu Nov 25 21:19:33 2010 # ! do NOT edit, any changes will be lost ! # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! $APR::Request::StructureTable = [ { 'type' => 'apreq_cookie_t', 'stype' => 'struct apreq_cookie_t', 'elts' => [ { 'type' => 'char *', 'name' => 'path', 'comment' => '*< Restricts url path' }, { 'type' => 'char *', 'name' => 'domain', 'comment' => '*< Restricts server domain' }, { 'type' => 'char *', 'name' => 'port', 'comment' => '*< Restricts server port' }, { 'type' => 'char *', 'name' => 'comment', 'comment' => '*< RFC cookies may send a comment' }, { 'type' => 'char *', 'name' => 'commentURL', 'comment' => '*< RFC cookies may place an URL here' }, { 'type' => 'apr_time_t', 'name' => 'max_age', 'comment' => '*< total duration of cookie: -1 == session' }, { 'type' => 'unsigned', 'name' => 'flags', 'comment' => '*< charsets, taint marks, app-specific bits' }, { 'type' => 'const apreq_value_t', 'name' => 'v', 'comment' => '*< "raw" cookie value' } ], 'comment' => '* @brief Cookie type, supporting both Netscape and RFC cookie specifications.' }, { 'type' => 'apreq_handle_t', 'stype' => 'struct apreq_handle_t', 'elts' => [ { 'type' => 'const struct apreq_module_t *', 'name' => 'module', 'comment' => '* the apreq module which implements this handle' }, { 'type' => 'apr_pool_t *', 'name' => 'pool', 'comment' => '* the pool which defines the lifetime of the parsed data' }, { 'type' => 'apr_bucket_alloc_t *', 'name' => 'bucket_alloc', 'comment' => '* the allocator, which persists at least as long as the pool' } ], 'comment' => '* * @file apreq_module.h * @brief Module API * @ingroup libapreq2 * * An apreq handle associated with a module. The structure * may have variable size, because the module may append its own data * structures after it.' }, { 'type' => 'apreq_hook_find_param_ctx_t', 'stype' => 'struct apreq_hook_find_param_ctx_t', 'elts' => [ { 'type' => 'const char *', 'name' => 'name' }, { 'type' => 'apreq_param_t *', 'name' => 'param' }, { 'type' => 'apreq_hook_t *', 'name' => 'prev' } ], 'comment' => '* * Context struct for the apreq_hook_find_param hook.' }, { 'type' => 'apreq_hook_t', 'stype' => 'struct apreq_hook_t', 'elts' => [ { 'type' => 'apreq_hook_function_t', 'name' => 'hook', 'comment' => '*< the hook function' }, { 'type' => 'apreq_hook_t *', 'name' => 'next', 'comment' => '*< next item in the linked list' }, { 'type' => 'apr_pool_t *', 'name' => 'pool', 'comment' => '*< pool which allocated this hook' }, { 'type' => 'void *', 'name' => 'ctx', 'comment' => '*< a user defined pointer passed to the hook function' } ], 'comment' => '* * A hook is called by the parser whenever data arrives in a file * upload parameter of the request body. You may associate any number * of hooks with a parser instance with apreq_parser_add_hook().' }, { 'type' => 'apreq_module_t', 'stype' => 'struct apreq_module_t', 'elts' => [ { 'type' => 'const char *', 'name' => 'name', 'comment' => '* name of this apreq module' }, { 'type' => 'apr_uint32_t', 'name' => 'magic_number', 'comment' => '* magic number identifying the module and version' }, { 'type' => 'apr_status_t(*)(apreq_handle_t * ,const apr_table_t * * )', 'name' => 'jar', 'comment' => '* get a table with all cookies' }, { 'type' => 'apr_status_t(*)(apreq_handle_t * ,const apr_table_t * * )', 'name' => 'args', 'comment' => '* get a table with all query string parameters' }, { 'type' => 'apr_status_t(*)(apreq_handle_t * ,const apr_table_t * * )', 'name' => 'body', 'comment' => '* get a table with all body parameters' }, { 'type' => 'apreq_cookie_t *(*)(apreq_handle_t * ,const char * )', 'name' => 'jar_get', 'comment' => '* get a cookie by its name' }, { 'type' => 'apreq_param_t *(*)(apreq_handle_t * ,const char * )', 'name' => 'args_get', 'comment' => '* get a query string parameter by its name' }, { 'type' => 'apreq_param_t *(*)(apreq_handle_t * ,const char * )', 'name' => 'body_get', 'comment' => '* get a body parameter by its name' }, { 'type' => 'apr_status_t(*)(apreq_handle_t * ,const apreq_parser_t * * )', 'name' => 'parser_get', 'comment' => '* gets the parser associated with the request body' }, { 'type' => 'apr_status_t(*)(apreq_handle_t * ,apreq_parser_t * )', 'name' => 'parser_set', 'comment' => '* manually set a parser for the request body' }, { 'type' => 'apr_status_t(*)(apreq_handle_t * ,apreq_hook_t * )', 'name' => 'hook_add', 'comment' => '* add a hook function' }, { 'type' => 'apr_status_t(*)(apreq_handle_t * ,apr_size_t * )', 'name' => 'brigade_limit_get', 'comment' => '* determine the maximum in-memory bytes a brigade may use' }, { 'type' => 'apr_status_t(*)(apreq_handle_t * ,apr_size_t )', 'name' => 'brigade_limit_set', 'comment' => '* set the maximum in-memory bytes a brigade may use' }, { 'type' => 'apr_status_t(*)(apreq_handle_t * ,apr_uint64_t * )', 'name' => 'read_limit_get', 'comment' => '* determine the maximum amount of data that will be fed into a parser' }, { 'type' => 'apr_status_t(*)(apreq_handle_t * ,apr_uint64_t )', 'name' => 'read_limit_set', 'comment' => '* set the maximum amount of data that will be fed into a parser' }, { 'type' => 'apr_status_t(*)(apreq_handle_t * ,const char * * )', 'name' => 'temp_dir_get', 'comment' => '* determine the directory used by the parser for temporary files' }, { 'type' => 'apr_status_t(*)(apreq_handle_t * ,const char * )', 'name' => 'temp_dir_set', 'comment' => '* set the directory used by the parser for temporary files' } ], 'comment' => '* * @brief Vtable describing the necessary module functions.' }, { 'type' => 'apreq_param_t', 'stype' => 'struct apreq_param_t', 'elts' => [ { 'type' => 'apr_table_t *', 'name' => 'info', 'comment' => '*< header table associated with the param' }, { 'type' => 'apr_bucket_brigade *', 'name' => 'upload', 'comment' => '*< brigade used to spool upload files' }, { 'type' => 'unsigned', 'name' => 'flags', 'comment' => '*< charsets, taint marks, app-specific bits' }, { 'type' => 'const apreq_value_t', 'name' => 'v', 'comment' => '*< underlying name/value info' } ], 'comment' => '* * @file apreq_param.h * @brief Request parsing and parameter API * @ingroup libapreq2 * Common data structure for params and file uploads' }, { 'type' => 'apreq_parser_t', 'stype' => 'struct apreq_parser_t', 'elts' => [ { 'type' => 'apreq_parser_function_t', 'name' => 'parser', 'comment' => '* the function which parses chunks of body data' }, { 'type' => 'const char *', 'name' => 'content_type', 'comment' => '* the Content-Type request header' }, { 'type' => 'apr_pool_t *', 'name' => 'pool', 'comment' => '* a pool which outlasts the bucket_alloc.' }, { 'type' => 'apr_bucket_alloc_t *', 'name' => 'bucket_alloc', 'comment' => '* bucket allocator used to create bucket brigades' }, { 'type' => 'apr_size_t', 'name' => 'brigade_limit', 'comment' => '* the maximum in-memory bytes a brigade may use' }, { 'type' => 'const char *', 'name' => 'temp_dir', 'comment' => '* the directory for generating temporary files' }, { 'type' => 'apreq_hook_t *', 'name' => 'hook', 'comment' => '* linked list of hooks' }, { 'type' => 'void *', 'name' => 'ctx', 'comment' => '* internal context pointer used by the parser function' } ], 'comment' => '* * A request body parser instance.' }, { 'type' => 'apreq_value_t', 'stype' => 'struct apreq_value_t', 'elts' => [ { 'type' => 'char *', 'name' => 'name', 'comment' => '*< value name' }, { 'type' => 'apr_size_t', 'name' => 'nlen', 'comment' => '*< length of name' }, { 'type' => 'apr_size_t', 'name' => 'dlen', 'comment' => '*< length of data' }, { 'type' => 'char', 'name' => 'data[1]', 'comment' => '*< value data' } ], 'comment' => '* @brief libapreq\'s pre-extensible string type' }, { 'type' => 'struct hook_ctx', 'stype' => 'struct hook_ctx', 'elts' => [ { 'type' => 'SV *', 'name' => 'hook' }, { 'type' => 'SV *', 'name' => 'bucket_data' }, { 'type' => 'SV *', 'name' => 'parent' }, { 'type' => 'PerlInterpreter *', 'name' => 'perl' } ] } ]; 1; libapreq2-2.13/glue/perl/xsbuilder/typemap0000644000076400017500000001015111473532340017613 0ustar issacissacAPR::Pool T_POOLOBJ APR::BucketAlloc T_PTROBJ APR::Request::Apache2 T_APREQ_HANDLE_APACHE2 APR::Request::Cookie T_APREQ_COOKIE APR::Request::Param::Table T_APREQ_TABLE APR::Brigade T_PTROBJ APR::Table T_HASHOBJ APR::Request::CGI T_APREQ_HANDLE_CGI APR::Request::Param T_APREQ_PARAM APR::Request::Error T_APREQ_ERROR Apache2::RequestRec T_APACHEOBJ APR::Request::Cookie::Table T_HASHOBJ APR::Request T_APREQ_HANDLE APR::Request::Parser T_PTROBJ APR::Request::Hook T_PTROBJ apr_status_t T_IV const void * T_PTR const char * T_PV apreq_xs_subclass_t T_SUBCLASS const apr_size_t T_UV apr_size_t T_UV unsigned char T_UV apreq_parser_function_t T_APREQ_PARSER_FUNCTION apreq_hook_function_t T_APREQ_HOOK_FUNCTION INPUT T_APREQ_HANDLE $var = apreq_xs_sv2handle(aTHX_ $arg) T_HASHOBJ if (sv_derived_from($arg, \"${ntype}\")) { if (SVt_PVHV == SvTYPE(SvRV($arg))) { SV *hv = SvRV($arg); MAGIC *mg; if (SvMAGICAL(hv)) { if ((mg = mg_find(hv, PERL_MAGIC_tied))) { $var = INT2PTR(void *, MgObjIV(mg)); } else { Perl_warn(aTHX_ \"Not a tied hash: (magic=%c)\", mg); $var = NULL; } } else { Perl_warn(aTHX_ \"SV is not tied\"); $var = NULL; } } else { $var = INT2PTR(void *, SvObjIV($arg)); } } else { Perl_croak(aTHX_ \"argument is not a blessed reference \" \"(expecting an %s derived object)\", \"${ntype}\"); } T_APREQ_ERROR $var = (HV *)SvRV($arg) T_APREQ_HANDLE_APACHE2 $var = apreq_xs_sv2handle(aTHX_ $arg) T_APREQ_COOKIE $var = apreq_xs_sv2cookie(aTHX_ $arg) T_SUBCLASS if (SvROK($arg) || !sv_derived_from($arg, \"$Package\")) Perl_croak(aTHX_ \"Usage: argument is not a subclass of $Package\"); $var = SvPV_nolen($arg) T_APREQ_HANDLE_CGI $var = apreq_xs_sv2handle(aTHX_ $arg) T_APREQ_PARAM $var = apreq_xs_sv2param(aTHX_ $arg) T_APREQ_TABLE if (sv_derived_from($arg, \"${ntype}\")) { if (SVt_PVHV == SvTYPE(SvRV($arg))) { SV *hv = SvRV($arg); MAGIC *mg; if (SvMAGICAL(hv)) { if ((mg = mg_find(hv, PERL_MAGIC_tied))) { $var = INT2PTR(void *,MgObjIV(mg)); } else { Perl_warn(aTHX_ \"Not a tied hash: (magic=%c)\", mg); $var = NULL; } } else { Perl_warn(aTHX_ \"SV is not tied\"); $var = NULL; } } else { $var = INT2PTR(void *, SvObjIV($arg)); } } else { Perl_croak(aTHX_ \"argument is not a blessed reference \" \"(expecting an %s derived object)\", \"${ntype}\"); } T_APREQ_PARSER_FUNCTION $var = INT2PTR(apreq_parser_function_t, SvObjIV($arg)) T_APREQ_HOOK_FUNCTION $var = INT2PTR(apreq_hook_function_t, SvObjIV($arg)) OUTPUT T_APREQ_HANDLE $arg = apreq_xs_handle2sv(aTHX_ $var, class, parent); T_APREQ_TABLE $arg = apreq_xs_table2sv(aTHX_ $var, \"${ntype}\", parent, PARAM_CLASS, sizeof(PARAM_CLASS)-1); T_HASHOBJ { SV *hv = (SV*)newHV(); SV *rsv = $arg; sv_setref_pv(rsv, \"${ntype}\", $var); sv_magic(hv, rsv, PERL_MAGIC_tied, Nullch, 0); $arg = SvREFCNT_inc(sv_bless(sv_2mortal(newRV_noinc(hv)), gv_stashpv(\"${ntype}\", TRUE))); } T_APREQ_ERROR $arg = sv_bless(newRV_noinc((SV*)$var), gv_stashpvn(\"${ntype}\", sizeof(\"${ntype}\") - 1, FALSE); T_APREQ_HANDLE_APACHE2 $arg = apreq_xs_handle2sv(aTHX_ $var, class, SvRV(ST(1))); SvMAGIC(SvRV($arg))->mg_ptr = (void *)r; T_APREQ_COOKIE $arg = apreq_xs_cookie2sv(aTHX_ $var, class, parent); T_APREQ_HANDLE_CGI $arg = apreq_xs_handle2sv(aTHX_ $var, class, SvRV(ST(1))); T_APREQ_PARAM $arg = apreq_xs_param2sv(aTHX_ $var, class, parent); T_APREQ_PARSER_FUNCTION $arg = sv_setref_pv(newSV(0), class, $var); T_APREQ_HOOK_FUNCTION $arg = sv_setref_pv(newSV(0), class, $var); libapreq2-2.13/glue/README0000644000076400017500000000004611473532340014130 0ustar issacissacLanguage bindings go in glue//. libapreq2-2.13/include/apreq.h0000644000076400017500000002244611473532337015236 0ustar issacissac/* ** 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. */ #ifndef APREQ_H #define APREQ_H #ifdef APREQ_DEBUG #include #endif #include "apr_tables.h" #include #ifdef __cplusplus extern "C" { #endif /** * @file apreq.h * @brief Main header file... * @ingroup libapreq2 * * Define the generic APREQ_ macros and common data structures. */ #ifndef WIN32 /** * The public APREQ functions are declared with APREQ_DECLARE(), so they may * use the most appropriate calling convention. Public APR functions with * variable arguments must use APR_DECLARE_NONSTD(). * * @remark Both the declaration and implementations must use the same macro. */ /** APREQ_DECLARE(rettype) apeq_func(args) */ #define APREQ_DECLARE(d) APR_DECLARE(d) /** * The public APEQ functions using variable arguments are declared with * APEQ_DECLARE_NONSTD(), as they must follow the C language calling convention. * @see APEQ_DECLARE @see APEQ_DECLARE_DATA * @remark Both the declaration and implementations must use the same macro. * @example */ /** APEQ_DECLARE_NONSTD(rettype) apr_func(args, ...); */ #define APREQ_DECLARE_NONSTD(d) APR_DECLARE_NONSTD(d) /** * The public APREQ variables are declared with APREQ_DECLARE_DATA. * This assures the appropriate indirection is invoked at compile time. * @see APREQ_DECLARE @see APREQ_DECLARE_NONSTD * @remark Note that the declaration and implementations use different forms, * but both must include the macro. */ /** extern APREQ_DECLARE_DATA type apr_variable;\n * APREQ_DECLARE_DATA type apr_variable = value; */ #define APREQ_DECLARE_DATA #elif defined (APREQ_DECLARE_STATIC) #define APREQ_DECLARE(type) type __stdcall #define APREQ_DECLARE_NONSTD(type) type #define APREQ_DECLARE_DATA #elif defined (APREQ_DECLARE_EXPORT) #define APREQ_DECLARE(type) __declspec(dllexport) type __stdcall #define APREQ_DECLARE_NONSTD(type) __declspec(dllexport) type #define APREQ_DECLARE_DATA __declspec(dllexport) #else #define APREQ_DECLARE(type) __declspec(dllimport) type __stdcall #define APREQ_DECLARE_NONSTD(type) __declspec(dllimport) type #define APREQ_DECLARE_DATA __declspec(dllimport) #endif /** * Read chucks of data in 64k blocks from the request */ #define APREQ_DEFAULT_READ_BLOCK_SIZE (64 * 1024) /** * Maximum number of bytes mod_apreq2 will send off to libapreq2 for parsing. * mod_apreq2 will log this event and subsequently remove itself * from the filter chain. * @see ap_set_read_limit */ #define APREQ_DEFAULT_READ_LIMIT (64 * 1024 * 1024) /** * Maximum number of bytes mod_apreq2 will let accumulate within the * heap-buckets in a brigade. Excess data will be spooled to an * appended file bucket * @see ap_set_brigade_read_limit */ #define APREQ_DEFAULT_BRIGADE_LIMIT (256 * 1024) /** * Number of elements in the initial apr_table * @see apr_table_make */ #define APREQ_DEFAULT_NELTS 8 /** * Check to see if specified bit f is off in bitfield name */ #define APREQ_FLAGS_OFF(f, name) ((f) &= ~(name##_MASK << name##_BIT)) /** * Check to see if specified bit f is on in bitfield name */ #define APREQ_FLAGS_ON(f, name) ((f) |= (name##_MASK << name##_BIT)) /** * Get specified bit f in bitfield name */ #define APREQ_FLAGS_GET(f, name) (((f) >> name##_BIT) & name##_MASK) /** * Set specified bit f in bitfield name to value * Note the below BIT/Mask defines are used sans the * _BIT, _MASK because of the this define's \#\#_MASK, \#\#_BIT usage. * Each come in a pair */ #define APREQ_FLAGS_SET(f, name, value) \ ((f) = (((f) & ~(name##_MASK << name##_BIT)) \ | ((name##_MASK & (value)) << name##_BIT))) /** * Charset Bit * @see APREQ_FLAGS_OFF @see APREQ_FLAGS_ON * @see APREQ_FLAGS_GET @see APREQ_FLAGS_SET */ #define APREQ_CHARSET_BIT 0 /** * Charset Mask * @see APREQ_FLAGS_OFF @see APREQ_FLAGS_ON * @see APREQ_FLAGS_GET @see APREQ_FLAGS_SET */ #define APREQ_CHARSET_MASK 255 /** * Tainted Bit * @see APREQ_FLAGS_OFF @see APREQ_FLAGS_ON * @see APREQ_FLAGS_GET @see APREQ_FLAGS_SET */ #define APREQ_TAINTED_BIT 8 /** * Tainted Mask * @see APREQ_FLAGS_OFF @see APREQ_FLAGS_ON * @see APREQ_FLAGS_GET @see APREQ_FLAGS_SET */ #define APREQ_TAINTED_MASK 1 /** * Cookier Version Bit * @see APREQ_FLAGS_OFF @see APREQ_FLAGS_ON * @see APREQ_FLAGS_GET @see APREQ_FLAGS_SET */ #define APREQ_COOKIE_VERSION_BIT 11 /** * Cookie Version Mask * @see APREQ_FLAGS_OFF @see APREQ_FLAGS_ON * @see APREQ_FLAGS_GET @see APREQ_FLAGS_SET */ #define APREQ_COOKIE_VERSION_MASK 3 /** * Cookie's Secure Bit * @see APREQ_FLAGS_OFF @see APREQ_FLAGS_ON * @see APREQ_FLAGS_GET @see APREQ_FLAGS_SET */ #define APREQ_COOKIE_SECURE_BIT 13 /** * Cookie's Secure Mask * @see APREQ_FLAGS_OFF @see APREQ_FLAGS_ON * @see APREQ_FLAGS_GET @see APREQ_FLAGS_SET */ #define APREQ_COOKIE_SECURE_MASK 1 /** * Cookie's HttpOnly Bit * @see APREQ_FLAGS_OFF @see APREQ_FLAGS_ON * @see APREQ_FLAGS_GET @see APREQ_FLAGS_SET */ #define APREQ_COOKIE_HTTPONLY_BIT 14 /** * Cookie's HttpOnly Mask * @see APREQ_FLAGS_OFF @see APREQ_FLAGS_ON * @see APREQ_FLAGS_GET @see APREQ_FLAGS_SET */ #define APREQ_COOKIE_HTTPONLY_MASK 1 /** Character encodings. */ typedef enum { APREQ_CHARSET_ASCII =0, APREQ_CHARSET_LATIN1 =1, /* ISO-8859-1 */ APREQ_CHARSET_CP1252 =2, /* Windows-1252 */ APREQ_CHARSET_UTF8 =8 } apreq_charset_t; /** @enum apreq_join_t Join type */ typedef enum { APREQ_JOIN_AS_IS, /**< Join the strings without modification */ APREQ_JOIN_ENCODE, /**< Url-encode the strings before joining them */ APREQ_JOIN_DECODE, /**< Url-decode the strings before joining them */ APREQ_JOIN_QUOTE /**< Quote the strings, backslashing existing quote marks. */ } apreq_join_t; /** @enum apreq_match_t Match type */ typedef enum { APREQ_MATCH_FULL, /**< Full match only. */ APREQ_MATCH_PARTIAL /**< Partial matches are ok. */ } apreq_match_t; /** @enum apreq_expires_t Expiration date format */ typedef enum { APREQ_EXPIRES_HTTP, /**< Use date formatting consistent with RFC 2616 */ APREQ_EXPIRES_NSCOOKIE /**< Use format consistent with Netscape's Cookie Spec */ } apreq_expires_t; /** @brief libapreq's pre-extensible string type */ typedef struct apreq_value_t { char *name; /**< value name */ apr_size_t nlen; /**< length of name */ apr_size_t dlen; /**< length of data */ char data[1]; /**< value data */ } apreq_value_t; /** * Adds the specified apreq_value_t to the apr_table_t. * * @param v value to add * @param t add v to this table * * @return void * * @ see apr_table_t @see apr_value_t */ static APR_INLINE void apreq_value_table_add(const apreq_value_t *v, apr_table_t *t) { apr_table_addn(t, v->name, v->data); } /** * @param T type * @param A attribute * @param P * * XXX */ #define apreq_attr_to_type(T,A,P) ( (T*) ((char*)(P)-offsetof(T,A)) ) /** * Initialize libapreq2. Applications (except apache modules using * mod_apreq) should call this exactly once before they use any * libapreq2 modules. If you want to modify the list of default parsers * with apreq_register_parser(), please use apreq_pre_initialize() * and apreq_post_initialize() instead. * * @param pool a base pool persisting while libapreq2 is used * @remarks after you detroy the pool, you have to call this function again * with a new pool if you still plan to use libapreq2 */ APREQ_DECLARE(apr_status_t) apreq_initialize(apr_pool_t *pool); /** * Pre-initialize libapreq2. Applications (except apache modules using * mod_apreq2) should call this exactly once before they register custom * parsers with libapreq2. mod_apreq2 does this automatically during the * post-config phase, so modules that need call apreq_register_parser should * create a post-config hook using APR_HOOK_MIDDLE. * * @param pool a base pool persisting while libapreq2 is used * @remarks after you detroyed the pool, you have to call this function again * with a new pool if you still plan to use libapreq2 */ APREQ_DECLARE(apr_status_t) apreq_pre_initialize(apr_pool_t *pool); /** * Post-initialize libapreq2. Applications (except apache modules using * mod_apreq2) should this exactly once before they use any * libapreq2 modules for parsing. * * @param pool the same pool that was used in apreq_pre_initialize(). */ APREQ_DECLARE(apr_status_t) apreq_post_initialize(apr_pool_t *pool); #ifdef __cplusplus } #endif #endif /* APREQ_H */ libapreq2-2.13/include/apreq_config.h.in0000644000076400017500000000266511473532766017177 0ustar issacissac/* include/apreq_config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION libapreq2-2.13/include/apreq_cookie.h0000644000076400017500000001731411473532337016565 0ustar issacissac/* ** 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. */ #ifndef APREQ_COOKIE_H #define APREQ_COOKIE_H #include "apreq.h" #include "apr_time.h" #ifdef __cplusplus extern "C" { #endif /** * @file apreq_cookie.h * @brief Cookies and Jars. * @ingroup libapreq2 * * apreq_cookie.h describes a common server-side API for request (incoming) * and response (outgoing) cookies. It aims towards compliance with the * standard cookie specifications listed below. * * @see http://wp.netscape.com/newsref/std/cookie_spec.html * @see http://www.ietf.org/rfc/rfc2109.txt * @see http://www.ietf.org/rfc/rfc2964.txt * @see http://www.ietf.org/rfc/rfc2965.txt * */ /** This macro is deprecated. * * Maximum length of a single Set-Cookie(2) header. */ #define APREQ_COOKIE_MAX_LENGTH 4096 /** @brief Cookie type, supporting both Netscape and RFC cookie specifications. */ typedef struct apreq_cookie_t { char *path; /**< Restricts url path */ char *domain; /**< Restricts server domain */ char *port; /**< Restricts server port */ char *comment; /**< RFC cookies may send a comment */ char *commentURL; /**< RFC cookies may place an URL here */ apr_time_t max_age; /**< total duration of cookie: -1 == session */ unsigned flags; /**< charsets, taint marks, app-specific bits */ const apreq_value_t v; /**< "raw" cookie value */ } apreq_cookie_t; /** Upgrades a jar's table values to apreq_cookie_t structs. */ static APR_INLINE apreq_cookie_t *apreq_value_to_cookie(const char *val) { union { const char *in; char *out; } deconst; deconst.in = val; return apreq_attr_to_type(apreq_cookie_t, v, apreq_attr_to_type(apreq_value_t, data, deconst.out)); } /**@return 1 if this is an RFC cookie, 0 if its a Netscape cookie. */ static APR_INLINE unsigned apreq_cookie_version(const apreq_cookie_t *c) { return APREQ_FLAGS_GET(c->flags, APREQ_COOKIE_VERSION); } /** Sets the cookie's protocol version. */ static APR_INLINE void apreq_cookie_version_set(apreq_cookie_t *c, unsigned v) { APREQ_FLAGS_SET(c->flags, APREQ_COOKIE_VERSION, v); } /** @return 1 if the secure flag is set, 0 otherwise. */ static APR_INLINE unsigned apreq_cookie_is_secure(const apreq_cookie_t *c) { return APREQ_FLAGS_GET(c->flags, APREQ_COOKIE_SECURE); } /** Sets the cookie's secure flag, meaning it only * comes back over an SSL-encrypted connction. */ static APR_INLINE void apreq_cookie_secure_on(apreq_cookie_t *c) { APREQ_FLAGS_ON(c->flags, APREQ_COOKIE_SECURE); } /** Turns off the cookie's secure flag. */ static APR_INLINE void apreq_cookie_secure_off(apreq_cookie_t *c) { APREQ_FLAGS_OFF(c->flags, APREQ_COOKIE_SECURE); } /** @return 1 if the HttpOnly flag is set, 0 otherwise. */ static APR_INLINE unsigned apreq_cookie_is_httponly(const apreq_cookie_t *c) { return APREQ_FLAGS_GET(c->flags, APREQ_COOKIE_HTTPONLY); } /** Sets the cookie's HttpOnly flag, meaning it is not * accessible through client-side script in supported * browsers. */ static APR_INLINE void apreq_cookie_httponly_on(apreq_cookie_t *c) { APREQ_FLAGS_ON(c->flags, APREQ_COOKIE_HTTPONLY); } /** Turns off the cookie's HttpOnly flag. */ static APR_INLINE void apreq_cookie_httponly_off(apreq_cookie_t *c) { APREQ_FLAGS_OFF(c->flags, APREQ_COOKIE_HTTPONLY); } /** @return 1 if the taint flag is set, 0 otherwise. */ static APR_INLINE unsigned apreq_cookie_is_tainted(const apreq_cookie_t *c) { return APREQ_FLAGS_GET(c->flags, APREQ_TAINTED); } /** Sets the cookie's tainted flag. */ static APR_INLINE void apreq_cookie_tainted_on(apreq_cookie_t *c) { APREQ_FLAGS_ON(c->flags, APREQ_TAINTED); } /** Turns off the cookie's tainted flag. */ static APR_INLINE void apreq_cookie_tainted_off(apreq_cookie_t *c) { APREQ_FLAGS_OFF(c->flags, APREQ_TAINTED); } /** * Parse a cookie header and store the cookies in an apr_table_t. * * @param pool pool which allocates the cookies * @param jar table where parsed cookies are stored * @param header the header value * * @return APR_SUCCESS. * @return ::APREQ_ERROR_BADSEQ if an unparseable character sequence appears. * @return ::APREQ_ERROR_MISMATCH if an rfc-cookie attribute appears in a * netscape cookie header. * @return ::APR_ENOTIMPL if an unrecognized rfc-cookie attribute appears. * @return ::APREQ_ERROR_NOTOKEN if a required token was not present. * @return ::APREQ_ERROR_BADCHAR if an unexpected token was present. */ APREQ_DECLARE(apr_status_t) apreq_parse_cookie_header(apr_pool_t *pool, apr_table_t *jar, const char *header); /** * Returns a new cookie, made from the argument list. * * @param pool Pool which allocates the cookie. * @param name The cookie's name. * @param nlen Length of name. * @param value The cookie's value. * @param vlen Length of value. * * @return the new cookie */ APREQ_DECLARE(apreq_cookie_t *) apreq_cookie_make(apr_pool_t *pool, const char *name, const apr_size_t nlen, const char *value, const apr_size_t vlen); /** * Returns a string that represents the cookie as it would appear * in a valid "Set-Cookie*" header. * * @param c cookie. * @param p pool which allocates the returned string. * * @return header string. */ APREQ_DECLARE(char*) apreq_cookie_as_string(const apreq_cookie_t *c, apr_pool_t *p); /** * Same functionality as apreq_cookie_as_string. Stores the string * representation in buf, using up to len bytes in buf as storage. * The return value has the same semantics as that of apr_snprintf, * including the special behavior for a "len = 0" argument. * * @param c cookie. * @param buf storage location for the result. * @param len size of buf's storage area. * * @return size of resulting header string. */ APREQ_DECLARE(int) apreq_cookie_serialize(const apreq_cookie_t *c, char *buf, apr_size_t len); /** * Set the Cookie's expiration date. * * @param c The cookie. * @param time_str If NULL, the Cookie's expiration date is unset, * making it a session cookie. This means no "expires" or "max-age" * attribute will appear in the cookie's serialized form. If time_str * is not NULL, the expiration date will be reset to the offset (from now) * represented by time_str. The time_str should be in a format that * apreq_atoi64t() can understand, namely /[+-]?\\d+\\s*[YMDhms]/. * * @remarks Now time_str may also be a fixed date; see apr_date_parse_rfc() * for admissible formats. */ APREQ_DECLARE(void) apreq_cookie_expires(apreq_cookie_t *c, const char *time_str); #ifdef __cplusplus } #endif #endif /*APREQ_COOKIE_H*/ libapreq2-2.13/include/apreq_error.h0000644000076400017500000000611211473532337016437 0ustar issacissac/* ** 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. */ #ifndef APREQ_ERROR_H #define APREQ_ERROR_H #include "apr_errno.h" #include "apreq.h" #ifdef __cplusplus extern "C" { #endif /** * apreq's wrapper around apr_strerror(); * recognizes APREQ_ERROR_* status codes. */ APREQ_DECLARE(char *) apreq_strerror(apr_status_t s, char *buf, apr_size_t bufsize); /** * @file apreq_error.h * @brief Error status codes. * @ingroup libapreq2 * * Define the APREQ_ error codes. */ #ifndef APR_EBADARG /** * Bad Arguments return value * @see APR_BADARG */ #define APR_EBADARG APR_BADARG /* XXX: don't use APR_BADARG */ #endif /** Internal apreq error. */ #define APREQ_ERROR_GENERAL APR_OS_START_USERERR /** Attempted to perform unsafe action with tainted data. */ #define APREQ_ERROR_TAINTED (APREQ_ERROR_GENERAL + 1) /** Parsing interrupted. */ #define APREQ_ERROR_INTERRUPT (APREQ_ERROR_GENERAL + 2) /** Invalid input data. */ #define APREQ_ERROR_BADDATA (APREQ_ERROR_GENERAL + 10) /** Invalid character. */ #define APREQ_ERROR_BADCHAR (APREQ_ERROR_BADDATA + 1) /** Invalid byte sequence. */ #define APREQ_ERROR_BADSEQ (APREQ_ERROR_BADDATA + 2) /** Invalid attribute. */ #define APREQ_ERROR_BADATTR (APREQ_ERROR_BADDATA + 3) /** Invalid header. */ #define APREQ_ERROR_BADHEADER (APREQ_ERROR_BADDATA + 4) /** Invalid utf8 encoding. */ #define APREQ_ERROR_BADUTF8 (APREQ_ERROR_BADDATA + 5) /** Missing input data. */ #define APREQ_ERROR_NODATA (APREQ_ERROR_GENERAL + 20) /** Missing required token. */ #define APREQ_ERROR_NOTOKEN (APREQ_ERROR_NODATA + 1) /** Missing attribute. */ #define APREQ_ERROR_NOATTR (APREQ_ERROR_NODATA + 2) /** Missing header. */ #define APREQ_ERROR_NOHEADER (APREQ_ERROR_NODATA + 3) /** Missing parser. */ #define APREQ_ERROR_NOPARSER (APREQ_ERROR_NODATA + 4) /** Conflicting information. */ #define APREQ_ERROR_MISMATCH (APREQ_ERROR_GENERAL + 30) /** Exceeds configured maximum limit. */ #define APREQ_ERROR_OVERLIMIT (APREQ_ERROR_MISMATCH + 1) /** Below configured minimum limit. */ #define APREQ_ERROR_UNDERLIMIT (APREQ_ERROR_MISMATCH + 2) /** Setting already configured. */ #define APREQ_ERROR_NOTEMPTY (APREQ_ERROR_MISMATCH + 3) #ifdef __cplusplus } #endif #endif /* APREQ_ERROR_H */ libapreq2-2.13/include/apreq_module.h0000644000076400017500000003215211473532337016576 0ustar issacissac/* ** 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. */ #ifndef APREQ_MODULE_H #define APREQ_MODULE_H #include "apreq_cookie.h" #include "apreq_parser.h" #include "apreq_error.h" #ifdef __cplusplus extern "C" { #endif /** * @file apreq_module.h * @brief Module API * @ingroup libapreq2 */ /** * An apreq handle associated with a module. The structure * may have variable size, because the module may append its own data * structures after it. */ typedef struct apreq_handle_t { /** the apreq module which implements this handle */ const struct apreq_module_t *module; /** the pool which defines the lifetime of the parsed data */ apr_pool_t *pool; /** the allocator, which persists at least as long as the pool */ apr_bucket_alloc_t *bucket_alloc; } apreq_handle_t; /** * @brief Vtable describing the necessary module functions. */ typedef struct apreq_module_t { /** name of this apreq module */ const char *name; /** magic number identifying the module and version */ apr_uint32_t magic_number; /** get a table with all cookies */ apr_status_t (*jar)(apreq_handle_t *, const apr_table_t **); /** get a table with all query string parameters */ apr_status_t (*args)(apreq_handle_t *, const apr_table_t **); /** get a table with all body parameters */ apr_status_t (*body)(apreq_handle_t *, const apr_table_t **); /** get a cookie by its name */ apreq_cookie_t *(*jar_get)(apreq_handle_t *, const char *); /** get a query string parameter by its name */ apreq_param_t *(*args_get)(apreq_handle_t *, const char *); /** get a body parameter by its name */ apreq_param_t *(*body_get)(apreq_handle_t *, const char *); /** gets the parser associated with the request body */ apr_status_t (*parser_get)(apreq_handle_t *, const apreq_parser_t **); /** manually set a parser for the request body */ apr_status_t (*parser_set)(apreq_handle_t *, apreq_parser_t *); /** add a hook function */ apr_status_t (*hook_add)(apreq_handle_t *, apreq_hook_t *); /** determine the maximum in-memory bytes a brigade may use */ apr_status_t (*brigade_limit_get)(apreq_handle_t *, apr_size_t *); /** set the maximum in-memory bytes a brigade may use */ apr_status_t (*brigade_limit_set)(apreq_handle_t *, apr_size_t); /** determine the maximum amount of data that will be fed into a parser */ apr_status_t (*read_limit_get)(apreq_handle_t *, apr_uint64_t *); /** set the maximum amount of data that will be fed into a parser */ apr_status_t (*read_limit_set)(apreq_handle_t *, apr_uint64_t); /** determine the directory used by the parser for temporary files */ apr_status_t (*temp_dir_get)(apreq_handle_t *, const char **); /** set the directory used by the parser for temporary files */ apr_status_t (*temp_dir_set)(apreq_handle_t *, const char *); } apreq_module_t; /** * Defines the module-specific status codes which * are commonly considered to be non-fatal. * * @param s status code returned by an apreq_module_t method. * * @return 1 if s is fatal, 0 otherwise. */ static APR_INLINE unsigned apreq_module_status_is_error(apr_status_t s) { switch (s) { case APR_SUCCESS: case APR_INCOMPLETE: case APR_EINIT: case APREQ_ERROR_NODATA: case APREQ_ERROR_NOPARSER: case APREQ_ERROR_NOHEADER: return 0; default: return 1; } } /** * Expose the parsed "cookie" header associated to this handle. * * @param req The request handle * @param t The resulting table, which will either be NULL or a * valid table object on return. * * @return APR_SUCCESS or a module-specific error status code. */ static APR_INLINE apr_status_t apreq_jar(apreq_handle_t *req, const apr_table_t **t) { return req->module->jar(req,t); } /** * Expose the parsed "query string" associated to this handle. * * @param req The request handle * @param t The resulting table, which will either be NULL or a * valid table object on return. * * @return APR_SUCCESS or a module-specific error status code. */ static APR_INLINE apr_status_t apreq_args(apreq_handle_t *req, const apr_table_t **t) { return req->module->args(req,t); } /** * Expose the parsed "request body" associated to this handle. * * @param req The request handle * @param t The resulting table, which will either be NULL or a * valid table object on return. * * @return APR_SUCCESS or a module-specific error status code. */ static APR_INLINE apr_status_t apreq_body(apreq_handle_t *req, const apr_table_t **t) { return req->module->body(req, t); } /** * Fetch the first cookie with the given name. * * @param req The request handle * @param name Case-insensitive cookie name. * * @return First matching cookie, or NULL if none match. */ static APR_INLINE apreq_cookie_t *apreq_jar_get(apreq_handle_t *req, const char *name) { return req->module->jar_get(req, name); } /** * Fetch the first query string param with the given name. * * @param req The request handle * @param name Case-insensitive param name. * * @return First matching param, or NULL if none match. */ static APR_INLINE apreq_param_t *apreq_args_get(apreq_handle_t *req, const char *name) { return req->module->args_get(req, name); } /** * Fetch the first body param with the given name. * * @param req The request handle * @param name Case-insensitive cookie name. * * @return First matching param, or NULL if none match. */ static APR_INLINE apreq_param_t *apreq_body_get(apreq_handle_t *req, const char *name) { return req->module->body_get(req, name); } /** * Fetch the active body parser. * * @param req The request handle * @param parser Points to the active parser on return. * * @return APR_SUCCESS or module-specific error. * */ static APR_INLINE apr_status_t apreq_parser_get(apreq_handle_t *req, const apreq_parser_t **parser) { return req->module->parser_get(req, parser); } /** * Set the body parser for this request. * * @param req The request handle * @param parser New parser to use. * * @return APR_SUCCESS or module-specific error. */ static APR_INLINE apr_status_t apreq_parser_set(apreq_handle_t *req, apreq_parser_t *parser) { return req->module->parser_set(req, parser); } /** * Add a parser hook for this request. * * @param req The request handle * @param hook Hook to add. * * @return APR_SUCCESS or module-specific error. */ static APR_INLINE apr_status_t apreq_hook_add(apreq_handle_t *req, apreq_hook_t *hook) { return req->module->hook_add(req, hook); } /** * Set the active brigade limit. * * @param req The handle. * @param bytes New limit to use. * * @return APR_SUCCESS or module-specific error. * */ static APR_INLINE apr_status_t apreq_brigade_limit_set(apreq_handle_t *req, apr_size_t bytes) { return req->module->brigade_limit_set(req, bytes); } /** * Get the active brigade limit. * * @param req The handle. * @param bytes Pointer to resulting (current) limit. * * @return APR_SUCCESS or a module-specific error, * which may leave bytes undefined. */ static APR_INLINE apr_status_t apreq_brigade_limit_get(apreq_handle_t *req, apr_size_t *bytes) { return req->module->brigade_limit_get(req, bytes); } /** * Set the active read limit. * * @param req The handle. * @param bytes New limit to use. * * @return APR_SUCCESS or a module-specific error. * */ static APR_INLINE apr_status_t apreq_read_limit_set(apreq_handle_t *req, apr_uint64_t bytes) { return req->module->read_limit_set(req, bytes); } /** * Get the active read limit. * * @param req The request handle. * @param bytes Pointer to resulting (current) limit. * * @return APR_SUCCESS or a module-specific error, * which may leave bytes undefined. */ static APR_INLINE apr_status_t apreq_read_limit_get(apreq_handle_t *req, apr_uint64_t *bytes) { return req->module->read_limit_get(req, bytes); } /** * Set the active temp directory. * * @param req The handle. * @param path New path to use; may be NULL. * * @return APR_SUCCESS or a module-specific error . */ static APR_INLINE apr_status_t apreq_temp_dir_set(apreq_handle_t *req, const char *path) { return req->module->temp_dir_set(req, path); } /** * Get the active temp directory. * * @param req The handle. * @param path Resulting path to temp dir. * * @return APR_SUCCESS implies path is valid, but may also be NULL. * Any other return value is module-specific, and may leave * path undefined. */ static APR_INLINE apr_status_t apreq_temp_dir_get(apreq_handle_t *req, const char **path) { return req->module->temp_dir_get(req, path); } /** * Convenience macro for defining a module by mapping * a function prefix to an associated apreq_module_t structure. * * @param pre Prefix to define new module. All attributes of * the apreq_module_t struct are defined with this as their * prefix. The generated struct is named by appending "_module" to * the prefix. * @param mmn Magic number (i.e. version number) of this module. */ #define APREQ_MODULE(pre, mmn) const apreq_module_t \ pre##_module = { #pre, mmn, \ pre##_jar, pre##_args, pre##_body, \ pre##_jar_get, pre##_args_get, pre##_body_get, \ pre##_parser_get, pre##_parser_set, pre##_hook_add, \ pre##_brigade_limit_get, pre##_brigade_limit_set, \ pre##_read_limit_get, pre##_read_limit_set, \ pre##_temp_dir_get, pre##_temp_dir_set, \ } /** * Create an apreq handle which is suitable for a CGI program. It * reads input from stdin and writes output to stdout. * * @param pool Pool associated to this handle. * * @return New handle; can only be NULL if the pool allocation failed. * * @remarks The handle gets cached in the pool's userdata, so subsequent * calls will retrieve the original cached handle. */ APREQ_DECLARE(apreq_handle_t*) apreq_handle_cgi(apr_pool_t *pool); /** * Create a custom apreq handle which knows only some static * values. Useful if you want to test the parser code or if you have * got data from a custom source (neither Apache 2 nor CGI). * * @param pool allocates the parse data, * @param query_string parsed into args table * @param cookie value of the request "Cookie" header * @param parser parses the request body * @param read_limit maximum bytes to read from the body * @param in brigade containing the request body * * @return new handle; can only be NULL if the pool allocation failed. */ APREQ_DECLARE(apreq_handle_t*) apreq_handle_custom(apr_pool_t *pool, const char *query_string, const char *cookie, apreq_parser_t *parser, apr_uint64_t read_limit, apr_bucket_brigade *in); /** * Find the first query string parameter or body parameter with the * specified name. The match is case-insensitive. * * @param req request handle. * @param key desired parameter name * * @return The first matching parameter (with args searched first) or NULL. */ APREQ_DECLARE(apreq_param_t *)apreq_param(apreq_handle_t *req, const char *key); /** * Find the first cookie with the specified name. * The match is case-insensitive. * * @param req request handle. * @param name desired cookie name * * @return The first matching cookie or NULL. */ #define apreq_cookie(req, name) apreq_jar_get(req, name) /** * Returns a table containing key-value pairs for the full request * (args + body). * * @param req request handle * @param p allocates the returned table. * * @return table representing all available params; is never NULL. */ APREQ_DECLARE(apr_table_t *) apreq_params(apreq_handle_t *req, apr_pool_t *p); /** * Returns a table containing all request cookies. * * @param req the apreq request handle * @param p Allocates the returned table. */ APREQ_DECLARE(apr_table_t *)apreq_cookies(apreq_handle_t *req, apr_pool_t *p); #ifdef __cplusplus } #endif #endif /* APREQ_MODULE_H */ libapreq2-2.13/include/apreq_param.h0000644000076400017500000001665111473532337016417 0ustar issacissac/* ** 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. */ #ifndef APREQ_PARAM_H #define APREQ_PARAM_H #include "apreq.h" #include "apr_buckets.h" #ifdef __cplusplus extern "C" { #endif /** * @file apreq_param.h * @brief Request parsing and parameter API * @ingroup libapreq2 */ /** Common data structure for params and file uploads */ typedef struct apreq_param_t { apr_table_t *info; /**< header table associated with the param */ apr_bucket_brigade *upload; /**< brigade used to spool upload files */ unsigned flags; /**< charsets, taint marks, app-specific bits */ const apreq_value_t v; /**< underlying name/value info */ } apreq_param_t; /** @return 1 if the taint flag is set, 0 otherwise. */ static APR_INLINE unsigned apreq_param_is_tainted(const apreq_param_t *p) { return APREQ_FLAGS_GET(p->flags, APREQ_TAINTED); } /** Sets the tainted flag. */ static APR_INLINE void apreq_param_tainted_on(apreq_param_t *p) { APREQ_FLAGS_ON(p->flags, APREQ_TAINTED); } /** Turns off the taint flag. */ static APR_INLINE void apreq_param_tainted_off(apreq_param_t *p) { APREQ_FLAGS_OFF(p->flags, APREQ_TAINTED); } /** Sets the character encoding for this parameter. */ static APR_INLINE apreq_charset_t apreq_param_charset_set(apreq_param_t *p, apreq_charset_t c) { apreq_charset_t old = (apreq_charset_t) APREQ_FLAGS_GET(p->flags, APREQ_CHARSET); APREQ_FLAGS_SET(p->flags, APREQ_CHARSET, c); return old; } /** Gets the character encoding for this parameter. */ static APR_INLINE apreq_charset_t apreq_param_charset_get(apreq_param_t *p) { return (apreq_charset_t)APREQ_FLAGS_GET(p->flags, APREQ_CHARSET); } /** Upgrades args and body table values to apreq_param_t structs. */ static APR_INLINE apreq_param_t *apreq_value_to_param(const char *val) { union { const char *in; char *out; } deconst; deconst.in = val; return apreq_attr_to_type(apreq_param_t, v, apreq_attr_to_type(apreq_value_t, data, deconst.out)); } /** creates a param from name/value information */ APREQ_DECLARE(apreq_param_t *) apreq_param_make(apr_pool_t *p, const char *name, const apr_size_t nlen, const char *val, const apr_size_t vlen); /** * Url-decodes a name=value pair into a param. * * @param param points to the decoded parameter on success * @param pool Pool from which the param is allocated. * @param word Start of the name=value pair. * @param nlen Length of urlencoded name. * @param vlen Length of urlencoded value. * * @return APR_SUCCESS on success. * @return ::APREQ_ERROR_BADSEQ or ::APREQ_ERROR_BADCHAR on malformed input. * * @remarks Unless vlen == 0, this function assumes there is * exactly one character ('=') which separates the pair. * */ APREQ_DECLARE(apr_status_t) apreq_param_decode(apreq_param_t **param, apr_pool_t *pool, const char *word, apr_size_t nlen, apr_size_t vlen); /** * Url-encodes the param into a name-value pair. * @param pool Pool which allocates the returned string. * @param param Param to encode. * @return name-value pair representing the param. */ APREQ_DECLARE(char *) apreq_param_encode(apr_pool_t *pool, const apreq_param_t *param); /** * Parse a url-encoded string into a param table. * @param pool pool used to allocate the param data. * @param t table to which the params are added. * @param qs Query string to url-decode. * @return APR_SUCCESS if successful, error otherwise. * @remark This function uses [&;] as the set of tokens * to delineate words, and will treat a word w/o '=' * as a name-value pair with value-length = 0. * */ APREQ_DECLARE(apr_status_t) apreq_parse_query_string(apr_pool_t *pool, apr_table_t *t, const char *qs); /** * Returns an array of parameters (apreq_param_t *) matching the given key. * The key is case-insensitive. * @param p Allocates the returned array. * @param t the parameter table returned by apreq_args(), apreq_body() * or apreq_params() * @param key Null-terminated search key, case insensitive. * key==NULL fetches all parameters. * @return an array of apreq_param_t* (pointers) * @remark Also parses the request if necessary. */ APREQ_DECLARE(apr_array_header_t *) apreq_params_as_array(apr_pool_t *p, const apr_table_t *t, const char *key); /** * Returns a ", " -joined string containing all parameters * for the requested key, an empty string if none are found. * The key is case-insensitive. * * @param p Allocates the return string. * @param t the parameter table returned by apreq_args(), apreq_body() * or apreq_params() * @param key Null-terminated parameter name, case insensitive. * key==NULL fetches all values. * @param mode Join type- see apreq_join(). * @return the joined string or NULL on error * @remark Also parses the request if necessary. */ APREQ_DECLARE(const char *) apreq_params_as_string(apr_pool_t *p, const apr_table_t *t, const char *key, apreq_join_t mode); /** * Returns a table of all params in req->body with non-NULL upload brigades. * @param body parameter table returned by apreq_body() or apreq_params() * @param pool Pool which allocates the table struct. * @return Upload table. * @remark Will parse the request if necessary. */ APREQ_DECLARE(const apr_table_t *) apreq_uploads(const apr_table_t *body, apr_pool_t *pool); /** * Returns the first param in req->body which has both param->v.name * matching key (case insensitive) and param->upload != NULL. * @param body parameter table returned by apreq_body() or apreq_params() * @param name Parameter name. key == NULL returns first upload. * @return Corresponding upload, NULL if none found. * @remark Will parse the request as necessary. */ APREQ_DECLARE(const apreq_param_t *) apreq_upload(const apr_table_t *body, const char *name); #ifdef __cplusplus } #endif #endif /* APREQ_PARAM_H */ libapreq2-2.13/include/apreq_parser.h0000644000076400017500000002360511473532337016610 0ustar issacissac/* ** 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. */ #ifndef APREQ_PARSERS_H #define APREQ_PARSERS_H /* These structs are defined below */ #include "apreq_param.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** * @file apreq_parser.h * @brief Request body parser API * @ingroup libapreq2 */ /** * A hook is called by the parser whenever data arrives in a file * upload parameter of the request body. You may associate any number * of hooks with a parser instance with apreq_parser_add_hook(). */ typedef struct apreq_hook_t apreq_hook_t; /** * A request body parser instance. */ typedef struct apreq_parser_t apreq_parser_t; /** Parser arguments. */ #define APREQ_PARSER_ARGS apreq_parser_t *parser, \ apr_table_t *t, \ apr_bucket_brigade *bb /** Hook arguments */ #define APREQ_HOOK_ARGS apreq_hook_t *hook, \ apreq_param_t *param, \ apr_bucket_brigade *bb /** * The callback function implementing a request body parser. */ typedef apr_status_t (*apreq_parser_function_t)(APREQ_PARSER_ARGS); /** * The callback function of a hook. See apreq_hook_t. */ typedef apr_status_t (*apreq_hook_function_t)(APREQ_HOOK_ARGS); /** * Declares a API parser. */ #define APREQ_DECLARE_PARSER(f) APREQ_DECLARE_NONSTD(apr_status_t) \ (f) (APREQ_PARSER_ARGS) /** * Declares an API hook. */ #define APREQ_DECLARE_HOOK(f) APREQ_DECLARE_NONSTD(apr_status_t) \ (f) (APREQ_HOOK_ARGS) /** * A hook is called by the parser whenever data arrives in a file * upload parameter of the request body. You may associate any number * of hooks with a parser instance with apreq_parser_add_hook(). */ struct apreq_hook_t { apreq_hook_function_t hook; /**< the hook function */ apreq_hook_t *next; /**< next item in the linked list */ apr_pool_t *pool; /**< pool which allocated this hook */ void *ctx; /**< a user defined pointer passed to the hook function */ }; /** * A request body parser instance. */ struct apreq_parser_t { /** the function which parses chunks of body data */ apreq_parser_function_t parser; /** the Content-Type request header */ const char *content_type; /** a pool which outlasts the bucket_alloc. */ apr_pool_t *pool; /** bucket allocator used to create bucket brigades */ apr_bucket_alloc_t *bucket_alloc; /** the maximum in-memory bytes a brigade may use */ apr_size_t brigade_limit; /** the directory for generating temporary files */ const char *temp_dir; /** linked list of hooks */ apreq_hook_t *hook; /** internal context pointer used by the parser function */ void *ctx; }; /** * Parse the incoming brigade into a table. Parsers normally * consume all the buckets of the brigade during parsing. However * parsers may leave "rejected" data in the brigade, even during a * successful parse, so callers may need to clean up the brigade * themselves (in particular, rejected buckets should not be * passed back to the parser again). * @remark bb == NULL is valid: the parser should return its * public status: APR_INCOMPLETE, APR_SUCCESS, or an error code. */ static APR_INLINE apr_status_t apreq_parser_run(struct apreq_parser_t *psr, apr_table_t *t, apr_bucket_brigade *bb) { return psr->parser(psr, t, bb); } /** * Run the hook with the current parameter and the incoming * bucket brigade. The hook may modify the brigade if necessary. * Once all hooks have completed, the contents of the brigade will * be added to the parameter's bb attribute. * @return APR_SUCCESS on success. All other values represent errors. */ static APR_INLINE apr_status_t apreq_hook_run(struct apreq_hook_t *h, apreq_param_t *param, apr_bucket_brigade *bb) { return h->hook(h, param, bb); } /** * RFC 822 Header parser. It will reject all data * after the first CRLF CRLF sequence (an empty line). * See apreq_parser_run() for more info on rejected data. */ APREQ_DECLARE_PARSER(apreq_parse_headers); /** * RFC 2396 application/x-www-form-urlencoded parser. */ APREQ_DECLARE_PARSER(apreq_parse_urlencoded); /** * RFC 2388 multipart/form-data (and XForms 1.0 multipart/related) * parser. It will reject any buckets representing preamble and * postamble text (this is normal behavior, not an error condition). * See apreq_parser_run() for more info on rejected data. */ APREQ_DECLARE_PARSER(apreq_parse_multipart); /** * Generic parser. No table entries will be added to * the req->body table by this parser. The parser creates * a dummy apreq_param_t to pass to any configured hooks. If * no hooks are configured, the dummy param's bb slot will * contain a copy of the request body. It can be retrieved * by casting the parser's ctx pointer to (apreq_param_t **). */ APREQ_DECLARE_PARSER(apreq_parse_generic); /** * apr_xml_parser hook. It will parse until EOS appears. * The parsed document isn't available until parsing has * completed successfully. The hook's ctx pointer may * be cast as (apr_xml_doc **) to retrieve the * parsed document. */ APREQ_DECLARE_HOOK(apreq_hook_apr_xml_parser); /** * Construct a parser. * * @param pool Pool used to allocate the parser. * @param ba bucket allocator used to create bucket brigades * @param content_type Content-type that this parser can deal with. * @param pfn The parser function. * @param brigade_limit the maximum in-memory bytes a brigade may use * @param temp_dir the directory used by the parser for temporary files * @param hook Hooks to associate this parser with. * @param ctx Parser's internal scratch pad. * @return New parser. */ APREQ_DECLARE(apreq_parser_t *) apreq_parser_make(apr_pool_t *pool, apr_bucket_alloc_t *ba, const char *content_type, apreq_parser_function_t pfn, apr_size_t brigade_limit, const char *temp_dir, apreq_hook_t *hook, void *ctx); /** * Construct a hook. * * @param pool used to allocate the hook. * @param hook The hook function. * @param next List of other hooks for this hook to call on. * @param ctx Hook's internal scratch pad. * @return New hook. */ APREQ_DECLARE(apreq_hook_t *) apreq_hook_make(apr_pool_t *pool, apreq_hook_function_t hook, apreq_hook_t *next, void *ctx); /** * Add a new hook to the end of the parser's hook list. * * @param p Parser. * @param h Hook to append. */ APREQ_DECLARE(apr_status_t) apreq_parser_add_hook(apreq_parser_t *p, apreq_hook_t *h); /** * Fetch the default parser function associated with the given MIME type. * @param enctype The desired enctype (can also be a full "Content-Type" * header). * @return The parser function, or NULL if the enctype is unrecognized. */ APREQ_DECLARE(apreq_parser_function_t)apreq_parser(const char *enctype); /** * Register a new parsing function with a MIME enctype. * Registered parsers are added to apreq_parser()'s * internal lookup table. * * @param enctype The MIME type. * @param pfn The function to use during parsing. Setting * parser == NULL will remove an existing parser. * * @return APR_SUCCESS or error. */ APREQ_DECLARE(apr_status_t) apreq_register_parser(const char *enctype, apreq_parser_function_t pfn); /** * Returns APREQ_ERROR_GENERAL. Effectively disables mfd parser * if a file-upload field is present. * */ APREQ_DECLARE_HOOK(apreq_hook_disable_uploads); /** * Calls apr_brigade_cleanup on the incoming brigade * after passing the brigade to any subsequent hooks. */ APREQ_DECLARE_HOOK(apreq_hook_discard_brigade); /** * Context struct for the apreq_hook_find_param hook. */ typedef struct apreq_hook_find_param_ctx_t { const char *name; apreq_param_t *param; apreq_hook_t *prev; } apreq_hook_find_param_ctx_t; /** * Special purpose utility for locating a parameter * during parsing. The hook's ctx shoud be initialized * to an apreq_hook_find_param_ctx_t *, with the name * attribute set to the sought parameter name, the param * attribute set to NULL, and the prev attribute set to * the address of the previous hook. The param attribute * will be reassigned to the first param found, and once * that happens this hook is immediately removed from the chain. * * @remarks When used, this should always be the first hook * invoked, so add it manually with ctx->prev = &parser->hook * instead of using apreq_parser_add_hook. */ APREQ_DECLARE_HOOK(apreq_hook_find_param); #ifdef __cplusplus } #endif #endif /* APREQ_PARSERS_H */ libapreq2-2.13/include/apreq_util.h0000644000076400017500000003452311473532337016272 0ustar issacissac/* ** 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. */ #ifndef APREQ_UTIL_H #define APREQ_UTIL_H #include "apr_file_io.h" #include "apr_buckets.h" #include "apreq.h" #ifdef __cplusplus extern "C" { #endif /** * This header contains useful functions for creating new * parsers, hooks or modules. It includes * * - string <-> array converters * - substring search functions * - simple encoders & decoders for urlencoded strings * - simple time, date, & file-size converters * @file apreq_util.h * @brief Utility functions for apreq. * @ingroup libapreq2 */ /** * Join an array of values. The result is an empty string if there are * no values. * * @param p Pool to allocate return value. * @param sep String that is inserted between the joined values. * @param arr Array of apreq_value_t entries. * @param mode Join type- see apreq_join_t. * * @return Joined string, or NULL on error */ APREQ_DECLARE(char *) apreq_join(apr_pool_t *p, const char *sep, const apr_array_header_t *arr, apreq_join_t mode); /** * Returns offset of match string's location, or -1 if no match is found. * * @param hay Location of bytes to scan. * @param hlen Number of bytes available for scanning. * @param ndl Search string * @param nlen Length of search string. * @param type Match type. * * @return Offset of match string, or -1 if no match is found. * */ APREQ_DECLARE(apr_ssize_t) apreq_index(const char* hay, apr_size_t hlen, const char* ndl, apr_size_t nlen, const apreq_match_t type); /** * Places a quoted copy of src into dest. Embedded quotes are escaped with a * backslash ('\'). * * @param dest Location of quoted copy. Must be large enough to hold the copy * and trailing null byte. * @param src Original string. * @param slen Length of original string. * @param dest Destination string. * * @return length of quoted copy in dest. */ APREQ_DECLARE(apr_size_t) apreq_quote(char *dest, const char *src, const apr_size_t slen); /** * * Same as apreq_quote() except when src begins and ends in quote marks. In * that case it assumes src is quoted correctly, and just copies src to dest. * * @param dest Location of quoted copy. Must be large enough to hold the copy * and trailing null byte. * @param src Original string. * @param slen Length of original string. * @param dest Destination string. * * @return length of quoted copy in dest. */ APREQ_DECLARE(apr_size_t) apreq_quote_once(char *dest, const char *src, const apr_size_t slen); /** * Url-encodes a string. * * @param dest Location of url-encoded result string. Caller must ensure it * is large enough to hold the encoded string and trailing '\\0'. * @param src Original string. * @param slen Length of original string. * * @return length of url-encoded string in dest; does not exceed 3 * slen. */ APREQ_DECLARE(apr_size_t) apreq_encode(char *dest, const char *src, const apr_size_t slen); /** * Convert a string from cp1252 to utf8. Caller must ensure it is large enough * to hold the encoded string and trailing '\\0'. * * @param dest Location of utf8-encoded result string. Caller must ensure it * is large enough to hold the encoded string and trailing '\\0'. * @param src Original string. * @param slen Length of original string. * * @return length of utf8-encoded string in dest; does not exceed 3 * slen. */ APREQ_DECLARE(apr_size_t) apreq_cp1252_to_utf8(char *dest, const char *src, apr_size_t slen); /** * Heuristically determine the charset of a string. * * @param src String to scan. * @param slen Length of string. * * @return APREQ_CHARSET_ASCII if the string contains only 7-bit chars; * @return APREQ_CHARSET_UTF8 if the string is a valid utf8 byte sequence; * @return APREQ_CHARSET_LATIN1 if the string has no control chars; * @return APREQ_CHARSET_CP1252 if the string has control chars. */ APREQ_DECLARE(apreq_charset_t) apreq_charset_divine(const char *src, apr_size_t slen); /** * Url-decodes a string. * * @param dest Location of url-encoded result string. Caller must ensure dest is * large enough to hold the encoded string and trailing null character. * @param dlen points to resultant length of url-decoded string in dest * @param src Original string. * @param slen Length of original string. * * @return APR_SUCCESS. * @return APR_INCOMPLETE if the string * ends in the middle of an escape sequence. * @return ::APREQ_ERROR_BADSEQ or ::APREQ_ERROR_BADCHAR on malformed input. * * @remarks In the non-success case, dlen will be set to include * the last succesfully decoded value. This function decodes * \%uXXXX into a utf8 (wide) character, following ECMA-262 * (the Javascript spec) Section B.2.1. */ APREQ_DECLARE(apr_status_t) apreq_decode(char *dest, apr_size_t *dlen, const char *src, apr_size_t slen); /** * Url-decodes an iovec array. * * @param dest Location of url-encoded result string. Caller must ensure dest is * large enough to hold the encoded string and trailing null character. * @param dlen Resultant length of dest. * @param v Array of iovecs that represent the source string * @param nelts Number of iovecs in the array. * * @return APR_SUCCESS. * @return APR_INCOMPLETE if the iovec * ends in the middle of an escape sequence. * @return ::APREQ_ERROR_BADSEQ or ::APREQ_ERROR_BADCHAR on malformed input. * * @remarks In the non-APR_SUCCESS case, dlen will be set to include * the last succesfully decoded value. This function decodes * \%uXXXX into a utf8 (wide) character, following ECMA-262 * (the Javascript spec) Section B.2.1. */ APREQ_DECLARE(apr_status_t) apreq_decodev(char *dest, apr_size_t *dlen, struct iovec *v, int nelts); /** * Returns an url-encoded copy of a string. * * @param p Pool used to allocate the return value. * @param src Original string. * @param slen Length of original string. * * @return The url-encoded string. * * @remarks Use this function insead of apreq_encode if its * caller might otherwise overflow dest. */ static APR_INLINE char *apreq_escape(apr_pool_t *p, const char *src, const apr_size_t slen) { char *rv; if (src == NULL) return NULL; rv = (char *)apr_palloc(p, 3 * slen + 1); apreq_encode(rv, src, slen); return rv; } /** * An \e in-situ url-decoder. * * @param str The string to decode * * @return Length of decoded string, or < 0 on error. */ static APR_INLINE apr_ssize_t apreq_unescape(char *str) { apr_size_t len; apr_status_t rv = apreq_decode(str, &len, str, strlen(str)); if (rv == APR_SUCCESS) return (apr_ssize_t)len; else return -1; } /** * Converts file sizes (KMG) to bytes * * @param s file size matching m/^\\d+[KMG]b?$/i * * @return 64-bit integer representation of s. * * @todo What happens when s is malformed? Should this return * an unsigned value instead? */ APREQ_DECLARE(apr_int64_t) apreq_atoi64f(const char *s); /** * Converts time strings (YMDhms) to seconds * * @param s time string matching m/^\\+?\\d+[YMDhms]$/ * * @return 64-bit integer representation of s as seconds. * * @todo What happens when s is malformed? Should this return * an unsigned value instead? */ APREQ_DECLARE(apr_int64_t) apreq_atoi64t(const char *s); /** * Writes brigade to a file. * * @param f File that gets the brigade. * @param wlen On a successful return, wlen holds the length of * the brigade, which is the amount of data written to * the file. * @param bb Bucket brigade. * * @return APR_SUCCESS. * @return Error status code from either an unsuccessful apr_bucket_read(), * or a failed apr_file_writev(). * * @remarks This function leaks a bucket brigade into bb->p whenever * the final bucket in bb is a spool bucket. */ APREQ_DECLARE(apr_status_t) apreq_brigade_fwrite(apr_file_t *f, apr_off_t *wlen, apr_bucket_brigade *bb); /** * Makes a temporary file. * * @param fp Points to the temporary apr_file_t on success. * @param pool Pool to associate with the temp file. When the * pool is destroyed, the temp file will be closed * and deleted. * @param path The base directory which will contain the temp file. * If param == NULL, the directory will be selected via * tempnam(). See the tempnam manpage for details. * * @return APR_SUCCESS. * @return Error status code from unsuccessful apr_filepath_merge(), * or a failed apr_file_mktemp(). */ APREQ_DECLARE(apr_status_t) apreq_file_mktemp(apr_file_t **fp, apr_pool_t *pool, const char *path); /** * Set aside all buckets in the brigade. * * @param bb Brigade. * @param p Setaside buckets into this pool. * @return APR_SUCCESS. * @return Error status code from an unsuccessful apr_bucket_setaside(). */ static APR_INLINE apr_status_t apreq_brigade_setaside(apr_bucket_brigade *bb, apr_pool_t *p) { apr_bucket *e; for (e = APR_BRIGADE_FIRST(bb); e != APR_BRIGADE_SENTINEL(bb); e = APR_BUCKET_NEXT(e)) { apr_status_t rv = apr_bucket_setaside(e, p); if (rv != APR_SUCCESS) return rv; } return APR_SUCCESS; } /** * Copy a brigade. * * @param d (destination) Copied buckets are appended to this brigade. * @param s (source) Brigade to copy from. * * @return APR_SUCCESS. * @return Error status code from an unsuccessful apr_bucket_copy(). * * @remarks s == d produces Undefined Behavior. */ static APR_INLINE apr_status_t apreq_brigade_copy(apr_bucket_brigade *d, apr_bucket_brigade *s) { apr_bucket *e; for (e = APR_BRIGADE_FIRST(s); e != APR_BRIGADE_SENTINEL(s); e = APR_BUCKET_NEXT(e)) { apr_bucket *c; apr_status_t rv = apr_bucket_copy(e, &c); if (rv != APR_SUCCESS) return rv; APR_BRIGADE_INSERT_TAIL(d, c); } return APR_SUCCESS; } /** * Move the front of a brigade. * * @param d (destination) Append buckets to this brigade. * @param s (source) Brigade to take buckets from. * @param e First bucket of s after the move. All buckets * before e are appended to d. * * @remarks This moves all buckets when e == APR_BRIGADE_SENTINEL(s). */ static APR_INLINE void apreq_brigade_move(apr_bucket_brigade *d, apr_bucket_brigade *s, apr_bucket *e) { apr_bucket *f; if (e != APR_BRIGADE_SENTINEL(s)) { f = APR_RING_FIRST(&s->list); if (f == e) /* zero buckets to be moved */ return; /* obtain the last bucket to be moved */ e = APR_RING_PREV(e, link); APR_RING_UNSPLICE(f, e, link); APR_RING_SPLICE_HEAD(&d->list, f, e, apr_bucket, link); } else { APR_BRIGADE_CONCAT(d, s); } } /** * Search a header string for the value of a particular named attribute. * * @param hdr Header string to scan. * @param name Name of attribute to search for. * @param nlen Length of name. * @param val Location of (first) matching value. * @param vlen Length of matching value. * * @return APR_SUCCESS. * @return ::APREQ_ERROR_NOATTR if the attribute is not found. * @return ::APREQ_ERROR_BADSEQ if an unpaired quote mark was detected. */ APREQ_DECLARE(apr_status_t) apreq_header_attribute(const char *hdr, const char *name, const apr_size_t nlen, const char **val, apr_size_t *vlen); /** * Concatenates the brigades, spooling large brigades into * a tempfile (APREQ_SPOOL) bucket. * * @param pool Pool for creating a tempfile bucket. * @param temp_dir Directory for tempfile creation. * @param brigade_limit If out's length would exceed this value, * the appended buckets get written to a tempfile. * @param out Resulting brigade. * @param in Brigade to append. * * @return APR_SUCCESS. * @return Error status code resulting from either apr_brigade_length(), * apreq_file_mktemp(), apreq_brigade_fwrite(), or apr_file_seek(). * * @todo Flesh out these error codes, making them as explicit as possible. */ APREQ_DECLARE(apr_status_t) apreq_brigade_concat(apr_pool_t *pool, const char *temp_dir, apr_size_t brigade_limit, apr_bucket_brigade *out, apr_bucket_brigade *in); /** * Determines the spool file used by the brigade. Returns NULL if the * brigade is not spooled in a file (does not use an APREQ_SPOOL * bucket). * * @param bb the bucket brigade * @return the spool file, or NULL. */ APREQ_DECLARE(apr_file_t *)apreq_brigade_spoolfile(apr_bucket_brigade *bb); #ifdef __cplusplus } #endif #endif /* APREQ_UTIL_H */ libapreq2-2.13/include/apreq_version.h0000644000076400017500000000622411473532337016777 0ustar issacissac/* ** 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. */ #ifndef APREQ_VERSION_H #define APREQ_VERSION_H #ifdef __cplusplus extern "C" { #endif #include "apr_version.h" #include "apreq.h" /** * @file apreq_version.h * @brief Versioning API for libapreq * @ingroup libapreq2 * * There are several different mechanisms for accessing the version. There * is a string form, and a set of numbers; in addition, there are constants * which can be compiled into your application, and you can query the library * being used for its actual version. * * Note that it is possible for an application to detect that it has been * compiled against a different version of libapreq by use of the compile-time * constants and the use of the run-time query function. * * libapreq version numbering follows the guidelines specified in: * * http://apr.apache.org/versioning.html */ /* The numeric compile-time version constants. These constants are the * authoritative version numbers for libapreq. */ /** major version * Major API changes that could cause compatibility problems for older * programs such as structure size changes. No binary compatibility is * possible across a change in the major version. */ #define APREQ_MAJOR_VERSION 2 /** * Minor API changes that do not cause binary compatibility problems. * Should be reset to 0 when upgrading APREQ_MAJOR_VERSION */ #define APREQ_MINOR_VERSION 8 /** patch level */ #define APREQ_PATCH_VERSION 0 /** * This symbol is defined for internal, "development" copies of libapreq. * This symbol will be \#undef'd for releases. */ #undef APREQ_IS_DEV_VERSION /** The formatted string of libapreq's version */ #define APREQ_VERSION_STRING \ APR_STRINGIFY(APREQ_MAJOR_VERSION) "." \ APR_STRINGIFY(APREQ_MINOR_VERSION) "." \ APR_STRINGIFY(APREQ_PATCH_VERSION) \ APREQ_IS_DEV_STRING /** * Return libapreq's version information information in a numeric form. * * @param pvsn Pointer to a version structure for returning the version * information. */ APREQ_DECLARE(void) apreq_version(apr_version_t *pvsn); /** Return libapreq's version information as a string. */ APREQ_DECLARE(const char *) apreq_version_string(void); /** Internal: string form of the "is dev" flag */ #ifdef APREQ_IS_DEV_VERSION #define APREQ_IS_DEV_STRING "-dev" #else #define APREQ_IS_DEV_STRING "" #endif #ifdef __cplusplus } #endif #endif /* APREQ_VERSION_H */ libapreq2-2.13/include/groups.dox.in0000644000076400017500000000436711473532337016417 0ustar issacissac/** * @mainpage * Project Website: http://httpd.apache.org/apreq/ * * @verbinclude README */ /** * @defgroup libapreq2 Apache Request Library * @brief libapreq2 Version @APREQ_DOTTED_VERSION@ * * libapreq2 is a shared library based on the Apache * Portable Runtime libraries libapr and libaprutil. * @see http://apr.apache.org/ * * @section apreq2_config Configuring libapreq2 Applications * This package includes apreq2-config, * a configuration script for building applications * with libapreq2. Run apreq2-config --help * to display its options. XXX add examples here XXX */ /** * @defgroup apreq_module Modules * @brief apreq2 modules included in @PACKAGE@-@VERSION@. * * XXX */ /** * @defgroup apreq_lang Language Bindings * @brief libapreq2 APIs for programming languages other than C * * XXX */ /** * @page apreq_license LICENSE * @verbinclude LICENSE */ /** * @page apreq_notice NOTICE * @verbinclude NOTICE */ /** * @page apreq_install INSTALL * @verbinclude INSTALL */ /** * @defgroup apreq_xs Perl * @brief XS Modules * @ingroup apreq_lang */ /** * @defgroup apreq_xs_request Apache2::Request * @ingroup apreq_xs * @htmlinclude Apache2__Request.html */ /** * @defgroup apreq_xs_upload Apache2::Upload * @ingroup apreq_xs * @htmlinclude Apache2__Upload.html */ /** * @defgroup apreq_xs_cookie Apache2::Cookie * @ingroup apreq_xs * @htmlinclude Apache2__Cookie.html */ /** * @defgroup apreq_xs_apr_request APR::Request * @ingroup apreq_xs * @htmlinclude APR__Request.html */ /** * @defgroup apreq_xs_apr_request_cookie APR::Request::Cookie * @ingroup apreq_xs * @htmlinclude APR__Request__Cookie.html */ /** * @defgroup apreq_xs_apr_request_param APR::Request::Param * @ingroup apreq_xs * @htmlinclude APR__Request__Param.html */ /** * @defgroup apreq_xs_apr_request_error APR::Request::Error * @ingroup apreq_xs * @htmlinclude APR__Request__Error.html */ /** * @defgroup apreq_xs_apr_request_cgi APR::Request::CGI * @ingroup apreq_xs * @htmlinclude APR__Request__CGI.html */ /** * @defgroup apreq_xs_apr_request_apache2 APR::Request::Apache2 * @ingroup apreq_xs * @htmlinclude APR__Request__Apache2.html */ /** * @page apreq_faq FAQ * @htmlinclude FAQ.html */ libapreq2-2.13/include/Makefile.am0000644000076400017500000000033011473532337015775 0ustar issacissacpkgincludedir = $(includedir)/@APREQ_LIBNAME@ pkginclude_HEADERS = apreq.h apreq_cookie.h apreq_error.h \ apreq_module.h apreq_param.h apreq_parser.h \ apreq_util.h apreq_version.h libapreq2-2.13/include/Makefile.in0000644000076400017500000003203411473533247016015 0ustar issacissac# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = include DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/apreq_config.h.in \ $(srcdir)/groups.dox.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = apreq_config.h CONFIG_CLEAN_FILES = groups.dox SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(pkgincludedir)" pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) HEADERS = $(pkginclude_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgincludedir = $(includedir)/@APREQ_LIBNAME@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ APACHE1_APXS = @APACHE1_APXS@ APACHE2_APXS = @APACHE2_APXS@ APACHE2_HTTPD = @APACHE2_HTTPD@ APACHE2_INCLUDES = @APACHE2_INCLUDES@ APACHE2_SRC = @APACHE2_SRC@ APREQ_CONFIG = @APREQ_CONFIG@ APREQ_DOTTED_VERSION = @APREQ_DOTTED_VERSION@ APREQ_LIBNAME = @APREQ_LIBNAME@ APREQ_LIBTOOL_VERSION = @APREQ_LIBTOOL_VERSION@ APREQ_MAJOR_VERSION = @APREQ_MAJOR_VERSION@ APR_CONFIG = @APR_CONFIG@ APR_DOC_VERSION = @APR_DOC_VERSION@ APR_INCLUDES = @APR_INCLUDES@ APR_LA = @APR_LA@ APR_LDFLAGS = @APR_LDFLAGS@ APR_LIBS = @APR_LIBS@ APR_LTFLAGS = @APR_LTFLAGS@ APU_CONFIG = @APU_CONFIG@ APU_DOC_VERSION = @APU_DOC_VERSION@ APU_LA = @APU_LA@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MM_OPTS = @MM_OPTS@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PERL_OPTS = @PERL_OPTS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TAR = @TAR@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkginclude_HEADERS = apreq.h apreq_cookie.h apreq_error.h \ apreq_module.h apreq_param.h apreq_parser.h \ apreq_util.h apreq_version.h all: apreq_config.h $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu include/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh apreq_config.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/apreq_config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status include/apreq_config.h $(srcdir)/apreq_config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_srcdir) && $(AUTOHEADER) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f apreq_config.h stamp-h1 groups.dox: $(top_builddir)/config.status $(srcdir)/groups.dox.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" @list='$(pkginclude_HEADERS)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(pkgincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgincludedir)/$$f'"; \ $(pkgincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgincludedir)/$$f"; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pkgincludedir)/$$f'"; \ rm -f "$(DESTDIR)$(pkgincludedir)/$$f"; \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) apreq_config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) apreq_config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) apreq_config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) apreq_config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) apreq_config.h installdirs: for dir in "$(DESTDIR)$(pkgincludedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-pkgincludeHEADERS install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgincludeHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean distclean-generic distclean-hdr \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkgincludeHEADERS install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libapreq2-2.13/INSTALL0000644000076400017500000000337111473532340013351 0ustar issacissacPREREQUISITES: Please see the PREREQUISITES file. If you are building httpd-apreq-2 directly from svn, you can generate the list of prerequisites: % perl build/version_check.pl INSTRUCTIONS: FreeBSD/Solaris users must substitute "gmake" for "make" below. Unix build, where libtool/automake/autoconf works: % ./configure --with-apache2-apxs=/path/to/apache2/bin/apxs % make (optional)% make test % make install (optional)% make docs_install Or using the CPAN/perlish way (which includes the Apache2::Request and Apache2::Cookie modules): % perl Makefile.PL --with-apache2-apxs=/path/to/apache2/bin/apxs % make (optional)% make test % make install (optional)% make docs_install Developers and other folks using httpd-apreq-2 directly from svn need to execute "./buildconf" prior to running "./configure". Win32 build: C:\httpd-apreq-2> perl Makefile.PL C:\httpd-apreq-2> nmake C:\httpd-apreq-2> nmake test C:\httpd-apreq-2> nmake docs C:\httpd-apreq-2> nmake install SVN (Subversion) ACCESS Development of httpd-apreq-2 can be followed through the svn repository: $ svn checkout http://svn.apache.org/repos/asf/httpd/apreq/trunk/ httpd-apreq-2 Developers with commit access must use the https protocol instead; note that, if you are compiling svn from sources, you must supply the configure script with the appropriate switch to enable ssl. Subversion sources, and binaries for some platforms, may be obtained through the home page: http://subversion.tigris.org/ Documentation on using svn is available at http://svnbook.red-bean.com/ In particular, http://svnbook.red-bean.com/en/1.0/apa.html contains a guide for users familiar with cvs. libapreq2-2.13/install-sh0000755000076400017500000003246411473532767014346 0ustar issacissac#!/bin/sh # install - install a program, script, or datafile scriptversion=2006-12-25.00 # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # 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 # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names starting with `-'. case $src in -*) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # Protect names starting with `-'. case $dst in -*) dst=./$dst;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; -*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: libapreq2-2.13/libapreq.rc0000644000076400017500000000441211473532340014442 0ustar issacissac#include "apreq_version.h" #define APREQ_COPYRIGHT "Copyright 2008 The Apache Software " \ "Foundation or its licensors, as applicable." #define APREQ_LICENSE "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\r\n\r\n" \ "http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n" \ "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." #define APREQ_DLL_BASENAME "libapreq-" APR_STRINGIFY(APREQ_MAJOR_VERSION) #define APREQ_VERSION_STRING_CSV APREQ_MAJOR_VERSION ##, \ ##APREQ_MINOR_VERSION ##, \ ##APREQ_PATCH_VERSION 1 VERSIONINFO FILEVERSION APREQ_VERSION_STRING_CSV,0 PRODUCTVERSION APREQ_VERSION_STRING_CSV,0 FILEFLAGSMASK 0x3fL #if defined(APREQ_IS_DEV_VERSION) #if defined(_DEBUG) FILEFLAGS 0x03L #else FILEFLAGS 0x02L #endif #else #if defined(_DEBUG) FILEFLAGS 0x01L #else FILEFLAGS 0x00L #endif #endif #if defined(WINNT) || defined(WIN64) FILEOS 0x40004L #else FILEOS 0x4L #endif FILETYPE 0x2L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904b0" BEGIN VALUE "Comments", APREQ_LICENSE "\0" VALUE "CompanyName", "Apache Software Foundation\0" VALUE "FileDescription", "Apache HTTP Server Request Library\0" VALUE "FileVersion", APREQ_VERSION_STRING "\0" VALUE "InternalName", APREQ_DLL_BASENAME "\0" VALUE "LegalCopyright", APREQ_COPYRIGHT "\0" VALUE "OriginalFilename", APREQ_DLL_BASENAME ".dll\0" VALUE "ProductName", "Apache HTTP Server Project\0" VALUE "ProductVersion", APREQ_VERSION_STRING "\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1200 END END libapreq2-2.13/library/cookie.c0000644000076400017500000003271611473532340015406 0ustar issacissac/* ** 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. */ #include "apreq_cookie.h" #include "apreq_error.h" #include "apreq_util.h" #include "apr_strings.h" #include "apr_lib.h" #include "apr_date.h" #define RFC 1 #define NETSCAPE 0 #define ADD_COOKIE(j,c) apreq_value_table_add(&c->v, j) APREQ_DECLARE(void) apreq_cookie_expires(apreq_cookie_t *c, const char *time_str) { if (time_str == NULL) { c->max_age = -1; return; } if (!strcasecmp(time_str, "now")) c->max_age = 0; else { c->max_age = apr_date_parse_rfc(time_str); if (c->max_age == APR_DATE_BAD) c->max_age = apr_time_from_sec(apreq_atoi64t(time_str)); else c->max_age -= apr_time_now(); } } static apr_status_t apreq_cookie_attr(apr_pool_t *p, apreq_cookie_t *c, const char *attr, apr_size_t alen, const char *val, apr_size_t vlen) { if (alen < 2) return APR_EBADARG; if ( attr[0] == '-' || attr[0] == '$' ) { ++attr; --alen; } switch (apr_tolower(*attr)) { case 'n': /* name is not an attr */ return APR_ENOTIMPL; case 'v': /* version; value is not an attr */ if (alen == 5 && strncasecmp(attr,"value", 5) == 0) return APR_ENOTIMPL; while (!apr_isdigit(*val)) { if (vlen == 0) return APREQ_ERROR_BADSEQ; ++val; --vlen; } apreq_cookie_version_set(c, *val - '0'); return APR_SUCCESS; case 'e': case 'm': /* expires, max-age */ apreq_cookie_expires(c, val); return APR_SUCCESS; case 'd': c->domain = apr_pstrmemdup(p,val,vlen); return APR_SUCCESS; case 'p': if (alen != 4) break; if (!strncasecmp("port", attr, 4)) { c->port = apr_pstrmemdup(p,val,vlen); return APR_SUCCESS; } else if (!strncasecmp("path", attr, 4)) { c->path = apr_pstrmemdup(p,val,vlen); return APR_SUCCESS; } break; case 'c': if (!strncasecmp("commentURL", attr, 10)) { c->commentURL = apr_pstrmemdup(p,val,vlen); return APR_SUCCESS; } else if (!strncasecmp("comment", attr, 7)) { c->comment = apr_pstrmemdup(p,val,vlen); return APR_SUCCESS; } break; case 's': if (vlen > 0 && *val != '0' && strncasecmp("off",val,vlen)) apreq_cookie_secure_on(c); else apreq_cookie_secure_off(c); return APR_SUCCESS; case 'h': /* httponly */ if (vlen > 0 && *val != '0' && strncasecmp("off",val,vlen)) apreq_cookie_httponly_on(c); else apreq_cookie_httponly_off(c); return APR_SUCCESS; }; return APR_ENOTIMPL; } APREQ_DECLARE(apreq_cookie_t *) apreq_cookie_make(apr_pool_t *p, const char *name, const apr_size_t nlen, const char *value, const apr_size_t vlen) { apreq_cookie_t *c; apreq_value_t *v; c = apr_palloc(p, nlen + vlen + 1 + sizeof *c); if (c == NULL) return NULL; *(const apreq_value_t **)&v = &c->v; if (vlen > 0 && value != NULL) memcpy(v->data, value, vlen); v->data[vlen] = 0; v->dlen = vlen; v->name = v->data + vlen + 1; if (nlen && name != NULL) memcpy(v->name, name, nlen); v->name[nlen] = 0; v->nlen = nlen; c->path = NULL; c->domain = NULL; c->port = NULL; c->comment = NULL; c->commentURL = NULL; c->max_age = -1; /* session cookie is the default */ c->flags = 0; return c; } static APR_INLINE apr_status_t get_pair(apr_pool_t *p, const char **data, const char **n, apr_size_t *nlen, const char **v, apr_size_t *vlen, unsigned unquote) { const char *hdr, *key, *val; int nlen_set = 0; hdr = *data; while (apr_isspace(*hdr) || *hdr == '=') ++hdr; key = hdr; *n = hdr; scan_name: switch (*hdr) { case 0: case ';': case ',': if (!nlen_set) *nlen = hdr - key; *v = hdr; *vlen = 0; *data = hdr; return *nlen ? APREQ_ERROR_NOTOKEN : APREQ_ERROR_BADCHAR; case '=': if (!nlen_set) { *nlen = hdr - key; nlen_set = 1; } break; case ' ': case '\t': case '\r': case '\n': if (!nlen_set) { *nlen = hdr - key; nlen_set = 1; } /* fall thru */ default: ++hdr; goto scan_name; } val = hdr + 1; while (apr_isspace(*val)) ++val; if (*val == '"') { unsigned saw_backslash = 0; for (*v = (unquote) ? ++val : val++; *val; ++val) { switch (*val) { case '"': *data = val + 1; if (!unquote) { *vlen = (val - *v) + 1; } else if (!saw_backslash) { *vlen = val - *v; } else { char *dest = apr_palloc(p, val - *v), *d = dest; const char *s = *v; while (s < val) { if (*s == '\\') ++s; *d++ = *s++; } *vlen = d - dest; *v = dest; } return APR_SUCCESS; case '\\': saw_backslash = 1; if (val[1] != 0) ++val; default: break; } } /* bad sequence: no terminating quote found */ *data = val; return APREQ_ERROR_BADSEQ; } else { /* value is not wrapped in quotes */ for (*v = val; *val; ++val) { switch (*val) { case ';': case ',': case ' ': case '\t': case '\r': case '\n': *data = val; *vlen = val - *v; return APR_SUCCESS; default: break; } } } *data = val; *vlen = val - *v; return APR_SUCCESS; } APREQ_DECLARE(apr_status_t)apreq_parse_cookie_header(apr_pool_t *p, apr_table_t *j, const char *hdr) { apreq_cookie_t *c; unsigned version; apr_status_t rv = APR_SUCCESS; parse_cookie_header: c = NULL; version = NETSCAPE; while (apr_isspace(*hdr)) ++hdr; if (*hdr == '$' && strncasecmp(hdr, "$Version", 8) == 0) { /* XXX cheat: assume "$Version" => RFC Cookie header */ version = RFC; skip_version_string: switch (*hdr++) { case 0: return rv; case ',': goto parse_cookie_header; case ';': break; default: goto skip_version_string; } } for (;;) { apr_status_t status; const char *name, *value; apr_size_t nlen, vlen; while (*hdr == ';' || apr_isspace(*hdr)) ++hdr; switch (*hdr) { case 0: /* this is the normal exit point */ if (c != NULL) { ADD_COOKIE(j, c); } return rv; case ',': ++hdr; if (c != NULL) { ADD_COOKIE(j, c); } goto parse_cookie_header; case '$': ++hdr; if (c == NULL) { rv = APREQ_ERROR_BADCHAR; goto parse_cookie_error; } else if (version == NETSCAPE) { rv = APREQ_ERROR_MISMATCH; } status = get_pair(p, &hdr, &name, &nlen, &value, &vlen, 1); if (status != APR_SUCCESS) { rv = status; goto parse_cookie_error; } status = apreq_cookie_attr(p, c, name, nlen, value, vlen); switch (status) { case APR_ENOTIMPL: rv = APREQ_ERROR_BADATTR; /* fall thru */ case APR_SUCCESS: break; default: rv = status; goto parse_cookie_error; } break; default: if (c != NULL) { ADD_COOKIE(j, c); } status = get_pair(p, &hdr, &name, &nlen, &value, &vlen, 0); if (status != APR_SUCCESS) { c = NULL; rv = status; goto parse_cookie_error; } c = apreq_cookie_make(p, name, nlen, value, vlen); apreq_cookie_tainted_on(c); if (version != NETSCAPE) apreq_cookie_version_set(c, version); } } parse_cookie_error: switch (*hdr) { case 0: return rv; case ',': case ';': if (c != NULL) ADD_COOKIE(j, c); ++hdr; goto parse_cookie_header; default: ++hdr; goto parse_cookie_error; } /* not reached */ return rv; } APREQ_DECLARE(int) apreq_cookie_serialize(const apreq_cookie_t *c, char *buf, apr_size_t len) { /* The format string must be large enough to accomodate all * of the cookie attributes. The current attributes sum to * ~90 characters (w/ 6-8 padding chars per attr), so anything * over 100 should be fine. */ unsigned version = apreq_cookie_version(c); char format[128] = "%s=%s"; char *f = format + strlen(format); /* XXX protocol enforcement (for debugging, anyway) ??? */ if (c->v.name == NULL) return -1; #define NULL2EMPTY(attr) (attr ? attr : "") if (version == NETSCAPE) { char expires[APR_RFC822_DATE_LEN] = {0}; #define ADD_NS_ATTR(name) do { \ if (c->name != NULL) \ strcpy(f, "; " #name "=%s"); \ else \ strcpy(f, "%0.s"); \ f += strlen(f); \ } while (0) ADD_NS_ATTR(path); ADD_NS_ATTR(domain); if (c->max_age != -1) { strcpy(f, "; expires=%s"); apr_rfc822_date(expires, c->max_age + apr_time_now()); expires[7] = '-'; expires[11] = '-'; } else strcpy(f, ""); f += strlen(f); if (apreq_cookie_is_secure(c)) strcpy(f, "; secure"); f += strlen(f); if (apreq_cookie_is_httponly(c)) strcpy(f, "; HttpOnly"); return apr_snprintf(buf, len, format, c->v.name, c->v.data, NULL2EMPTY(c->path), NULL2EMPTY(c->domain), expires); } /* c->version == RFC */ strcpy(f,"; Version=%u"); f += strlen(f); /* ensure RFC attributes are always quoted */ #define ADD_RFC_ATTR(name) do { \ if (c->name != NULL) \ if (*c->name == '"') \ strcpy(f, "; " #name "=%s"); \ else \ strcpy(f, "; " #name "=\"%s\""); \ else \ strcpy(f, "%0.s"); \ f += strlen (f); \ } while (0) ADD_RFC_ATTR(path); ADD_RFC_ATTR(domain); ADD_RFC_ATTR(port); ADD_RFC_ATTR(comment); ADD_RFC_ATTR(commentURL); strcpy(f, c->max_age != -1 ? "; max-age=%" APR_TIME_T_FMT : ""); f += strlen(f); if (apreq_cookie_is_secure(c)) strcpy(f, "; secure"); f += strlen(f); if (apreq_cookie_is_httponly(c)) strcpy(f, "; HttpOnly"); return apr_snprintf(buf, len, format, c->v.name, c->v.data, version, NULL2EMPTY(c->path), NULL2EMPTY(c->domain), NULL2EMPTY(c->port), NULL2EMPTY(c->comment), NULL2EMPTY(c->commentURL), apr_time_sec(c->max_age)); } APREQ_DECLARE(char*) apreq_cookie_as_string(const apreq_cookie_t *c, apr_pool_t *p) { int n = apreq_cookie_serialize(c, NULL, 0); char *s = apr_palloc(p, n + 1); apreq_cookie_serialize(c, s, n + 1); return s; } libapreq2-2.13/library/error.c0000644000076400017500000000543111473532340015260 0ustar issacissac/* 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. */ #include "apreq_error.h" #include "apr_strings.h" /* * stuffbuffer - like apr_cpystrn() but returns the address of the * dest buffer instead of the address of the terminating '\0' */ static char *stuffbuffer(char *buf, apr_size_t bufsize, const char *s) { apr_cpystrn(buf,s,bufsize); return buf; } static const char *apreq_error_string(apr_status_t statcode) { switch (statcode) { /* 0's: generic error status codes */ case APREQ_ERROR_GENERAL: return "Internal apreq error"; case APREQ_ERROR_TAINTED: return "Attempt to perform unsafe action with tainted data"; /* 10's: malformed input */ case APREQ_ERROR_BADDATA: return "Malformed input data"; case APREQ_ERROR_BADCHAR: return "Invalid character"; case APREQ_ERROR_BADSEQ: return "Invalid byte sequence"; case APREQ_ERROR_BADATTR: return "Unrecognized attribute"; case APREQ_ERROR_BADHEADER: return "Malformed header string"; /* 20's: missing input */ case APREQ_ERROR_NODATA: return "Missing input data"; case APREQ_ERROR_NOTOKEN: return "Expected token not present"; case APREQ_ERROR_NOATTR: return "Missing attribute"; case APREQ_ERROR_NOHEADER: return "Missing header"; case APREQ_ERROR_NOPARSER: return "Missing parser"; /* 30's: configuration conflicts */ case APREQ_ERROR_MISMATCH: return "Conflicting information"; case APREQ_ERROR_OVERLIMIT: return "Exceeds configured maximum limit"; case APREQ_ERROR_NOTEMPTY: return "Setting already configured"; default: return "Error string not yet specified by apreq"; } } APREQ_DECLARE(char *) apreq_strerror(apr_status_t statcode, char *buf, apr_size_t bufsize) { if (statcode < APR_OS_START_USERERR || statcode >= APR_OS_START_EAIERR) return apr_strerror(statcode, buf, bufsize); return stuffbuffer(buf, bufsize, apreq_error_string(statcode)); } libapreq2-2.13/library/Makefile.am0000644000076400017500000000154111473532340016015 0ustar issacissacEXTRA_DIST = t AM_CPPFLAGS = @APR_INCLUDES@ BUILT_SOURCES = @APR_LA@ @APU_LA@ lib_LTLIBRARIES = libapreq2.la libapreq2_la_SOURCES = util.c version.c cookie.c param.c parser.c \ parser_urlencoded.c parser_header.c parser_multipart.c \ module.c module_custom.c module_cgi.c error.c libapreq2_la_LDFLAGS = -version-info @APREQ_LIBTOOL_VERSION@ @APR_LTFLAGS@ @APR_LIBS@ test: all cd t; $(MAKE) test if ENABLE_PROFILE AM_CFLAGS= -pg -fprofile-arcs -ftest-coverage clean-local: -rm *.bb *.bbg *.da *.gcov cd t; $(MAKE) clean else clean-local: cd t; $(MAKE) clean endif distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags cd t; $(MAKE) distclean if BUILD_APR @APR_LA@: cd `@APR_CONFIG@ --srcdir` && $(MAKE) endif if BUILD_APU @APU_LA@: @APR_LA@ cd `@APU_CONFIG@ --srcdir` && $(MAKE) endif libapreq2-2.13/library/Makefile.in0000644000076400017500000004210211473533247016033 0ustar issacissac# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = library DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/apreq_config.h CONFIG_CLEAN_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(libdir)" libLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(lib_LTLIBRARIES) libapreq2_la_LIBADD = am_libapreq2_la_OBJECTS = util.lo version.lo cookie.lo param.lo \ parser.lo parser_urlencoded.lo parser_header.lo \ parser_multipart.lo module.lo module_custom.lo module_cgi.lo \ error.lo libapreq2_la_OBJECTS = $(am_libapreq2_la_OBJECTS) libapreq2_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libapreq2_la_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(libapreq2_la_SOURCES) DIST_SOURCES = $(libapreq2_la_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ APACHE1_APXS = @APACHE1_APXS@ APACHE2_APXS = @APACHE2_APXS@ APACHE2_HTTPD = @APACHE2_HTTPD@ APACHE2_INCLUDES = @APACHE2_INCLUDES@ APACHE2_SRC = @APACHE2_SRC@ APREQ_CONFIG = @APREQ_CONFIG@ APREQ_DOTTED_VERSION = @APREQ_DOTTED_VERSION@ APREQ_LIBNAME = @APREQ_LIBNAME@ APREQ_LIBTOOL_VERSION = @APREQ_LIBTOOL_VERSION@ APREQ_MAJOR_VERSION = @APREQ_MAJOR_VERSION@ APR_CONFIG = @APR_CONFIG@ APR_DOC_VERSION = @APR_DOC_VERSION@ APR_INCLUDES = @APR_INCLUDES@ APR_LA = @APR_LA@ APR_LDFLAGS = @APR_LDFLAGS@ APR_LIBS = @APR_LIBS@ APR_LTFLAGS = @APR_LTFLAGS@ APU_CONFIG = @APU_CONFIG@ APU_DOC_VERSION = @APU_DOC_VERSION@ APU_LA = @APU_LA@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MM_OPTS = @MM_OPTS@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PERL_OPTS = @PERL_OPTS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TAR = @TAR@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = t AM_CPPFLAGS = @APR_INCLUDES@ BUILT_SOURCES = @APR_LA@ @APU_LA@ lib_LTLIBRARIES = libapreq2.la libapreq2_la_SOURCES = util.c version.c cookie.c param.c parser.c \ parser_urlencoded.c parser_header.c parser_multipart.c \ module.c module_custom.c module_cgi.c error.c libapreq2_la_LDFLAGS = -version-info @APREQ_LIBTOOL_VERSION@ @APR_LTFLAGS@ @APR_LIBS@ @ENABLE_PROFILE_TRUE@AM_CFLAGS = -pg -fprofile-arcs -ftest-coverage all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu library/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu library/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ f=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ else :; fi; \ done uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ p=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libapreq2.la: $(libapreq2_la_OBJECTS) $(libapreq2_la_DEPENDENCIES) $(libapreq2_la_LINK) -rpath $(libdir) $(libapreq2_la_OBJECTS) $(libapreq2_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cookie.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/module.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/module_cgi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/module_custom.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/param.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser_header.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser_multipart.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser_urlencoded.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool clean-local \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool clean-local ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-libLTLIBRARIES test: all cd t; $(MAKE) test @ENABLE_PROFILE_TRUE@clean-local: @ENABLE_PROFILE_TRUE@ -rm *.bb *.bbg *.da *.gcov @ENABLE_PROFILE_TRUE@ cd t; $(MAKE) clean @ENABLE_PROFILE_FALSE@clean-local: @ENABLE_PROFILE_FALSE@ cd t; $(MAKE) clean distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags cd t; $(MAKE) distclean @BUILD_APR_TRUE@@APR_LA@: @BUILD_APR_TRUE@ cd `@APR_CONFIG@ --srcdir` && $(MAKE) @BUILD_APU_TRUE@@APU_LA@: @APR_LA@ @BUILD_APU_TRUE@ cd `@APU_CONFIG@ --srcdir` && $(MAKE) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libapreq2-2.13/library/module.c0000644000076400017500000000350011473532340015407 0ustar issacissac/* ** 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. */ #include "apreq_module.h" #include "apreq_error.h" #include "apr_strings.h" #include "apr_lib.h" #include "apr_file_io.h" APREQ_DECLARE(apreq_param_t *)apreq_param(apreq_handle_t *req, const char *key) { apreq_param_t *param = apreq_args_get(req, key); if (param == NULL) return apreq_body_get(req, key); else return param; } APREQ_DECLARE(apr_table_t *)apreq_params(apreq_handle_t *req, apr_pool_t *p) { const apr_table_t *args, *body; apreq_args(req, &args); apreq_body(req, &body); if (args != NULL) if (body != NULL) return apr_table_overlay(p, args, body); else return apr_table_copy(p, args); else if (body != NULL) return apr_table_copy(p, body); else return NULL; } APREQ_DECLARE(apr_table_t *)apreq_cookies(apreq_handle_t *req, apr_pool_t *p) { const apr_table_t *jar; apreq_jar(req, &jar); if (jar != NULL) return apr_table_copy(p, jar); else return NULL; } /** @} */ libapreq2-2.13/library/module_cgi.c0000644000076400017500000007312311473532340016241 0ustar issacissac/* ** 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. */ #include #define APR_WANT_STRFUNC #include "apr_want.h" #include "apreq_module.h" #include "apreq_error.h" #include "apr_strings.h" #include "apr_lib.h" #include "apr_env.h" #include "apreq_util.h" #define USER_DATA_KEY "apreq" /* Parroting APLOG_* ... */ #define CGILOG_EMERG 0 /* system is unusable */ #define CGILOG_ALERT 1 /* action must be taken immediately */ #define CGILOG_CRIT 2 /* critical conditions */ #define CGILOG_ERR 3 /* error conditions */ #define CGILOG_WARNING 4 /* warning conditions */ #define CGILOG_NOTICE 5 /* normal but significant condition */ #define CGILOG_INFO 6 /* informational */ #define CGILOG_DEBUG 7 /* debug-level messages */ #define CGILOG_LEVELMASK 7 #define CGILOG_MARK __FILE__, __LINE__ /** Interactive patch: * TODO Don't use 65K buffer * TODO Handle empty/non-existant parameters * TODO Allow body elements to be files * TODO When running body/get/cookies all at once, include previous cached * values (and don't start at 0 in count) * TODO What happens if user does apreq_param, but needs POST value - we'll * never catch it now, as args param will match... */ struct cgi_handle { struct apreq_handle_t handle; apr_table_t *jar, *args, *body; apr_status_t jar_status, args_status, body_status; apreq_parser_t *parser; apreq_hook_t *hook_queue; apreq_hook_t *find_param; const char *temp_dir; apr_size_t brigade_limit; apr_uint64_t read_limit; apr_uint64_t bytes_read; apr_bucket_brigade *in; apr_bucket_brigade *tmpbb; int interactive_mode; const char *promptstr; apr_file_t *sout, *sin; }; #define CRLF "\015\012" static const char *nullstr = 0; #define DEFAULT_PROMPT "([$t] )$n(\\($l\\))([$d]): " #define MAX_PROMPT_NESTING_LEVELS 8 #define MAX_BUFFER_SIZE 65536 typedef struct { const char *t_name; int t_val; } TRANS; static const TRANS priorities[] = { {"emerg", CGILOG_EMERG}, {"alert", CGILOG_ALERT}, {"crit", CGILOG_CRIT}, {"error", CGILOG_ERR}, {"warn", CGILOG_WARNING}, {"notice", CGILOG_NOTICE}, {"info", CGILOG_INFO}, {"debug", CGILOG_DEBUG}, {NULL, -1}, }; static char* chomp(char* str) { apr_size_t p = strlen(str); while (--p >= 0) { switch ((char)(str[p])) { case '\015': case '\012':str[p]='\000'; break; default:return str; } } return str; } /** TODO: Support wide-characters */ /* prompt takes a apreq_handle and 2 strings - name and type - and prompts a user for input via stdin/stdout. used in interactive mode. name must be defined. type can be null. we take the promptstring defined in the handle and interpolate variables as follows: $n - name of the variable we're asking for (param 2 to prompt()) $t - type of the variable we're asking for - like cookie, get, post, etc (param 3 to prompt()) parentheses - if a variable is surrounded by parentheses, and interpolates as null, then nothing else in the parentheses will be displayed Useful if you want a string to only show up if a given variable is available These are planned for forward-compatibility, but the underlying features need some love... I left these in here just as feature reminders, rather than completely removing them from the code - at least they provide sanity testing of the default prompt & parentheses - issac $l - label for the param - the end-user-developer can provide a textual description of the param (name) being requested (currently unused in lib) $d - default value for the param (currently unused in lib) */ static char *prompt(apreq_handle_t *handle, const char *name, const char *type) { struct cgi_handle *req = (struct cgi_handle *)handle; const char *defval = nullstr; const char *label = NULL; const char *cprompt; char buf[MAX_PROMPT_NESTING_LEVELS][MAX_BUFFER_SIZE]; /* Array of current arg for given p-level */ char *start, curarg[MAX_PROMPT_NESTING_LEVELS] = ""; /* Parenthesis level (for argument/text grouping) */ int plevel; cprompt = req->promptstr - 1; *buf[0] = plevel = 0; start = buf[0]; while (*(++cprompt) != 0) { switch (*cprompt) { case '$': /* interpolate argument; curarg[plevel] => 1 */ cprompt++; switch (*cprompt) { case 't': if (type != NULL) { strcpy(start, type); start += strlen(type); curarg[plevel] = 1; } else { curarg[plevel] = curarg[plevel] | 0; } break; case 'n': /* Name can't be null :-) [If it can, we should * immediately return NULL] */ strcpy(start, name); start += strlen(name); curarg[plevel] = 1; break; case 'l': if (label != NULL) { strcpy(start, label); start += strlen(label); curarg[plevel] = 1; } else { curarg[plevel] = curarg[plevel] | 0; } break; case 'd': /* TODO: Once null defaults are available, * remove if and use nullstr if defval == NULL */ if (defval != NULL) { strcpy(start, defval); start += strlen(defval); curarg[plevel] = 1; } else { curarg[plevel] = curarg[plevel] | 0; } break; default: /* Handle this? */ break; } break; case '(': if (plevel <= MAX_PROMPT_NESTING_LEVELS) { plevel++; curarg[plevel] = *buf[plevel] = 0; start = buf[plevel]; } /* else? */ break; case ')': if (plevel > 0) { *start = 0; /* Null terminate current string */ /* Move pointer to end of string */ plevel--; start = buf[plevel] + strlen(buf[plevel]); /* If old curarg was set, concat buffer with level down */ if (curarg[plevel + 1]) { strcpy(start, buf[plevel + 1]); start += strlen(buf[plevel + 1]); } break; } case '\\': /* Check next character for escape sequence * (just ignore it for now) */ (void)*cprompt++; /* Fallthrough */ default: *start++ = *cprompt; } } *start = 0; /* Null terminate the string */ apr_file_printf(req->sout, "%s", buf[0]); apr_file_gets(buf[0], MAX_BUFFER_SIZE, req->sin); chomp(buf[0]); if (strcmp(buf[0], "")) { /* if (strcmp(buf[0], nullstr)) */ return apr_pstrdup(handle->pool, buf[0]); /* return NULL; */ } if (defval != nullstr) return apr_pstrdup(handle->pool, defval); return NULL; } static const char *cgi_header_in(apreq_handle_t *handle, const char *name) { apr_pool_t *p = handle->pool; char *key = apr_pstrcat(p, "HTTP_", name, NULL); char *k, *value = NULL; for (k = key; *k; ++k) { if (*k == '-') *k = '_'; else *k = apr_toupper(*k); } if (!strcmp(key, "HTTP_CONTENT_TYPE") || !strcmp(key, "HTTP_CONTENT_LENGTH")) { key += 5; /* strlen("HTTP_") */ } apr_env_get(&value, key, p); return value; } static void cgi_log_error(const char *file, int line, int level, apr_status_t status, apreq_handle_t *handle, const char *fmt, ...) { apr_pool_t *p = handle->pool; char buf[256]; char *log_level_string, *ra; const char *remote_addr; unsigned log_level = CGILOG_WARNING; char date[APR_CTIME_LEN]; va_list vp; #ifndef WIN32 apr_file_t *err; #endif va_start(vp, fmt); if (apr_env_get(&log_level_string, "LOG_LEVEL", p) == APR_SUCCESS) log_level = (log_level_string[0] - '0'); level &= CGILOG_LEVELMASK; if (level < (int)log_level) { if (apr_env_get(&ra, "REMOTE_ADDR", p) == APR_SUCCESS) remote_addr = ra; else remote_addr = "address unavailable"; apr_ctime(date, apr_time_now()); #ifndef WIN32 apr_file_open_stderr(&err, p); apr_file_printf(err, "[%s] [%s] [%s] %s(%d): %s: %s\n", date, priorities[level].t_name, remote_addr, file, line, apr_strerror(status,buf,255),apr_pvsprintf(p,fmt,vp)); apr_file_flush(err); #else fprintf(stderr, "[%s] [%s] [%s] %s(%d): %s: %s\n", date, priorities[level].t_name, remote_addr, file, line, apr_strerror(status,buf,255),apr_pvsprintf(p,fmt,vp)); #endif } va_end(vp); } APR_INLINE static const char *cgi_query_string(apreq_handle_t *handle) { char *value = NULL, qs[] = "QUERY_STRING"; apr_env_get(&value, qs, handle->pool); return value; } static void init_body(apreq_handle_t *handle) { struct cgi_handle *req = (struct cgi_handle *)handle; const char *cl_header = cgi_header_in(handle, "Content-Length"); apr_bucket_alloc_t *ba = handle->bucket_alloc; apr_pool_t *pool = handle->pool; apr_file_t *file; apr_bucket *eos, *pipe; if (cl_header != NULL) { char *dummy; apr_int64_t content_length = apr_strtoi64(cl_header, &dummy, 0); if (dummy == NULL || *dummy != 0) { req->body_status = APREQ_ERROR_BADHEADER; cgi_log_error(CGILOG_MARK, CGILOG_ERR, req->body_status, handle, "Invalid Content-Length header (%s)", cl_header); return; } else if ((apr_uint64_t)content_length > req->read_limit) { req->body_status = APREQ_ERROR_OVERLIMIT; cgi_log_error(CGILOG_MARK, CGILOG_ERR, req->body_status, handle, "Content-Length header (%s) exceeds configured " "max_body limit (%" APR_UINT64_T_FMT ")", cl_header, req->read_limit); return; } } if (req->parser == NULL) { const char *ct_header = cgi_header_in(handle, "Content-Type"); if (ct_header != NULL) { apreq_parser_function_t pf = apreq_parser(ct_header); if (pf != NULL) { req->parser = apreq_parser_make(pool, ba, ct_header, pf, req->brigade_limit, req->temp_dir, req->hook_queue, NULL); } else { req->body_status = APREQ_ERROR_NOPARSER; return; } } else { req->body_status = APREQ_ERROR_NOHEADER; return; } } else { if (req->parser->brigade_limit > req->brigade_limit) req->parser->brigade_limit = req->brigade_limit; if (req->temp_dir != NULL) req->parser->temp_dir = req->temp_dir; if (req->hook_queue != NULL) apreq_parser_add_hook(req->parser, req->hook_queue); } req->hook_queue = NULL; req->in = apr_brigade_create(pool, ba); req->tmpbb = apr_brigade_create(pool, ba); apr_file_open_stdin(&file, pool); // error status? pipe = apr_bucket_pipe_create(file, ba); eos = apr_bucket_eos_create(ba); APR_BRIGADE_INSERT_HEAD(req->in, pipe); APR_BRIGADE_INSERT_TAIL(req->in, eos); req->body_status = APR_INCOMPLETE; } static apr_status_t cgi_read(apreq_handle_t *handle, apr_off_t bytes) { struct cgi_handle *req = (struct cgi_handle *)handle; apr_bucket *e; apr_status_t s; if (req->body_status == APR_EINIT) init_body(handle); if (req->body_status != APR_INCOMPLETE) return req->body_status; switch (s = apr_brigade_partition(req->in, bytes, &e)) { apr_off_t len; case APR_SUCCESS: apreq_brigade_move(req->tmpbb, req->in, e); req->bytes_read += bytes; if (req->bytes_read > req->read_limit) { req->body_status = APREQ_ERROR_OVERLIMIT; cgi_log_error(CGILOG_MARK, CGILOG_ERR, req->body_status, handle, "Bytes read (%" APR_UINT64_T_FMT ") exceeds configured limit (%" APR_UINT64_T_FMT ")", req->bytes_read, req->read_limit); break; } req->body_status = apreq_parser_run(req->parser, req->body, req->tmpbb); apr_brigade_cleanup(req->tmpbb); break; case APR_INCOMPLETE: apreq_brigade_move(req->tmpbb, req->in, e); s = apr_brigade_length(req->tmpbb, 1, &len); if (s != APR_SUCCESS) { req->body_status = s; break; } req->bytes_read += len; if (req->bytes_read > req->read_limit) { req->body_status = APREQ_ERROR_OVERLIMIT; cgi_log_error(CGILOG_MARK, CGILOG_ERR, req->body_status, handle, "Bytes read (%" APR_UINT64_T_FMT ") exceeds configured limit (%" APR_UINT64_T_FMT ")", req->bytes_read, req->read_limit); break; } req->body_status = apreq_parser_run(req->parser, req->body, req->tmpbb); apr_brigade_cleanup(req->tmpbb); break; default: req->body_status = s; } return req->body_status; } static apr_status_t cgi_jar(apreq_handle_t *handle, const apr_table_t **t) { struct cgi_handle *req = (struct cgi_handle *)handle; if (req->interactive_mode && req->jar_status != APR_SUCCESS) { char buf[65536]; const char *name, *val; apreq_cookie_t *p; int i = 1; apr_file_printf(req->sout, "[CGI] Requested all cookies\n"); while (1) { apr_file_printf(req->sout, "[CGI] Please enter a name for cookie %d (or just hit ENTER to end): ", i++); apr_file_gets(buf, 65536, req->sin); chomp(buf); if (!strcmp(buf, "")) { break; } name = apr_pstrdup(handle->pool, buf); val = prompt(handle, name, "cookie"); if (val == NULL) val = ""; p = apreq_cookie_make(handle->pool, name, strlen(name), val, strlen(val)); apreq_cookie_tainted_on(p); apreq_value_table_add(&p->v, req->jar); val = p->v.data; } req->jar_status = APR_SUCCESS; } /** Fallthrough */ if (req->jar_status == APR_EINIT) { const char *cookies = cgi_header_in(handle, "Cookie"); if (cookies != NULL) { req->jar_status = apreq_parse_cookie_header(handle->pool, req->jar, cookies); } else req->jar_status = APREQ_ERROR_NODATA; } *t = req->jar; return req->jar_status; } static apr_status_t cgi_args(apreq_handle_t *handle, const apr_table_t **t) { struct cgi_handle *req = (struct cgi_handle *)handle; if (req->interactive_mode && req->args_status != APR_SUCCESS) { char buf[65536]; const char *name, *val; apreq_param_t *p; int i = 1; apr_file_printf(req->sout, "[CGI] Requested all argument parameters\n"); while (1) { apr_file_printf(req->sout, "[CGI] Please enter a name for parameter %d (or just hit ENTER to end): ", i++); apr_file_gets(buf, 65536, req->sin); chomp(buf); if (!strcmp(buf, "")) { break; } name = apr_pstrdup(handle->pool, buf); val = prompt(handle, name, "parameter"); if (val == NULL) val = ""; p = apreq_param_make(handle->pool, name, strlen(name), val, strlen(val)); apreq_param_tainted_on(p); apreq_value_table_add(&p->v, req->args); val = p->v.data; } req->args_status = APR_SUCCESS; } /** Fallthrough */ if (req->args_status == APR_EINIT) { const char *qs = cgi_query_string(handle); if (qs != NULL) { req->args_status = apreq_parse_query_string(handle->pool, req->args, qs); } else req->args_status = APREQ_ERROR_NODATA; } *t = req->args; return req->args_status; } static apreq_cookie_t *cgi_jar_get(apreq_handle_t *handle, const char *name) { struct cgi_handle *req = (struct cgi_handle *)handle; const apr_table_t *t; const char *val = NULL; if (req->jar_status == APR_EINIT && !req->interactive_mode) cgi_jar(handle, &t); else t = req->jar; val = apr_table_get(t, name); if (val == NULL) { if (!req->interactive_mode) { return NULL; } else { apreq_cookie_t *p; val = prompt(handle, name, "cookie"); if (val == NULL) return NULL; p = apreq_cookie_make(handle->pool, name, strlen(name), val, strlen(val)); apreq_cookie_tainted_on(p); apreq_value_table_add(&p->v, req->jar); val = p->v.data; } } return apreq_value_to_cookie(val); } static apreq_param_t *cgi_args_get(apreq_handle_t *handle, const char *name) { struct cgi_handle *req = (struct cgi_handle *)handle; const apr_table_t *t; const char *val = NULL; if (req->args_status == APR_EINIT && !req->interactive_mode) cgi_args(handle, &t); else t = req->args; val = apr_table_get(t, name); if (val == NULL) { if (!req->interactive_mode) { return NULL; } else { apreq_param_t *p; val = prompt(handle, name, "parameter"); if (val == NULL) return NULL; p = apreq_param_make(handle->pool, name, strlen(name), val, strlen(val)); apreq_param_tainted_on(p); apreq_value_table_add(&p->v, req->args); val = p->v.data; } } return apreq_value_to_param(val); } static apr_status_t cgi_body(apreq_handle_t *handle, const apr_table_t **t) { struct cgi_handle *req = (struct cgi_handle *)handle; if (req->interactive_mode && req->body_status != APR_SUCCESS) { const char *name, *val; apreq_param_t *p; int i = 1; apr_file_printf(req->sout, "[CGI] Requested all body parameters\n"); while (1) { char buf[65536]; apr_file_printf(req->sout, "[CGI] Please enter a name for parameter %d (or just hit ENTER to end): ", i++); apr_file_gets(buf, 65536, req->sin); chomp(buf); if (!strcmp(buf, "")) { break; } name = apr_pstrdup(handle->pool, buf); val = prompt(handle, name, "parameter"); if (val == NULL) val = ""; p = apreq_param_make(handle->pool, name, strlen(name), val, strlen(val)); apreq_param_tainted_on(p); apreq_value_table_add(&p->v, req->body); val = p->v.data; } req->body_status = APR_SUCCESS; } /** Fallthrough */ switch (req->body_status) { case APR_EINIT: init_body(handle); if (req->body_status != APR_INCOMPLETE) break; case APR_INCOMPLETE: while (cgi_read(handle, APREQ_DEFAULT_READ_BLOCK_SIZE) == APR_INCOMPLETE) ; /*loop*/ } *t = req->body; return req->body_status; } static apreq_param_t *cgi_body_get(apreq_handle_t *handle, const char *name) { struct cgi_handle *req = (struct cgi_handle *)handle; const char *val = NULL; apreq_hook_t *h; apreq_hook_find_param_ctx_t *hook_ctx; if (req->interactive_mode) { val = apr_table_get(req->body, name); if (val == NULL) { return NULL; } else { apreq_param_t *p; val = prompt(handle, name, "parameter"); if (val == NULL) return NULL; p = apreq_param_make(handle->pool, name, strlen(name), val, strlen(val)); apreq_param_tainted_on(p); apreq_value_table_add(&p->v, req->body); val = p->v.data; return apreq_value_to_param(val); } } switch (req->body_status) { case APR_SUCCESS: val = apr_table_get(req->body, name); if (val != NULL) return apreq_value_to_param(val); return NULL; case APR_EINIT: init_body(handle); if (req->body_status != APR_INCOMPLETE) return NULL; cgi_read(handle, APREQ_DEFAULT_READ_BLOCK_SIZE); case APR_INCOMPLETE: val = apr_table_get(req->body, name); if (val != NULL) return apreq_value_to_param(val); /* Not seen yet, so we need to scan for param while prefetching the body */ hook_ctx = apr_palloc(handle->pool, sizeof *hook_ctx); if (req->find_param == NULL) req->find_param = apreq_hook_make(handle->pool, apreq_hook_find_param, NULL, NULL); h = req->find_param; h->next = req->parser->hook; req->parser->hook = h; h->ctx = hook_ctx; hook_ctx->name = name; hook_ctx->param = NULL; hook_ctx->prev = req->parser->hook; do { cgi_read(handle, APREQ_DEFAULT_READ_BLOCK_SIZE); if (hook_ctx->param != NULL) return hook_ctx->param; } while (req->body_status == APR_INCOMPLETE); req->parser->hook = h->next; return NULL; default: if (req->body == NULL) return NULL; val = apr_table_get(req->body, name); if (val != NULL) return apreq_value_to_param(val); return NULL; } /* not reached */ return NULL; } static apr_status_t cgi_parser_get(apreq_handle_t *handle, const apreq_parser_t **parser) { struct cgi_handle *req = (struct cgi_handle *)handle; *parser = req->parser; return APR_SUCCESS; } static apr_status_t cgi_parser_set(apreq_handle_t *handle, apreq_parser_t *parser) { struct cgi_handle *req = (struct cgi_handle *)handle; if (req->parser == NULL) { if (req->hook_queue != NULL) { apr_status_t s = apreq_parser_add_hook(parser, req->hook_queue); if (s != APR_SUCCESS) return s; } if (req->temp_dir != NULL) { parser->temp_dir = req->temp_dir; } if (req->brigade_limit < parser->brigade_limit) { parser->brigade_limit = req->brigade_limit; } req->hook_queue = NULL; req->parser = parser; return APR_SUCCESS; } else return APREQ_ERROR_MISMATCH; } static apr_status_t cgi_hook_add(apreq_handle_t *handle, apreq_hook_t *hook) { struct cgi_handle *req = (struct cgi_handle *)handle; if (req->parser != NULL) { return apreq_parser_add_hook(req->parser, hook); } else if (req->hook_queue != NULL) { apreq_hook_t *h = req->hook_queue; while (h->next != NULL) h = h->next; h->next = hook; } else { req->hook_queue = hook; } return APR_SUCCESS; } static apr_status_t cgi_brigade_limit_set(apreq_handle_t *handle, apr_size_t bytes) { struct cgi_handle *req = (struct cgi_handle *)handle; apr_size_t *limit = (req->parser == NULL) ? &req->brigade_limit : &req->parser->brigade_limit; if (*limit > bytes) { *limit = bytes; return APR_SUCCESS; } return APREQ_ERROR_MISMATCH; } static apr_status_t cgi_brigade_limit_get(apreq_handle_t *handle, apr_size_t *bytes) { struct cgi_handle *req = (struct cgi_handle *)handle; *bytes = (req->parser == NULL) ? req->brigade_limit : req->parser->brigade_limit; return APR_SUCCESS; } static apr_status_t cgi_read_limit_set(apreq_handle_t *handle, apr_uint64_t bytes) { struct cgi_handle *req = (struct cgi_handle *)handle; if (req->read_limit > bytes && req->bytes_read < bytes) { req->read_limit = bytes; return APR_SUCCESS; } return APREQ_ERROR_MISMATCH; } static apr_status_t cgi_read_limit_get(apreq_handle_t *handle, apr_uint64_t *bytes) { struct cgi_handle *req = (struct cgi_handle *)handle; *bytes = req->read_limit; return APR_SUCCESS; } static apr_status_t cgi_temp_dir_set(apreq_handle_t *handle, const char *path) { struct cgi_handle *req = (struct cgi_handle *)handle; const char **temp_dir = (req->parser == NULL) ? &req->temp_dir : &req->parser->temp_dir; if (*temp_dir == NULL && req->bytes_read == 0) { if (path != NULL) *temp_dir = apr_pstrdup(handle->pool, path); return APR_SUCCESS; } return APREQ_ERROR_MISMATCH; } static apr_status_t cgi_temp_dir_get(apreq_handle_t *handle, const char **path) { struct cgi_handle *req = (struct cgi_handle *)handle; *path = (req->parser == NULL) ? req->temp_dir : req->parser->temp_dir; return APR_SUCCESS; } #ifdef APR_POOL_DEBUG static apr_status_t ba_cleanup(void *data) { apr_bucket_alloc_t *ba = data; apr_bucket_alloc_destroy(ba); return APR_SUCCESS; } #endif /** Determine if we're interactive mode or not. Order is QUERY_STRING ? NO : Interactive I think we should just rely on GATEWAY_INTERFACE to set non-interactive mode, and be interactive if it's not there Behaviour change should really be: Always check query_string before prompting user, but rewrite body/cookies to get if interactive Definately more work needed here... */ static int is_interactive_mode(apr_pool_t *pool) { char *value = NULL, qs[] = "GATEWAY_INTERFACE"; apr_status_t rv; rv = apr_env_get(&value, qs, pool); if (rv != APR_SUCCESS) if (rv == APR_ENOENT) return 1; /** handle else? (!SUCCESS && !ENOENT) */ return 0; } static APREQ_MODULE(cgi, 20090110); APREQ_DECLARE(apreq_handle_t *)apreq_handle_cgi(apr_pool_t *pool) { apr_bucket_alloc_t *ba; struct cgi_handle *req; void *data; apr_pool_userdata_get(&data, USER_DATA_KEY, pool); if (data != NULL) return data; req = apr_pcalloc(pool, sizeof *req); ba = apr_bucket_alloc_create(pool); /* check pool's userdata first. */ req->handle.module = &cgi_module; req->handle.pool = pool; req->handle.bucket_alloc = ba; req->read_limit = (apr_uint64_t) -1; req->brigade_limit = APREQ_DEFAULT_BRIGADE_LIMIT; req->args = apr_table_make(pool, APREQ_DEFAULT_NELTS); req->body = apr_table_make(pool, APREQ_DEFAULT_NELTS); req->jar = apr_table_make(pool, APREQ_DEFAULT_NELTS); req->args_status = req->jar_status = req->body_status = APR_EINIT; if (is_interactive_mode(pool)) { req->interactive_mode = 1; apr_file_open_stdout(&(req->sout), pool); apr_file_open_stdin(&(req->sin), pool); req->promptstr=apr_pstrdup(pool, DEFAULT_PROMPT); } apr_pool_userdata_setn(&req->handle, USER_DATA_KEY, NULL, pool); #ifdef APR_POOL_DEBUG apr_pool_cleanup_register(pool, ba, ba_cleanup, ba_cleanup); #endif return &req->handle; } libapreq2-2.13/library/module_custom.c0000644000076400017500000002055311473532340017010 0ustar issacissac/* ** 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. */ #include "apr_strings.h" #include "apreq_module.h" #include "apreq_error.h" #include "apreq_util.h" #define READ_BYTES (64 * 1024) struct custom_handle { struct apreq_handle_t handle; apr_table_t *jar, *args, *body; apr_status_t jar_status, args_status, body_status; apreq_parser_t *parser; apr_uint64_t read_limit; apr_uint64_t bytes_read; apr_bucket_brigade *in; apr_bucket_brigade *tmpbb; }; static apr_status_t custom_parse_brigade(apreq_handle_t *handle, apr_uint64_t bytes) { struct custom_handle *req = (struct custom_handle *)handle; apr_status_t s; apr_bucket *e; if (req->body_status != APR_INCOMPLETE) return req->body_status; switch (s = apr_brigade_partition(req->in, bytes, &e)) { apr_off_t len; case APR_SUCCESS: apreq_brigade_move(req->tmpbb, req->in, e); req->bytes_read += bytes; if (req->bytes_read > req->read_limit) { req->body_status = APREQ_ERROR_OVERLIMIT; break; } req->body_status = apreq_parser_run(req->parser, req->body, req->tmpbb); apr_brigade_cleanup(req->tmpbb); break; case APR_INCOMPLETE: apreq_brigade_move(req->tmpbb, req->in, e); s = apr_brigade_length(req->tmpbb, 1, &len); if (s != APR_SUCCESS) { req->body_status = s; break; } req->bytes_read += len; if (req->bytes_read > req->read_limit) { req->body_status = APREQ_ERROR_OVERLIMIT; break; } req->body_status = apreq_parser_run(req->parser, req->body, req->tmpbb); apr_brigade_cleanup(req->tmpbb); break; default: req->body_status = s; } return req->body_status; } static apr_status_t custom_jar(apreq_handle_t *handle, const apr_table_t **t) { struct custom_handle *req = (struct custom_handle *)handle; *t = req->jar; return req->jar_status; } static apr_status_t custom_args(apreq_handle_t *handle, const apr_table_t **t) { struct custom_handle *req = (struct custom_handle*)handle; *t = req->args; return req->args_status; } static apr_status_t custom_body(apreq_handle_t *handle, const apr_table_t **t) { struct custom_handle *req = (struct custom_handle*)handle; while (req->body_status == APR_INCOMPLETE) custom_parse_brigade(handle, READ_BYTES); *t = req->body; return req->body_status; } static apreq_cookie_t *custom_jar_get(apreq_handle_t *handle, const char *name) { struct custom_handle *req = (struct custom_handle*)handle; const char *val; if (req->jar == NULL || name == NULL) return NULL; val = apr_table_get(req->jar, name); if (val == NULL) return NULL; return apreq_value_to_cookie(val); } static apreq_param_t *custom_args_get(apreq_handle_t *handle, const char *name) { struct custom_handle *req = (struct custom_handle*)handle; const char *val; if (req->args == NULL || name == NULL) return NULL; val = apr_table_get(req->args, name); if (val == NULL) return NULL; return apreq_value_to_param(val); } static apreq_param_t *custom_body_get(apreq_handle_t *handle, const char *name) { struct custom_handle *req = (struct custom_handle*)handle; const char *val; if (req->body == NULL || name == NULL) return NULL; while (1) { *(const char **)&val = apr_table_get(req->body, name); if (val != NULL) break; if (req->body_status == APR_INCOMPLETE) custom_parse_brigade(handle, READ_BYTES); else return NULL; } return apreq_value_to_param(val); } static apr_status_t custom_parser_get(apreq_handle_t *handle, const apreq_parser_t **parser) { struct custom_handle *req = (struct custom_handle*)handle; *parser = req->parser; return APR_SUCCESS; } static apr_status_t custom_parser_set(apreq_handle_t *handle, apreq_parser_t *parser) { (void)handle; (void)parser; return APR_ENOTIMPL; } static apr_status_t custom_hook_add(apreq_handle_t *handle, apreq_hook_t *hook) { struct custom_handle *req = (struct custom_handle*)handle; apreq_parser_add_hook(req->parser, hook); return APR_SUCCESS; } static apr_status_t custom_brigade_limit_get(apreq_handle_t *handle, apr_size_t *bytes) { struct custom_handle *req = (struct custom_handle*)handle; *bytes = req->parser->brigade_limit; return APR_SUCCESS; } static apr_status_t custom_brigade_limit_set(apreq_handle_t *handle, apr_size_t bytes) { (void)handle; (void)bytes; return APR_ENOTIMPL; } static apr_status_t custom_read_limit_get(apreq_handle_t *handle, apr_uint64_t *bytes) { struct custom_handle *req = (struct custom_handle*)handle; *bytes = req->read_limit; return APR_SUCCESS; } static apr_status_t custom_read_limit_set(apreq_handle_t *handle, apr_uint64_t bytes) { (void)handle; (void)bytes; return APR_ENOTIMPL; } static apr_status_t custom_temp_dir_get(apreq_handle_t *handle, const char **path) { struct custom_handle *req = (struct custom_handle*)handle; *path = req->parser->temp_dir; return APR_SUCCESS; } static apr_status_t custom_temp_dir_set(apreq_handle_t *handle, const char *path) { (void)handle; (void)path; return APR_ENOTIMPL; } static APREQ_MODULE(custom, 20070428); APREQ_DECLARE(apreq_handle_t *)apreq_handle_custom(apr_pool_t *pool, const char *query_string, const char *cookie, apreq_parser_t *parser, apr_uint64_t read_limit, apr_bucket_brigade *in) { struct custom_handle *req; req = apr_palloc(pool, sizeof(*req)); req->handle.module = &custom_module; req->handle.pool = pool; req->handle.bucket_alloc = in->bucket_alloc; req->read_limit = read_limit; req->bytes_read = 0; req->parser = parser; req->in = apr_brigade_create(pool, in->bucket_alloc); req->tmpbb = apr_brigade_create(pool, in->bucket_alloc); req->body = apr_table_make(pool, APREQ_DEFAULT_NELTS); req->body_status = APR_INCOMPLETE; APR_BRIGADE_CONCAT(req->in, in); if (cookie != NULL) { req->jar = apr_table_make(pool, APREQ_DEFAULT_NELTS); req->jar_status = apreq_parse_cookie_header(pool, req->jar, cookie); } else { req->jar = NULL; req->jar_status = APREQ_ERROR_NODATA; } if (query_string != NULL) { req->args = apr_table_make(pool, APREQ_DEFAULT_NELTS); req->args_status = apreq_parse_query_string(pool, req->args, query_string); } else { req->args = NULL; req->args_status = APREQ_ERROR_NODATA; } if (!APR_BUCKET_IS_EOS(APR_BRIGADE_LAST(req->in))) { apr_bucket *eos = apr_bucket_eos_create(in->bucket_alloc); APR_BRIGADE_INSERT_TAIL(req->in, eos); } return &req->handle; } libapreq2-2.13/library/param.c0000644000076400017500000001673611473532340015241 0ustar issacissac/* ** 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. */ #include "apreq_param.h" #include "apreq_error.h" #include "apreq_util.h" #include "apr_strings.h" #include "apr_lib.h" #define MAX_LEN (1024 * 1024) #define MAX_BRIGADE_LEN (1024 * 256) #define MAX_READ_AHEAD (1024 * 64) APREQ_DECLARE(apreq_param_t *) apreq_param_make(apr_pool_t *p, const char *name, const apr_size_t nlen, const char *val, const apr_size_t vlen) { apreq_param_t *param; apreq_value_t *v; param = apr_palloc(p, nlen + vlen + 1 + sizeof *param); if (param == NULL) return NULL; param->info = NULL; param->upload = NULL; param->flags = 0; *(const apreq_value_t **)&v = ¶m->v; if (vlen && val != NULL) memcpy(v->data, val, vlen); v->data[vlen] = 0; v->dlen = vlen; v->name = v->data + vlen + 1; if (nlen && name != NULL) memcpy(v->name, name, nlen); v->name[nlen] = 0; v->nlen = nlen; return param; } APREQ_DECLARE(apr_status_t) apreq_param_decode(apreq_param_t **param, apr_pool_t *pool, const char *word, apr_size_t nlen, apr_size_t vlen) { apr_status_t status; apreq_value_t *v; apreq_param_t *p; apreq_charset_t charset; if (nlen == 0) { *param = NULL; return APR_EBADARG; } p = apr_palloc(pool, nlen + vlen + 1 + sizeof *p); p->info = NULL; p->upload = NULL; p->flags = 0; *(const apreq_value_t **)&v = &p->v; if (vlen > 0) { status = apreq_decode(v->data, &v->dlen, word + nlen + 1, vlen); if (status != APR_SUCCESS) { *param = NULL; return status; } charset = apreq_charset_divine(v->data, v->dlen); } else { v->data[0] = 0; v->dlen = 0; charset = APREQ_CHARSET_ASCII; } v->name = v->data + vlen + 1; status = apreq_decode(v->name, &v->nlen, word, nlen); if (status != APR_SUCCESS) { *param = NULL; return status; } switch (apreq_charset_divine(v->name, v->nlen)) { case APREQ_CHARSET_UTF8: if (charset == APREQ_CHARSET_ASCII) charset = APREQ_CHARSET_UTF8; case APREQ_CHARSET_ASCII: break; case APREQ_CHARSET_LATIN1: if (charset != APREQ_CHARSET_CP1252) charset = APREQ_CHARSET_LATIN1; break; case APREQ_CHARSET_CP1252: charset = APREQ_CHARSET_CP1252; } apreq_param_charset_set(p, charset); *param = p; return APR_SUCCESS; } APREQ_DECLARE(char *) apreq_param_encode(apr_pool_t *pool, const apreq_param_t *param) { apr_size_t dlen; char *data; data = apr_palloc(pool, 3 * (param->v.nlen + param->v.dlen) + 2); dlen = apreq_encode(data, param->v.name, param->v.nlen); data[dlen++] = '='; dlen += apreq_encode(data + dlen, param->v.data, param->v.dlen); return data; } APREQ_DECLARE(apr_status_t) apreq_parse_query_string(apr_pool_t *pool, apr_table_t *t, const char *qs) { const char *start = qs; apr_size_t nlen = 0; for (;;++qs) { switch (*qs) { case '=': if (nlen == 0) { nlen = qs - start; } break; case '&': case ';': case 0: if (qs > start) { apr_size_t vlen = 0; apreq_param_t *param; apr_status_t s; if (nlen == 0) nlen = qs - start; else vlen = qs - start - nlen - 1; s = apreq_param_decode(¶m, pool, start, nlen, vlen); if (s != APR_SUCCESS) return s; apreq_param_tainted_on(param); apreq_value_table_add(¶m->v, t); } if (*qs == 0) return APR_SUCCESS; nlen = 0; start = qs + 1; } } /* not reached */ return APR_INCOMPLETE; } static int param_push(void *data, const char *key, const char *val) { apr_array_header_t *arr = data; *(apreq_param_t **)apr_array_push(arr) = apreq_value_to_param(val); return 1; /* keep going */ } APREQ_DECLARE(apr_array_header_t *) apreq_params_as_array(apr_pool_t *p, const apr_table_t *t, const char *key) { apr_array_header_t *arr; arr = apr_array_make(p, apr_table_elts(t)->nelts, sizeof(apreq_param_t *)); apr_table_do(param_push, arr, t, key, NULL); return arr; } APREQ_DECLARE(const char *) apreq_params_as_string(apr_pool_t *p, const apr_table_t *t, const char *key, apreq_join_t mode) { apr_array_header_t *arr = apreq_params_as_array(p, t, key); apreq_param_t **elt = (apreq_param_t **)arr->elts; apreq_param_t **const end = elt + arr->nelts; if (arr->nelts == 0) return apr_pstrdup(p, ""); while (elt < end) { *(const apreq_value_t **)elt = &(**elt).v; ++elt; } return apreq_join(p, ", ", arr, mode); } static int upload_push(void *data, const char *key, const char *val) { apr_table_t *t = data; apreq_param_t *p = apreq_value_to_param(val); if (p->upload != NULL) apreq_value_table_add(&p->v, t); return 1; /* keep going */ } APREQ_DECLARE(const apr_table_t *) apreq_uploads(const apr_table_t *body, apr_pool_t *pool) { apr_table_t *t = apr_table_make(pool, APREQ_DEFAULT_NELTS); apr_table_do(upload_push, t, body, NULL); return t; } static int upload_set(void *data, const char *key, const char *val) { const apreq_param_t **q = data; apreq_param_t *p = apreq_value_to_param(val); if (p->upload != NULL) { *q = p; return 0; /* upload found, stop */ } else return 1; /* keep searching */ } APREQ_DECLARE(const apreq_param_t *) apreq_upload(const apr_table_t *body, const char *name) { apreq_param_t *param = NULL; apr_table_do(upload_set, ¶m, body, name, NULL); return param; } libapreq2-2.13/library/parser.c0000644000076400017500000002271411473532340015426 0ustar issacissac/* ** 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. */ #include "apreq_error.h" #include "apreq_parser.h" #include "apreq_util.h" #include "apr_strings.h" #include "apr_xml.h" #include "apr_hash.h" #define PARSER_STATUS_CHECK(PREFIX) do { \ if (ctx->status == PREFIX##_ERROR) \ return APREQ_ERROR_GENERAL; \ else if (ctx->status == PREFIX##_COMPLETE) \ return APR_SUCCESS; \ else if (bb == NULL) \ return APR_INCOMPLETE; \ } while (0); APREQ_DECLARE(apreq_parser_t *) apreq_parser_make(apr_pool_t *pool, apr_bucket_alloc_t *ba, const char *content_type, apreq_parser_function_t pfn, apr_size_t brigade_limit, const char *temp_dir, apreq_hook_t *hook, void *ctx) { apreq_parser_t *p = apr_palloc(pool, sizeof *p); p->content_type = content_type; p->parser = pfn; p->hook = hook; p->pool = pool; p->bucket_alloc = ba; p->brigade_limit = brigade_limit; p->temp_dir = temp_dir; p->ctx = ctx; return p; } APREQ_DECLARE(apreq_hook_t *) apreq_hook_make(apr_pool_t *pool, apreq_hook_function_t hook, apreq_hook_t *next, void *ctx) { apreq_hook_t *h = apr_palloc(pool, sizeof *h); h->hook = hook; h->next = next; h->pool = pool; h->ctx = ctx; return h; } /*XXX this may need to check the parser's state before modifying the hook list */ APREQ_DECLARE(apr_status_t) apreq_parser_add_hook(apreq_parser_t *p, apreq_hook_t *h) { apreq_hook_t *last = h; while (last->next) last = last->next; last->next = p->hook; p->hook = h; return APR_SUCCESS; } static int default_parsers_lock = 0; static apr_hash_t *default_parsers = NULL; static apr_pool_t *default_parser_pool = NULL; static apr_status_t apreq_parsers_cleanup(void *data) { default_parsers_lock = 0; default_parsers = NULL; default_parser_pool = NULL; return APR_SUCCESS; } APREQ_DECLARE(apr_status_t) apreq_pre_initialize(apr_pool_t *pool) { apr_status_t status; if (default_parser_pool != NULL) return APR_SUCCESS; if (default_parsers_lock) return APREQ_ERROR_GENERAL; status = apr_pool_create(&default_parser_pool, pool); if (status != APR_SUCCESS) return status; apr_pool_cleanup_register(default_parser_pool, NULL, apreq_parsers_cleanup, apr_pool_cleanup_null); default_parsers = apr_hash_make(default_parser_pool); apreq_register_parser("application/x-www-form-urlencoded", apreq_parse_urlencoded); apreq_register_parser("multipart/form-data", apreq_parse_multipart); apreq_register_parser("multipart/related", apreq_parse_multipart); return APR_SUCCESS; } APREQ_DECLARE(apr_status_t) apreq_post_initialize(apr_pool_t *pool) { (void)pool; if (default_parser_pool == NULL) return APREQ_ERROR_GENERAL; default_parsers_lock = 1; return APR_SUCCESS; } APREQ_DECLARE(apr_status_t) apreq_initialize(apr_pool_t *pool) { apr_status_t s = apreq_pre_initialize(pool); if (s != APR_SUCCESS) return s; return apreq_post_initialize(pool); } APREQ_DECLARE(apr_status_t) apreq_register_parser(const char *enctype, apreq_parser_function_t pfn) { apreq_parser_function_t *f = NULL; if (default_parsers == NULL) return APR_EINIT; if (enctype == NULL) return APR_EINVAL; if (default_parsers_lock) return APREQ_ERROR_GENERAL; if (pfn != NULL) { f = apr_palloc(default_parser_pool, sizeof *f); *f = pfn; } apr_hash_set(default_parsers, apr_pstrdup(default_parser_pool, enctype), APR_HASH_KEY_STRING, f); return APR_SUCCESS; } APREQ_DECLARE(apreq_parser_function_t)apreq_parser(const char *enctype) { apreq_parser_function_t *f; apr_size_t tlen = 0; if (enctype == NULL || default_parsers_lock == 0) return NULL; while(enctype[tlen] && enctype[tlen] != ';') ++tlen; f = apr_hash_get(default_parsers, enctype, tlen); if (f != NULL) return *f; else return NULL; } APREQ_DECLARE_HOOK(apreq_hook_disable_uploads) { return (bb == NULL) ? APR_SUCCESS : APREQ_ERROR_GENERAL; } APREQ_DECLARE_HOOK(apreq_hook_discard_brigade) { apr_status_t s = APR_SUCCESS; if (hook->next) s = apreq_hook_run(hook->next, param, bb); if (bb != NULL) apr_brigade_cleanup(bb); return s; } /* generic parser */ struct gen_ctx { apreq_param_t *param; enum { GEN_INCOMPLETE, GEN_COMPLETE, GEN_ERROR } status; }; APREQ_DECLARE_PARSER(apreq_parse_generic) { struct gen_ctx *ctx = parser->ctx; apr_pool_t *pool = parser->pool; apr_status_t s = APR_SUCCESS; apr_bucket *e = APR_BRIGADE_LAST(bb); unsigned saw_eos = 0; if (ctx == NULL) { parser->ctx = ctx = apr_palloc(pool, sizeof *ctx); ctx->status = GEN_INCOMPLETE; ctx->param = apreq_param_make(pool, "_dummy_", strlen("_dummy_"), "", 0); ctx->param->upload = apr_brigade_create(pool, parser->bucket_alloc); ctx->param->info = apr_table_make(pool, APREQ_DEFAULT_NELTS); } PARSER_STATUS_CHECK(GEN); while (e != APR_BRIGADE_SENTINEL(bb)) { if (APR_BUCKET_IS_EOS(e)) { saw_eos = 1; break; } e = APR_BUCKET_PREV(e); } if (parser->hook != NULL) { s = apreq_hook_run(parser->hook, ctx->param, bb); if (s != APR_SUCCESS) { ctx->status = GEN_ERROR; return s; } } apreq_brigade_setaside(bb, pool); s = apreq_brigade_concat(pool, parser->temp_dir, parser->brigade_limit, ctx->param->upload, bb); if (s != APR_SUCCESS) { ctx->status = GEN_ERROR; return s; } if (saw_eos) { ctx->status = GEN_COMPLETE; return APR_SUCCESS; } else return APR_INCOMPLETE; } struct xml_ctx { apr_xml_doc *doc; apr_xml_parser *xml_parser; enum { XML_INCOMPLETE, XML_COMPLETE, XML_ERROR } status; }; APREQ_DECLARE_HOOK(apreq_hook_apr_xml_parser) { apr_pool_t *pool = hook->pool; struct xml_ctx *ctx = hook->ctx; apr_status_t s = APR_SUCCESS; apr_bucket *e; if (ctx == NULL) { hook->ctx = ctx = apr_palloc(pool, sizeof *ctx); ctx->doc = NULL; ctx->xml_parser = apr_xml_parser_create(pool); ctx->status = XML_INCOMPLETE; } PARSER_STATUS_CHECK(XML); for (e = APR_BRIGADE_FIRST(bb); e != APR_BRIGADE_SENTINEL(bb); e = APR_BUCKET_NEXT(e)) { const char *data; apr_size_t dlen; if (APR_BUCKET_IS_EOS(e)) { s = apr_xml_parser_done(ctx->xml_parser, &ctx->doc); if (s == APR_SUCCESS) { ctx->status = XML_COMPLETE; if (hook->next) s = apreq_hook_run(hook->next, param, bb); } else { ctx->status = XML_ERROR; } return s; } else if (APR_BUCKET_IS_METADATA(e)) { continue; } s = apr_bucket_read(e, &data, &dlen, APR_BLOCK_READ); if (s != APR_SUCCESS) { ctx->status = XML_ERROR; return s; } s = apr_xml_parser_feed(ctx->xml_parser, data, dlen); if (s != APR_SUCCESS) { ctx->status = XML_ERROR; return s; } } if (hook->next) return apreq_hook_run(hook->next, param, bb); return APR_SUCCESS; } APREQ_DECLARE_HOOK(apreq_hook_find_param) { apreq_hook_find_param_ctx_t *ctx = hook->ctx; int is_final = (bb == NULL) || APR_BUCKET_IS_EOS(APR_BRIGADE_LAST(bb)); apr_status_t s = (hook->next == NULL) ? APR_SUCCESS : apreq_hook_run(hook->next, param, bb); if (is_final && s == APR_SUCCESS && strcasecmp(ctx->name, param->v.name) == 0) { ctx->param = param; ctx->prev->next = hook->next; } return s; } libapreq2-2.13/library/parser_header.c0000644000076400017500000002321011473532340016726 0ustar issacissac/* ** 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. */ #include #include "apreq_parser.h" #include "apreq_error.h" #include "apreq_util.h" #define PARSER_STATUS_CHECK(PREFIX) do { \ if (ctx->status == PREFIX##_ERROR) \ return APREQ_ERROR_GENERAL; \ else if (ctx->status == PREFIX##_COMPLETE) \ return APR_SUCCESS; \ else if (bb == NULL) \ return APR_INCOMPLETE; \ } while (0); struct hdr_ctx { apr_bucket_brigade *bb; apr_size_t nlen; apr_size_t glen; apr_size_t vlen; enum { HDR_NAME, HDR_GAP, HDR_VALUE, HDR_NEWLINE, HDR_CONTINUE, HDR_COMPLETE, HDR_ERROR } status; }; /********************* header parsing utils ********************/ static apr_status_t split_header_line(apreq_param_t **p, apr_pool_t *pool, apr_bucket_brigade *bb, apr_size_t nlen, apr_size_t glen, apr_size_t vlen) { apreq_param_t *param; apreq_value_t *v; apr_bucket *e, *f; apr_status_t s; struct iovec vec[APREQ_DEFAULT_NELTS], *iov, *end; apr_array_header_t arr; char *dest; const char *data; apr_size_t dlen; if (nlen == 0) return APR_EBADARG; param = apreq_param_make(pool, NULL, nlen, NULL, vlen - 1); /*drop (CR)LF */ *(const apreq_value_t **)&v = ¶m->v; arr.pool = pool; arr.elt_size = sizeof(struct iovec); arr.nelts = 0; arr.nalloc = APREQ_DEFAULT_NELTS; arr.elts = (char *)vec; e = APR_BRIGADE_FIRST(bb); /* store name in a temporary iovec array */ while (nlen > 0) { apr_size_t len; end = apr_array_push(&arr); s = apr_bucket_read(e, (const char **)&end->iov_base, &len, APR_BLOCK_READ); if (s != APR_SUCCESS) return s; assert(nlen >= len); end->iov_len = len; nlen -= len; e = APR_BUCKET_NEXT(e); } /* skip gap */ while (glen > 0) { s = apr_bucket_read(e, &data, &dlen, APR_BLOCK_READ); if (s != APR_SUCCESS) return s; assert(glen >= dlen); glen -= dlen; e = APR_BUCKET_NEXT(e); } /* copy value */ assert(vlen > 0); dest = v->data; while (vlen > 0) { s = apr_bucket_read(e, &data, &dlen, APR_BLOCK_READ); if (s != APR_SUCCESS) return s; memcpy(dest, data, dlen); dest += dlen; assert(vlen >= dlen); vlen -= dlen; e = APR_BUCKET_NEXT(e); } assert(dest[-1] == '\n'); if (dest[-2] == '\r') --dest; dest[-1] = 0; v->dlen = (dest - v->data) - 1; /* write name */ v->name = dest; iov = (struct iovec *)arr.elts; while (iov <= end) { memcpy(dest, iov->iov_base, iov->iov_len); dest += iov->iov_len; ++iov; } *dest = 0; nlen = dest - v->name; while ((f = APR_BRIGADE_FIRST(bb)) != e) apr_bucket_delete(f); apreq_param_tainted_on(param); *p = param; return APR_SUCCESS; } APREQ_DECLARE_PARSER(apreq_parse_headers) { apr_pool_t *pool = parser->pool; apr_bucket *e; struct hdr_ctx *ctx; if (parser->ctx == NULL) { ctx = apr_pcalloc(pool, sizeof *ctx); ctx->bb = apr_brigade_create(pool, parser->bucket_alloc); parser->ctx = ctx; ctx->status = HDR_NAME; } else ctx = parser->ctx; PARSER_STATUS_CHECK(HDR); e = APR_BRIGADE_LAST(ctx->bb); APR_BRIGADE_CONCAT(ctx->bb, bb); parse_hdr_brigade: /* parse the brigade for CRLF_CRLF-terminated header block, * each time starting from the front of the brigade. */ for (e = APR_BUCKET_NEXT(e); e != APR_BRIGADE_SENTINEL(ctx->bb); e = APR_BUCKET_NEXT(e)) { apr_size_t off = 0, dlen; const char *data; apr_status_t s; apreq_param_t *param = NULL; /* silences gcc-4.0 warning */ if (APR_BUCKET_IS_EOS(e)) { ctx->status = HDR_COMPLETE; APR_BRIGADE_CONCAT(bb, ctx->bb); return APR_SUCCESS; } s = apr_bucket_read(e, &data, &dlen, APR_BLOCK_READ); if ( s != APR_SUCCESS ) { ctx->status = HDR_ERROR; return s; } if (dlen == 0) continue; parse_hdr_bucket: /* gap nlen = 13 * vvv glen = 3 * Sample-Header: grape vlen = 5 * ^^^^^^^^^^^^^ ^^^^^ * name value */ switch (ctx->status) { case HDR_NAME: while (off < dlen) { switch (data[off++]) { case '\n': if (off < dlen) apr_bucket_split(e, off); e = APR_BUCKET_NEXT(e); do { apr_bucket *f = APR_BRIGADE_FIRST(ctx->bb); apr_bucket_delete(f); } while (e != APR_BRIGADE_FIRST(ctx->bb)); APR_BRIGADE_CONCAT(bb, ctx->bb); ctx->status = HDR_COMPLETE; return APR_SUCCESS; case ':': if (off > 1) { apr_bucket_split(e, off - 1); dlen -= off - 1; data += off - 1; off = 1; e = APR_BUCKET_NEXT(e); } ++ctx->glen; ctx->status = HDR_GAP; goto parse_hdr_bucket; default: ++ctx->nlen; } } break; case HDR_GAP: while (off < dlen) { switch (data[off++]) { case ' ': case '\t': ++ctx->glen; break; case '\n': ctx->status = HDR_NEWLINE; goto parse_hdr_bucket; default: ctx->status = HDR_VALUE; if (off > 1) { apr_bucket_split(e, off - 1); dlen -= off - 1; data += off - 1; off = 1; e = APR_BUCKET_NEXT(e); } ++ctx->vlen; goto parse_hdr_bucket; } } break; case HDR_VALUE: while (off < dlen) { ++ctx->vlen; if (data[off++] == '\n') { ctx->status = HDR_NEWLINE; goto parse_hdr_bucket; } } break; case HDR_NEWLINE: if (off == dlen) break; else { switch (data[off]) { case ' ': case '\t': ctx->status = HDR_CONTINUE; ++off; ++ctx->vlen; break; default: /* can parse brigade now */ if (off > 0) apr_bucket_split(e, off); s = split_header_line(¶m, pool, ctx->bb, ctx->nlen, ctx->glen, ctx->vlen); if (parser->hook != NULL && s == APR_SUCCESS) s = apreq_hook_run(parser->hook, param, NULL); if (s != APR_SUCCESS) { ctx->status = HDR_ERROR; return s; } apreq_value_table_add(¶m->v, t); e = APR_BRIGADE_SENTINEL(ctx->bb); ctx->status = HDR_NAME; ctx->nlen = 0; ctx->vlen = 0; ctx->glen = 0; goto parse_hdr_brigade; } /* cases ' ', '\t' fall through to HDR_CONTINUE */ } case HDR_CONTINUE: while (off < dlen) { switch (data[off++]) { case ' ': case '\t': ++ctx->vlen; break; case '\n': ctx->status = HDR_NEWLINE; goto parse_hdr_bucket; default: ctx->status = HDR_VALUE; ++ctx->vlen; goto parse_hdr_bucket; } } break; default: ; /* not reached */ } } apreq_brigade_setaside(ctx->bb,pool); return APR_INCOMPLETE; } libapreq2-2.13/library/parser_multipart.c0000644000076400017500000005267411473532340017537 0ustar issacissac/* ** 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. */ #include "apreq_parser.h" #include "apreq_error.h" #include "apreq_util.h" #include "apr_strings.h" #include "apr_strmatch.h" #ifndef CRLF #define CRLF "\015\012" #endif #define MIN(a, b) (((a) < (b)) ? (a) : (b)) #define PARSER_STATUS_CHECK(PREFIX) do { \ if (ctx->status == PREFIX##_ERROR) \ return APREQ_ERROR_GENERAL; \ else if (ctx->status == PREFIX##_COMPLETE) \ return APR_SUCCESS; \ else if (bb == NULL) \ return APR_INCOMPLETE; \ } while (0); /* maximum recursion level in the mfd parser */ #define MAX_LEVEL 8 struct mfd_ctx { apr_table_t *info; apr_bucket_brigade *in; apr_bucket_brigade *bb; apreq_parser_t *hdr_parser; apreq_parser_t *next_parser; const apr_strmatch_pattern *pattern; char *bdry; enum { MFD_INIT, MFD_NEXTLINE, MFD_HEADER, MFD_POST_HEADER, MFD_PARAM, MFD_UPLOAD, MFD_MIXED, MFD_COMPLETE, MFD_ERROR } status; apr_bucket *eos; const char *param_name; apreq_param_t *upload; unsigned level; }; /********************* multipart/form-data *********************/ APR_INLINE static apr_status_t brigade_start_string(apr_bucket_brigade *bb, const char *start_string) { apr_bucket *e; apr_size_t slen = strlen(start_string); for (e = APR_BRIGADE_FIRST(bb); e != APR_BRIGADE_SENTINEL(bb); e = APR_BUCKET_NEXT(e)) { const char *buf; apr_status_t s, bytes_to_check; apr_size_t blen; if (slen == 0) return APR_SUCCESS; if (APR_BUCKET_IS_EOS(e)) return APR_EOF; s = apr_bucket_read(e, &buf, &blen, APR_BLOCK_READ); if (s != APR_SUCCESS) return s; if (blen == 0) continue; bytes_to_check = MIN(slen,blen); if (strncmp(buf,start_string,bytes_to_check) != 0) return APREQ_ERROR_GENERAL; slen -= bytes_to_check; start_string += bytes_to_check; } /* slen > 0, so brigade isn't large enough yet */ return APR_INCOMPLETE; } static apr_status_t split_on_bdry(apr_bucket_brigade *out, apr_bucket_brigade *in, const apr_strmatch_pattern *pattern, const char *bdry) { apr_bucket *e = APR_BRIGADE_FIRST(in); apr_size_t blen = strlen(bdry), off = 0; while ( e != APR_BRIGADE_SENTINEL(in) ) { apr_ssize_t idx; apr_size_t len; const char *buf; apr_status_t s; if (APR_BUCKET_IS_EOS(e)) return APR_EOF; s = apr_bucket_read(e, &buf, &len, APR_BLOCK_READ); if (s != APR_SUCCESS) return s; if (len == 0) { apr_bucket *f = e; e = APR_BUCKET_NEXT(e); apr_bucket_delete(f); continue; } look_for_boundary_up_front: if (strncmp(bdry + off, buf, MIN(len, blen - off)) == 0) { if ( len >= blen - off ) { /* complete match */ if (len > blen - off) apr_bucket_split(e, blen - off); e = APR_BUCKET_NEXT(e); do { apr_bucket *f = APR_BRIGADE_FIRST(in); apr_bucket_delete(f); } while (APR_BRIGADE_FIRST(in) != e); return APR_SUCCESS; } /* partial match */ off += len; e = APR_BUCKET_NEXT(e); continue; } else if (off > 0) { /* prior (partial) strncmp failed, * so we can move previous buckets across * and retest buf against the full bdry. */ /* give hints to GCC by making the brigade volatile, otherwise the * loop below will end up being endless. See: * https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=193740 */ apr_bucket_brigade * volatile in_v = in; do { apr_bucket *f = APR_BRIGADE_FIRST(in_v); APR_BUCKET_REMOVE(f); APR_BRIGADE_INSERT_TAIL(out, f); } while (e != APR_BRIGADE_FIRST(in_v)); off = 0; goto look_for_boundary_up_front; } if (pattern != NULL && len >= blen) { const char *match = apr_strmatch(pattern, buf, len); if (match != NULL) idx = match - buf; else { idx = apreq_index(buf + len-blen, blen, bdry, blen, APREQ_MATCH_PARTIAL); if (idx >= 0) idx += len-blen; } } else idx = apreq_index(buf, len, bdry, blen, APREQ_MATCH_PARTIAL); /* Theoretically idx should never be 0 here, because we * already tested the front of the brigade for a potential match. * However, it doesn't hurt to allow for the possibility, * since this will just start the whole loop over again. */ if (idx >= 0) apr_bucket_split(e, idx); APR_BUCKET_REMOVE(e); APR_BRIGADE_INSERT_TAIL(out, e); e = APR_BRIGADE_FIRST(in); } return APR_INCOMPLETE; } static struct mfd_ctx * create_multipart_context(const char *content_type, apr_pool_t *pool, apr_bucket_alloc_t *ba, apr_size_t brigade_limit, const char *temp_dir, unsigned level) { apr_status_t s; apr_size_t blen; struct mfd_ctx *ctx = apr_palloc(pool, sizeof *ctx); char *ct = apr_pstrdup(pool, content_type); ct = strchr(ct, ';'); if (ct == NULL) return NULL; /* missing semicolon */ *ct++ = 0; s = apreq_header_attribute(ct, "boundary", 8, (const char **)&ctx->bdry, &blen); if (s != APR_SUCCESS) return NULL; /* missing boundary */ ctx->bdry[blen] = 0; *--ctx->bdry = '-'; *--ctx->bdry = '-'; *--ctx->bdry = '\n'; *--ctx->bdry = '\r'; ctx->status = MFD_INIT; ctx->pattern = apr_strmatch_precompile(pool, ctx->bdry, 1); ctx->hdr_parser = apreq_parser_make(pool, ba, "", apreq_parse_headers, brigade_limit, temp_dir, NULL, NULL); ctx->info = NULL; ctx->bb = apr_brigade_create(pool, ba); ctx->in = apr_brigade_create(pool, ba); ctx->eos = apr_bucket_eos_create(ba); ctx->next_parser = NULL; ctx->param_name = NULL; ctx->upload = NULL; ctx->level = level; return ctx; } APREQ_DECLARE_PARSER(apreq_parse_multipart) { apr_pool_t *pool = parser->pool; apr_bucket_alloc_t *ba = parser->bucket_alloc; struct mfd_ctx *ctx = parser->ctx; apr_status_t s; if (ctx == NULL) { ctx = create_multipart_context(parser->content_type, pool, ba, parser->brigade_limit, parser->temp_dir, 1); if (ctx == NULL) return APREQ_ERROR_GENERAL; parser->ctx = ctx; } PARSER_STATUS_CHECK(MFD); APR_BRIGADE_CONCAT(ctx->in, bb); mfd_parse_brigade: switch (ctx->status) { case MFD_INIT: { s = split_on_bdry(ctx->bb, ctx->in, NULL, ctx->bdry + 2); if (s != APR_SUCCESS) { apreq_brigade_setaside(ctx->in, pool); apreq_brigade_setaside(ctx->bb, pool); return s; } ctx->status = MFD_NEXTLINE; /* Be polite and return any preamble text to the caller. */ APR_BRIGADE_CONCAT(bb, ctx->bb); } /* fall through */ case MFD_NEXTLINE: { s = split_on_bdry(ctx->bb, ctx->in, NULL, CRLF); if (s == APR_EOF) { ctx->status = MFD_COMPLETE; return APR_SUCCESS; } if (s != APR_SUCCESS) { apreq_brigade_setaside(ctx->in, pool); apreq_brigade_setaside(ctx->bb, pool); return s; } if (!APR_BRIGADE_EMPTY(ctx->bb)) { char *line; apr_size_t len; apr_brigade_pflatten(ctx->bb, &line, &len, pool); if (len >= 2 && strncmp(line, "--", 2) == 0) { APR_BRIGADE_CONCAT(bb, ctx->in); ctx->status = MFD_COMPLETE; return APR_SUCCESS; } apr_brigade_cleanup(ctx->bb); } ctx->status = MFD_HEADER; ctx->info = NULL; } /* fall through */ case MFD_HEADER: { if (ctx->info == NULL) { ctx->info = apr_table_make(pool, APREQ_DEFAULT_NELTS); /* flush out header parser internal structs for reuse */ ctx->hdr_parser->ctx = NULL; } s = apreq_parser_run(ctx->hdr_parser, ctx->info, ctx->in); switch (s) { case APR_SUCCESS: ctx->status = MFD_POST_HEADER; break; case APR_INCOMPLETE: apreq_brigade_setaside(ctx->in, pool); return APR_INCOMPLETE; default: ctx->status = MFD_ERROR; return s; } } /* fall through */ case MFD_POST_HEADER: { /* Must handle special case of missing CRLF (mainly * coming from empty file uploads). See RFC2065 S5.1.1: * * body-part = MIME-part-header [CRLF *OCTET] * * So the CRLF we already matched in MFD_HEADER may have been * part of the boundary string! Both Konqueror (v??) and * Mozilla-0.97 are known to emit such blocks. * * Here we first check for this condition with * brigade_start_string, and prefix the brigade with * an additional CRLF bucket if necessary. */ const char *cd, *ct, *name, *filename; apr_size_t nlen, flen; apr_bucket *e; switch (brigade_start_string(ctx->in, ctx->bdry + 2)) { case APR_INCOMPLETE: apreq_brigade_setaside(ctx->in, pool); return APR_INCOMPLETE; case APR_SUCCESS: /* part has no body- return CRLF to front */ e = apr_bucket_immortal_create(CRLF, 2, ctx->bb->bucket_alloc); APR_BRIGADE_INSERT_HEAD(ctx->in, e); break; default: ; /* has body, ok */ } cd = apr_table_get(ctx->info, "Content-Disposition"); /* First check to see if must descend into a new multipart * block. If we do, create a new parser and pass control * to it. */ ct = apr_table_get(ctx->info, "Content-Type"); if (ct != NULL && strncmp(ct, "multipart/", 10) == 0) { struct mfd_ctx *next_ctx; if (ctx->level >= MAX_LEVEL) { ctx->status = MFD_ERROR; goto mfd_parse_brigade; } next_ctx = create_multipart_context(ct, pool, ba, parser->brigade_limit, parser->temp_dir, ctx->level + 1); next_ctx->param_name = ""; if (cd != NULL) { s = apreq_header_attribute(cd, "name", 4, &name, &nlen); if (s == APR_SUCCESS) { next_ctx->param_name = apr_pstrmemdup(pool, name, nlen); } else { const char *cid = apr_table_get(ctx->info, "Content-ID"); if (cid != NULL) next_ctx->param_name = apr_pstrdup(pool, cid); } } ctx->next_parser = apreq_parser_make(pool, ba, ct, apreq_parse_multipart, parser->brigade_limit, parser->temp_dir, parser->hook, next_ctx); ctx->status = MFD_MIXED; goto mfd_parse_brigade; } /* Look for a normal form-data part. */ if (cd != NULL && strncmp(cd, "form-data", 9) == 0) { s = apreq_header_attribute(cd, "name", 4, &name, &nlen); if (s != APR_SUCCESS) { ctx->status = MFD_ERROR; goto mfd_parse_brigade; } s = apreq_header_attribute(cd, "filename", 8, &filename, &flen); if (s == APR_SUCCESS) { apreq_param_t *param; param = apreq_param_make(pool, name, nlen, filename, flen); apreq_param_tainted_on(param); param->info = ctx->info; param->upload = apr_brigade_create(pool, ctx->bb->bucket_alloc); ctx->upload = param; ctx->status = MFD_UPLOAD; goto mfd_parse_brigade; } else { ctx->param_name = apr_pstrmemdup(pool, name, nlen); ctx->status = MFD_PARAM; /* fall thru */ } } /* else check for a file part in a multipart section */ else if (cd != NULL && strncmp(cd, "file", 4) == 0) { apreq_param_t *param; s = apreq_header_attribute(cd, "filename", 8, &filename, &flen); if (s != APR_SUCCESS || ctx->param_name == NULL) { ctx->status = MFD_ERROR; goto mfd_parse_brigade; } name = ctx->param_name; nlen = strlen(name); param = apreq_param_make(pool, name, nlen, filename, flen); apreq_param_tainted_on(param); param->info = ctx->info; param->upload = apr_brigade_create(pool, ctx->bb->bucket_alloc); ctx->upload = param; ctx->status = MFD_UPLOAD; goto mfd_parse_brigade; } /* otherwise look for Content-ID in multipart/mixed case */ else { const char *cid = apr_table_get(ctx->info, "Content-ID"); apreq_param_t *param; if (cid != NULL) { name = cid; nlen = strlen(name); } else { name = ""; nlen = 0; } filename = ""; flen = 0; param = apreq_param_make(pool, name, nlen, filename, flen); apreq_param_tainted_on(param); param->info = ctx->info; param->upload = apr_brigade_create(pool, ctx->bb->bucket_alloc); ctx->upload = param; ctx->status = MFD_UPLOAD; goto mfd_parse_brigade; } } /* fall through */ case MFD_PARAM: { apreq_param_t *param; apreq_value_t *v; apr_size_t len; apr_off_t off; s = split_on_bdry(ctx->bb, ctx->in, ctx->pattern, ctx->bdry); switch (s) { case APR_INCOMPLETE: apreq_brigade_setaside(ctx->in, pool); apreq_brigade_setaside(ctx->bb, pool); return s; case APR_SUCCESS: s = apr_brigade_length(ctx->bb, 1, &off); if (s != APR_SUCCESS) { ctx->status = MFD_ERROR; return s; } len = off; param = apreq_param_make(pool, ctx->param_name, strlen(ctx->param_name), NULL, len); apreq_param_tainted_on(param); param->info = ctx->info; *(const apreq_value_t **)&v = ¶m->v; apr_brigade_flatten(ctx->bb, v->data, &len); v->data[len] = 0; if (parser->hook != NULL) { s = apreq_hook_run(parser->hook, param, NULL); if (s != APR_SUCCESS) { ctx->status = MFD_ERROR; return s; } } apreq_param_charset_set(param, apreq_charset_divine(v->data, len)); apreq_value_table_add(v, t); ctx->status = MFD_NEXTLINE; ctx->param_name = NULL; apr_brigade_cleanup(ctx->bb); goto mfd_parse_brigade; default: ctx->status = MFD_ERROR; return s; } } break; /* not reached */ case MFD_UPLOAD: { apreq_param_t *param = ctx->upload; s = split_on_bdry(ctx->bb, ctx->in, ctx->pattern, ctx->bdry); switch (s) { case APR_INCOMPLETE: if (parser->hook != NULL) { s = apreq_hook_run(parser->hook, param, ctx->bb); if (s != APR_SUCCESS) { ctx->status = MFD_ERROR; return s; } } apreq_brigade_setaside(ctx->bb, pool); apreq_brigade_setaside(ctx->in, pool); s = apreq_brigade_concat(pool, parser->temp_dir, parser->brigade_limit, param->upload, ctx->bb); return (s == APR_SUCCESS) ? APR_INCOMPLETE : s; case APR_SUCCESS: if (parser->hook != NULL) { APR_BRIGADE_INSERT_TAIL(ctx->bb, ctx->eos); s = apreq_hook_run(parser->hook, param, ctx->bb); APR_BUCKET_REMOVE(ctx->eos); if (s != APR_SUCCESS) { ctx->status = MFD_ERROR; return s; } } apreq_value_table_add(¶m->v, t); apreq_brigade_setaside(ctx->bb, pool); s = apreq_brigade_concat(pool, parser->temp_dir, parser->brigade_limit, param->upload, ctx->bb); if (s != APR_SUCCESS) return s; ctx->status = MFD_NEXTLINE; goto mfd_parse_brigade; default: ctx->status = MFD_ERROR; return s; } } break; /* not reached */ case MFD_MIXED: { s = apreq_parser_run(ctx->next_parser, t, ctx->in); switch (s) { case APR_SUCCESS: ctx->status = MFD_INIT; ctx->param_name = NULL; goto mfd_parse_brigade; case APR_INCOMPLETE: APR_BRIGADE_CONCAT(bb, ctx->in); return APR_INCOMPLETE; default: ctx->status = MFD_ERROR; return s; } } break; /* not reached */ default: return APREQ_ERROR_GENERAL; } return APR_INCOMPLETE; } libapreq2-2.13/library/parser_urlencoded.c0000644000076400017500000001670211473532340017632 0ustar issacissac/* ** 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. */ #include "apreq_parser.h" #include "apreq_util.h" #include "apreq_error.h" #define PARSER_STATUS_CHECK(PREFIX) do { \ if (ctx->status == PREFIX##_ERROR) \ return APREQ_ERROR_GENERAL; \ else if (ctx->status == PREFIX##_COMPLETE) \ return APR_SUCCESS; \ else if (bb == NULL) \ return APR_INCOMPLETE; \ } while (0); struct url_ctx { apr_bucket_brigade *bb; apr_size_t nlen; apr_size_t vlen; enum { URL_NAME, URL_VALUE, URL_COMPLETE, URL_ERROR } status; }; /******************** application/x-www-form-urlencoded ********************/ static apr_status_t split_urlword(apreq_param_t **p, apr_pool_t *pool, apr_bucket_brigade *bb, apr_size_t nlen, apr_size_t vlen) { apreq_param_t *param; apreq_value_t *v; apr_bucket *e, *f; apr_status_t s; struct iovec vec[APREQ_DEFAULT_NELTS]; apr_array_header_t arr; apr_size_t mark; apreq_charset_t charset; if (nlen == 0) return APR_EBADARG; param = apreq_param_make(pool, NULL, nlen, NULL, vlen); *(const apreq_value_t **)&v = ¶m->v; arr.pool = pool; arr.elt_size = sizeof(struct iovec); arr.nelts = 0; arr.nalloc = APREQ_DEFAULT_NELTS; arr.elts = (char *)vec; ++nlen, ++vlen; e = APR_BRIGADE_FIRST(bb); while (!APR_BUCKET_IS_EOS(e)) { struct iovec *iov = apr_array_push(&arr); apr_size_t len; s = apr_bucket_read(e, (const char **)&iov->iov_base, &len, APR_BLOCK_READ); if (s != APR_SUCCESS) return s; iov->iov_len = len; nlen -= len; e = APR_BUCKET_NEXT(e); if (nlen == 0) { iov->iov_len--; break; } } mark = arr.nelts; while (!APR_BUCKET_IS_EOS(e)) { struct iovec *iov = apr_array_push(&arr); apr_size_t len; s = apr_bucket_read(e, (const char **)&iov->iov_base, &len, APR_BLOCK_READ); if (s != APR_SUCCESS) return s; iov->iov_len = len; vlen -= len; e = APR_BUCKET_NEXT(e); if (vlen == 0) { iov->iov_len--; break; } } s = apreq_decodev(v->data, &vlen, (struct iovec *)arr.elts + mark, arr.nelts - mark); if (s != APR_SUCCESS) return s; charset = apreq_charset_divine(v->data, vlen); v->name = v->data + vlen + 1; v->dlen = vlen; s = apreq_decodev(v->name, &nlen, (struct iovec *)arr.elts, mark); if (s != APR_SUCCESS) return s; switch (apreq_charset_divine(v->name, nlen)) { case APREQ_CHARSET_UTF8: if (charset == APREQ_CHARSET_ASCII) charset = APREQ_CHARSET_UTF8; case APREQ_CHARSET_ASCII: break; case APREQ_CHARSET_LATIN1: if (charset != APREQ_CHARSET_CP1252) charset = APREQ_CHARSET_LATIN1; break; case APREQ_CHARSET_CP1252: charset = APREQ_CHARSET_CP1252; } v->nlen = nlen; while ((f = APR_BRIGADE_FIRST(bb)) != e) apr_bucket_delete(f); apreq_param_tainted_on(param); apreq_param_charset_set(param, charset); *p = param; return APR_SUCCESS; } APREQ_DECLARE_PARSER(apreq_parse_urlencoded) { apr_pool_t *pool = parser->pool; apr_bucket *e; struct url_ctx *ctx; if (parser->ctx == NULL) { ctx = apr_pcalloc(pool, sizeof *ctx); ctx->bb = apr_brigade_create(pool, parser->bucket_alloc); parser->ctx = ctx; ctx->status = URL_NAME; } else ctx = parser->ctx; PARSER_STATUS_CHECK(URL); e = APR_BRIGADE_LAST(ctx->bb); APR_BRIGADE_CONCAT(ctx->bb, bb); parse_url_brigade: for (e = APR_BUCKET_NEXT(e); e != APR_BRIGADE_SENTINEL(ctx->bb); e = APR_BUCKET_NEXT(e)) { apreq_param_t *param; apr_size_t off = 0, dlen; const char *data; apr_status_t s; if (APR_BUCKET_IS_EOS(e)) { if (ctx->status == URL_NAME) { s = APR_SUCCESS; } else { s = split_urlword(¶m, pool, ctx->bb, ctx->nlen, ctx->vlen); if (parser->hook != NULL && s == APR_SUCCESS) s = apreq_hook_run(parser->hook, param, NULL); if (s == APR_SUCCESS) { apreq_value_table_add(¶m->v, t); ctx->status = URL_COMPLETE; } else { ctx->status = URL_ERROR; } } APR_BRIGADE_CONCAT(bb, ctx->bb); return s; } s = apr_bucket_read(e, &data, &dlen, APR_BLOCK_READ); if ( s != APR_SUCCESS ) { ctx->status = URL_ERROR; return s; } parse_url_bucket: switch (ctx->status) { case URL_NAME: while (off < dlen) { switch (data[off++]) { case '=': apr_bucket_split(e, off); dlen -= off; data += off; off = 0; e = APR_BUCKET_NEXT(e); ctx->status = URL_VALUE; goto parse_url_bucket; default: ++ctx->nlen; } } break; case URL_VALUE: while (off < dlen) { switch (data[off++]) { case '&': case ';': apr_bucket_split(e, off); s = split_urlword(¶m, pool, ctx->bb, ctx->nlen, ctx->vlen); if (parser->hook != NULL && s == APR_SUCCESS) s = apreq_hook_run(parser->hook, param, NULL); if (s != APR_SUCCESS) { ctx->status = URL_ERROR; return s; } apreq_value_table_add(¶m->v, t); ctx->status = URL_NAME; ctx->nlen = 0; ctx->vlen = 0; e = APR_BRIGADE_SENTINEL(ctx->bb); goto parse_url_brigade; default: ++ctx->vlen; } } break; default: ; /* not reached */ } } apreq_brigade_setaside(ctx->bb, pool); return APR_INCOMPLETE; } libapreq2-2.13/library/t/at.c0000644000076400017500000001754111473532340015003 0ustar issacissac/* ** 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. */ #include "apr_file_io.h" #include "at.h" #include "apr_lib.h" #include "apr_strings.h" #include "apr_tables.h" #include "apr_env.h" #include apr_status_t at_begin(at_t *t, int total) { char buf[32]; apr_snprintf(buf, 32, "1..%d", total); return at_report(t, buf); } static apr_status_t test_cleanup(void *data) { at_t *t = data; if (t->current < t->plan) return at_report(t, "Bail out!"); else return at_report(t, "END"); } void at_end(at_t *t) { apr_pool_cleanup_kill(t->pool, t, test_cleanup); test_cleanup(t); } apr_status_t at_comment(at_t *t, const char *fmt, va_list vp) { apr_status_t s; char buf[256], *b = buf + 2; char *end; int rv; rv = apr_vsnprintf(b, 250, fmt, vp); if (rv <= 0) return APR_EINVAL; end = b + rv; buf[0] = '#'; buf[1] = ' '; if (rv == 250) { end[-1] = '.'; *end++ = '.'; *end++ = '.'; *end++ = '\n'; *end = 0; } else if (end[-1] != '\n') { *end++ = '\n'; *end = 0; } b = buf; while (1) { char *eol; eol = strchr(b + 2, '\n'); *eol = 0; s = at_report(t, b); if (s != APR_SUCCESS || eol == end - 1) break; b = eol - 1; b[0] = '#'; b[1] = ' '; } return s; } void at_ok(at_t *t, int is_ok, const char *label, const char *file, int line) { char format[] = "not ok %d - %s # %s (%s:%d) test %d in %s"; char *end = format + 10; char *fmt = is_ok ? format + 4 : format; char buf[256]; const char *comment = NULL; int rv, is_fatal = 0, is_skip = 0, is_todo = 0; t->current++; if (*t->fatal == t->current) { t->fatal++; is_fatal = 1; } if (*t->skip == t->current) { t->skip++; is_skip = 1; } if (*t->todo == t->current) { t->todo++; is_todo = 1; } if (AT_FLAG_CONCISE(t->flags)) format[9] = '\0'; else if (is_ok && !AT_FLAG_TRACE(t->flags)) format[14] = '\0'; else if (is_fatal && ! is_ok) comment = "fatal"; else comment = is_todo ? "todo" : is_skip ? "skip" : "at"; rv = apr_snprintf(buf, 256, fmt, t->current + t->prior, label, comment, file, line, t->current, t->name); if (rv <= 0) exit(-1); end = buf + rv; if (rv == 250) { *end++ = '.'; *end++ = '.'; *end++ = '.'; *end = '\0'; } if (memchr(buf, '\n', rv) != NULL || at_report(t, buf) != APR_SUCCESS) exit(-1); if (!is_ok && is_fatal) { while (t->current++ < t->plan) { apr_snprintf(buf, 256, "not ok %d # skipped: aborting test %s", t->prior + t->current, t->name); at_report(t, buf); } longjmp(*t->abort, 0); } } struct at_report_file { at_report_t module; apr_file_t *file; }; static apr_status_t at_report_file_write(at_report_t *ctx, const char *msg) { struct at_report_file *r = (struct at_report_file *)ctx; apr_file_t *f = r->file; apr_size_t len = strlen(msg); apr_status_t s; s = apr_file_write_full(f, msg, len, &len); if (s != APR_SUCCESS) return s; s = apr_file_putc('\n', f); if (s != APR_SUCCESS) return s; return apr_file_flush(f); } at_report_t *at_report_file_make(apr_pool_t *p, apr_file_t *f) { struct at_report_file *r = apr_palloc(p, sizeof *r); r->module.func = at_report_file_write; r->file = f; return &r->module; } struct at_report_local { at_report_t module; at_t *t; at_report_t *saved_report; const int *saved_fatal; int dummy_fatal; const char *file; int line; int passed; apr_pool_t *pool; }; static apr_status_t report_local_cleanup(void *data) { struct at_report_local *q = data; dAT = q->t; char label[32]; apr_snprintf(label, 32, "collected %d passing tests", q->passed); AT->report = q->saved_report; AT->fatal = q->saved_fatal; at_ok(q->t, 1, label, q->file, q->line); return APR_SUCCESS; } static apr_status_t at_report_local_write(at_report_t *ctx, const char *msg) { char buf[256]; struct at_report_local *q = (struct at_report_local *)ctx; dAT = q->t; if (strncmp(msg, "not ok", 6) == 0) { q->saved_report->func(q->saved_report, msg); AT->report = q->saved_report; AT->fatal = q->saved_fatal; apr_pool_cleanup_kill(q->pool, q, report_local_cleanup); while (AT->current++ < AT->plan) { apr_snprintf(buf, 256, "not ok %d # skipped: aborting test %s", AT->prior + AT->current, AT->name); at_report(AT, buf); } longjmp(*AT->abort, 0); } else if (strncmp(msg, "ok", 2) == 0) { AT->current--; q->passed++; } return APR_SUCCESS; } void at_report_local(at_t *AT, apr_pool_t *p, const char *file, int line) { struct at_report_local *q = apr_palloc(p, sizeof *q); q->module.func = at_report_local_write; q->t = AT; q->saved_report = AT->report; q->saved_fatal = AT->fatal; q->dummy_fatal = 0; q->file = apr_pstrdup(p, file); q->line = line; q->passed = 0; q->pool = p; AT->fatal = &q->dummy_fatal; AT->report = &q->module; if (*q->saved_fatal == AT->current + 1) q->saved_fatal++; apr_pool_cleanup_register(p, q, report_local_cleanup, report_local_cleanup); } at_t *at_create(apr_pool_t *pool, unsigned char flags, at_report_t *report) { at_t *t = apr_pcalloc(pool, sizeof *t); t->flags = flags; t->report = report; t->pool = pool; apr_pool_cleanup_register(pool, t, test_cleanup, test_cleanup); return t; } #define AT_NELTS 4 static int* at_list(apr_pool_t *pool, const char *spec, int *list) { apr_array_header_t arr; int prev, current = 0; arr.pool = pool; arr.elt_size = sizeof *list; arr.nelts = 0; arr.nalloc = AT_NELTS; arr.elts = (char *)list; do { while (*spec && !apr_isdigit(*spec)) ++spec; prev = current; current = (int)apr_strtoi64(spec, (char **)(void *)&spec, 10); *(int *)apr_array_push(&arr) = current; } while (prev >= current); return (int *)arr.elts; } apr_status_t at_run(at_t *AT, const at_test_t *test) { int dummy = 0, fbuf[AT_NELTS], sbuf[AT_NELTS], tbuf[AT_NELTS]; jmp_buf j; AT->current = 0; AT->prior += AT->plan; AT->name = test->name; AT->plan = test->plan; if (test->fatals) AT->fatal = at_list(AT->pool, test->fatals, fbuf); else AT->fatal = &dummy; if (test->skips) AT->skip = at_list(AT->pool, test->skips, sbuf); else AT->skip = &dummy; if (test->todos) AT->todo = at_list(AT->pool, test->todos, tbuf); else AT->todo = &dummy; AT->abort = &j; if (setjmp(j) == 0) { test->func(AT); return APR_SUCCESS; } AT->abort = NULL; return APR_EGENERAL; } libapreq2-2.13/library/t/at.h0000644000076400017500000002341511473532340015005 0ustar issacissac/* ** 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. */ /* at.h: TAP-compliant C utilities for the Apache::Test framework. */ #ifndef AT_H #define AT_H #include "apr.h" #include "apr_file_io.h" #include #include #include #include "apr_strings.h" typedef struct at_t at_t; typedef struct at_report_t at_report_t; typedef apr_status_t (*at_report_function_t)(at_report_t *r, const char *msg); typedef void(*at_test_function_t)(at_t *t); typedef struct at_test_t at_test_t; struct at_test_t { const char *name; at_test_function_t func; int plan; const char *fatals; const char *skips; const char *todos; }; struct at_report_t { at_report_function_t func; }; /* We only need one at_t struct per test suite, so lets call it *AT. * The mnemonic we follow is that (for lowercase foo) "AT_foo(bar)" * should be syntactically equivalent to "at_foo(AT, bar)". * * Terminology: test == an at_test_t, * check == an assertion which produces TAP. */ #define dAT at_t *AT struct at_t { int current; /* current check for this test */ int prior; /* total # of checks prior to this test */ const char *name; /* name of current test */ int plan; /* total # of checks in this test */ const int *fatal; /* list of unrecoverables */ const int *skip; /* list of ignorabe assertions */ const int *todo; /* list of expected failures */ at_report_t *report ;/* handles the results of each check */ unsigned char flags; /* verbosity: concise, trace, debug, etc. */ apr_pool_t *pool; /* creator pool with end-of-test cleanup */ jmp_buf *abort; /* where fatals go to die */ }; static APR_INLINE apr_status_t at_report(at_t *t, const char *msg) { at_report_t *r = t->report; return r->func(r, msg); } #define AT_report(msg) at_report(AT, msg) /* The core assertion checker; the rest just wind up invoking this one. */ void at_ok(at_t *t, int is_ok, const char *label, const char *file, int line); #define AT_ok(is_ok, label) at_ok(AT, is_ok, label, __FILE__, __LINE__) at_t *at_create(apr_pool_t *pool, unsigned char flags, at_report_t *report); apr_status_t at_begin(at_t *t, int total); #define AT_begin(total) at_begin(AT, total) apr_status_t at_run(at_t *AT, const at_test_t *test); #define AT_run(test) at_run(AT, test) void at_end(at_t *t); #define AT_end() at_end(AT) #define AT_FLAG_DEBUG(f) ((f) & 4) #define AT_FLAG_DEBUG_ON(f) ((f) |= 4) #define AT_FLAG_DEBUG_OFF(f) ((f) &= ~4) #define AT_FLAG_TRACE(f) ((f) & 2) #define AT_FLAG_TRACE_ON(f) ((f) |= 2) #define AT_FLAG_TRACE_OFF(f) ((f) &= ~2) #define AT_FLAG_CONCISE(f) ((f) & 1) #define AT_FLAG_CONCISE_ON(f) ((f) |= 1) #define AT_FLAG_CONCISE_OFF(f) ((f) &= ~1) #define AT_debug_on() AT_FLAG_DEBUG_ON(AT->flags) #define AT_debug_off() AT_FLAG_DEBUG_OFF(AT->flags) #define AT_trace_on() AT_FLAG_TRACE_ON(AT->flags) #define AT_trace_off() AT_FLAG_TRACE_OFF(AT->flags) #define AT_concise_on() AT_FLAG_CONCISE_ON(AT->flags) #define AT_concise_off() AT_FLAG_CONCISE_OFF(AT->flags) /* Additional reporting utils. These emit TAP comments, and are not "checks". */ apr_status_t at_comment(at_t *t, const char *fmt, va_list vp); static APR_INLINE void at_debug(at_t *t, const char *fmt, ...) { va_list vp; va_start(vp, fmt); if (AT_FLAG_DEBUG(t->flags)) at_comment(t, fmt, vp); va_end(vp); } static APR_INLINE void at_trace(at_t *t, const char *fmt, ...) { va_list vp; va_start(vp, fmt); if (AT_FLAG_TRACE(t->flags)) at_comment(t, fmt, vp); va_end(vp); } /* These are "checks". */ static APR_INLINE void at_check(at_t *t, int is_ok, const char *label, const char *file, int line, const char *fmt, ...) { va_list vp; va_start(vp, fmt); if (AT_FLAG_TRACE(t->flags)) { char format[32] = "testing: %s (%s:%d)"; at_trace(t, format, label, file, line); if (fmt != NULL) { char *f; apr_snprintf(format, sizeof format, " format: %s", fmt); at_trace(t, "%s", format); memcpy(format, " left:", 8); f = format + strlen(format); apr_snprintf(f, sizeof format - strlen(format), "\n right: %s", fmt); at_comment(t, format, vp); } } va_end(vp); at_ok(t, is_ok, label, file, line); } #define AT_mem_ne(a, b, n) do { \ unsigned sz = n; \ const void *left = a, *right = b; \ char fmt[] = ", as %u-byte struct pointers"; \ char buf[256] = #a " != " #b; \ const unsigned blen = sizeof(#a " != " #b); \ apr_snprintf(buf + blen - 1, 256 - blen, fmt, sz); \ apr_snprintf(fmt, sizeof(fmt), "%%.%us", sz); \ at_check(AT, memcmp(left, right, sz), buf, __FILE__, __LINE__, \ fmt, left, right); \ } while (0) \ #define AT_mem_eq(a, b, n) do { \ unsigned sz = n; \ const void *left = a, *right = b; \ char fmt[] = ", as %u-byte struct pointers"; \ char buf[256] = #a " == " #b; \ const unsigned blen = sizeof(#a " == " #b); \ apr_snprintf(buf + blen - 1, 256 - blen , fmt, sz); \ apr_snprintf(fmt, sizeof(fmt), "%%.%us", sz); \ at_check(AT, !memcmp(left, right, sz), buf, __FILE__, __LINE__, \ fmt, left, right); \ } while (0) #define AT_str_eq(a, b) do { \ const char *left = a, *right = b; \ at_check(AT,!strcmp(left, right), #a " == " #b ", as strings", \ __FILE__, __LINE__, "%s", left, right); \ } while (0) #define AT_str_ne(a, b) do { \ const char *left = a, *right = b; \ at_check(AT, strcmp(left, right), #a " != " #b ", as strings", \ __FILE__, __LINE__, "%s", left, right); \ } while (0) #define AT_ptr_eq(a, b) do { \ const void *left = a, *right = b; \ at_check(AT, left == right, #a " == " #b ", as pointers", \ __FILE__, __LINE__, "%pp", left, right); \ } while (0) #define AT_ptr_ne(a, b) do { \ const void *left = a, *right = b; \ at_check(AT, left != right, #a " != " #b ", as pointers", \ __FILE__, __LINE__, "%pp", left, right); \ } while (0) #define AT_int_eq(a, b) do { \ const int left = a, right = b; \ at_check(AT, left == right, #a " == " #b ", as integers", \ __FILE__, __LINE__, "%d", left, right); \ } while (0) #define AT_int_ne(a, b) do { \ const int left = a, right = b; \ at_check(AT, left != right, #a " != " #b ", as integers", \ __FILE__, __LINE__, "%d", left, right); \ } while (0) #define AT_is_null(a) AT_ptr_eq(a, NULL) #define AT_not_null(a) AT_ptr_ne(a, NULL) /* XXX these two macro checks evaluate a & b more than once, but the * upshot is that they don't care too much about their types. */ #define AT_EQ(a, b, fmt) at_check(AT, ((a) == (b)), #a " == " #b,\ __FILE__, __LINE__, fmt, a, b) #define AT_NE(a, b, fmt) at_check(AT, ((a) != (b)), #a " != " #b,\ __FILE__, __LINE__, fmt, a, b) static APR_INLINE void at_skip(at_t *t, int n, const char *reason, const char *file, int line) { char buf[256]; while (n-- > 0) { ++t->current; apr_snprintf(buf, 256, "ok %d - %s (%d) #skipped: %s (%s:%d)", t->current + t->prior, t->name, t->current, reason, file, line); at_report(t, buf); } } #define AT_skip(n, reason) at_skip(AT, n, reason, __FILE__, __LINE__) /* Report utilities. */ at_report_t *at_report_file_make(apr_pool_t *p, apr_file_t *f); APR_INLINE static at_report_t *at_report_stdout_make(apr_pool_t *p) { apr_file_t *out; apr_file_open_stdout(&out, p); return at_report_file_make(p, out); } void at_report_local(at_t *AT, apr_pool_t *p, const char *file, int line); #define AT_localize(p) at_report_local(AT, p, __FILE__, __LINE__) #endif /* AT_H */ libapreq2-2.13/library/t/cookie.c0000644000076400017500000002144511473532340015646 0ustar issacissac/* ** 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. */ #include "apr_strings.h" #include "apreq_cookie.h" #include "apreq_error.h" #include "apreq_module.h" #include "apreq_util.h" #include "at.h" static const char nscookies[] = "a=1; foo=bar; fl=left; fr=right;bad; " "ns=foo=1&bar=2,frl=right-left; " "flr=left-right; fll=left-left; " "good_one=1;=;bad"; static const char rfccookies[] = "$Version=1; first=a;$domain=quux;second=be," "$Version=1;third=cie"; static const char wpcookies[] = "wordpressuser_c580712eb86cad2660b3601ac" "04202b2=admin; wordpresspass_c580712eb8" "6cad2660b3601ac04202b2=7ebeeed42ef50720" "940f5b8db2f9db49; rs_session=59ae9b8b50" "3e3af7d17b97e7f77f7ea5; dbx-postmeta=gr" "abit=0-,1-,2-,3-,4-,5-,6-&advancedstuff" "=0-,1+,2-"; static const char cgcookies1[] = "UID=MTj9S8CoAzMAAFEq21YAAAAG|c85a9e59db" "92b261408eb7539ff7f949b92c7d58; $Versio" "n=0;SID=MTj9S8CoAzMAAFEq21YAAAAG|c85a9e" "59db92b261408eb7539ff7f949b92c7d58;$Dom" "ain=www.xxxx.com;$Path=/"; static const char cgcookies2[] = "UID=Gh9VxX8AAAIAAHP7h6AAAAAC|2e809a9cc9" "9c2dca778c385ebdefc5cb86c95dc3; SID=Gh9" "VxX8AAAIAAHP7h6AAAAAC|2e809a9cc99c2dca7" "78c385ebdefc5cb86c95dc3; $Version=1"; static const char cgcookies3[] = "UID=hCijN8CoAzMAAGVDO2QAAAAF|50299f0793" "43fd6146257c105b1370f2da78246a; SID=hCi" "jN8CoAzMAAGVDO2QAAAAF|50299f079343fd614" "6257c105b1370f2da78246a; $Path=\"/\"; $" "Domain=\"www.xxxx.com\""; static const char cgcookies4[] = "SID=66XUEH8AAAIAAFmLLRkAAAAV|2a48c4ae2e" "9fb8355e75192db211f0779bdce244; UID=66X" "UEH8AAAIAAFmLLRkAAAAV|2a48c4ae2e9fb8355" "e75192db211f0779bdce244; __utma=1441491" "62.4479471199095321000.1234471650.12344" "71650.1234471650.1; __utmb=144149162.24" ".10.1234471650; __utmc=144149162; __utm" "z=\"144149162.1234471650.1.1.utmcsr=szu" "kaj.xxxx.pl|utmccn=(referral)|utmcmd=re" "ferral|utmcct=/internet/0,0.html\""; static apr_table_t *jar, *jar2, *jar3, *jar4, *jar5, *jar6, *jar7; static apr_pool_t *p; static void jar_make(dAT) { jar = apr_table_make(p, APREQ_DEFAULT_NELTS); AT_not_null(jar); AT_int_eq(apreq_parse_cookie_header(p, jar, nscookies), APREQ_ERROR_NOTOKEN); jar2 = apr_table_make(p, APREQ_DEFAULT_NELTS); AT_not_null(jar2); AT_int_eq(apreq_parse_cookie_header(p, jar2, rfccookies), APR_SUCCESS); jar3 = apr_table_make(p, APREQ_DEFAULT_NELTS); AT_not_null(jar3); AT_int_eq(apreq_parse_cookie_header(p, jar3, wpcookies), APREQ_ERROR_NOTOKEN); jar4 = apr_table_make(p, APREQ_DEFAULT_NELTS); AT_not_null(jar4); AT_int_eq(apreq_parse_cookie_header(p, jar4, cgcookies1), APREQ_ERROR_MISMATCH); jar5 = apr_table_make(p, APREQ_DEFAULT_NELTS); AT_not_null(jar5); AT_int_eq(apreq_parse_cookie_header(p, jar5, cgcookies2), APREQ_ERROR_MISMATCH); jar6 = apr_table_make(p, APREQ_DEFAULT_NELTS); AT_not_null(jar6); AT_int_eq(apreq_parse_cookie_header(p, jar6, cgcookies3), APREQ_ERROR_MISMATCH); jar7 = apr_table_make(p, APREQ_DEFAULT_NELTS); AT_not_null(jar7); AT_int_eq(apreq_parse_cookie_header(p, jar7, cgcookies4), APR_SUCCESS); } static void jar_get_rfc(dAT) { const char *val; AT_not_null(val = apr_table_get(jar2, "first")); AT_str_eq(val, "a"); AT_not_null(val = apr_table_get(jar2, "second")); AT_str_eq(val, "be"); AT_not_null(val = apr_table_get(jar2, "third")); AT_str_eq(val, "cie"); } static void jar_get_ns(dAT) { AT_str_eq(apr_table_get(jar, "a"), "1"); /* ignore wacky cookies that don't have an '=' sign */ AT_is_null(apr_table_get(jar, "bad")); /* accept wacky cookies that contain multiple '=' */ AT_str_eq(apr_table_get(jar, "ns"), "foo=1&bar=2"); AT_str_eq(apr_table_get(jar,"foo"), "bar"); AT_str_eq(apr_table_get(jar,"fl"), "left"); AT_str_eq(apr_table_get(jar,"fr"), "right"); AT_str_eq(apr_table_get(jar,"frl"), "right-left"); AT_str_eq(apr_table_get(jar,"flr"), "left-right"); AT_str_eq(apr_table_get(jar,"fll"), "left-left"); AT_is_null(apr_table_get(jar,"")); } static void netscape_cookie(dAT) { char expires[APR_RFC822_DATE_LEN]; char *val; apreq_cookie_t *c; *(const char **)&val = apr_table_get(jar, "foo"); AT_not_null(val); c = apreq_value_to_cookie(val); AT_str_eq(c->v.data, "bar"); AT_int_eq(apreq_cookie_version(c), 0); AT_str_eq(apreq_cookie_as_string(c, p), "foo=bar"); c->domain = apr_pstrdup(p, "example.com"); AT_str_eq(apreq_cookie_as_string(c, p), "foo=bar; domain=example.com"); c->path = apr_pstrdup(p, "/quux"); AT_str_eq(apreq_cookie_as_string(c, p), "foo=bar; path=/quux; domain=example.com"); apreq_cookie_expires(c, "+1y"); apr_rfc822_date(expires, apr_time_now() + apr_time_from_sec(apreq_atoi64t("+1y"))); expires[7] = '-'; expires[11] = '-'; val = apr_pstrcat(p, "foo=bar; path=/quux; domain=example.com; expires=", expires, NULL); AT_str_eq(apreq_cookie_as_string(c, p), val); } static void rfc_cookie(dAT) { apreq_cookie_t *c = apreq_cookie_make(p,"rfc",3,"out",3); const char *expected; long expires; AT_str_eq(c->v.data, "out"); apreq_cookie_version_set(c, 1); AT_int_eq(apreq_cookie_version(c), 1); AT_str_eq(apreq_cookie_as_string(c,p),"rfc=out; Version=1"); c->domain = apr_pstrdup(p, "example.com"); #ifndef WIN32 AT_str_eq(apreq_cookie_as_string(c,p), "rfc=out; Version=1; domain=\"example.com\""); c->path = apr_pstrdup(p, "/quux"); AT_str_eq(apreq_cookie_as_string(c,p), "rfc=out; Version=1; path=\"/quux\"; domain=\"example.com\""); apreq_cookie_expires(c, "+3m"); expires = apreq_atoi64t("+3m"); expected = apr_psprintf(p, "rfc=out; Version=1; path=\"/quux\"; " "domain=\"example.com\"; max-age=%ld", expires); AT_str_eq(apreq_cookie_as_string(c,p), expected); #else expected = "rfc=out; Version=1; domain=\"example.com\""; AT_str_eq(apreq_cookie_as_string(c,p), expected); c->path = apr_pstrdup(p, "/quux"); expected = "rfc=out; Version=1; path=\"/quux\"; domain=\"example.com\""; AT_str_eq(apreq_cookie_as_string(c,p), expected); apreq_cookie_expires(c, "+3m"); expires = apreq_atoi64t("+3m"); expected = apr_psprintf(p, "rfc=out; Version=1; path=\"/quux\"; " "domain=\"example.com\"; max-age=%ld", expires); AT_str_eq(apreq_cookie_as_string(c,p), expected); #endif } #define dT(func, plan) #func, func, plan int main(int argc, char *argv[]) { unsigned i, plan = 0; dAT; at_test_t test_list [] = { { dT(jar_make, 14) }, { dT(jar_get_rfc, 6), "1 3 5" }, { dT(jar_get_ns, 10) }, { dT(netscape_cookie, 7) }, { dT(rfc_cookie, 6) }, }; apr_initialize(); atexit(apr_terminate); apr_pool_create(&p, NULL); AT = at_create(p, 0, at_report_stdout_make(p)); for (i = 0; i < sizeof(test_list) / sizeof(at_test_t); ++i) plan += test_list[i].plan; AT_begin(plan); for (i = 0; i < sizeof(test_list) / sizeof(at_test_t); ++i) AT_run(&test_list[i]); AT_end(); return 0; } libapreq2-2.13/library/t/error.c0000644000076400017500000000526611473532340015531 0ustar issacissac/* ** 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. */ #include "apr_strings.h" #include "apreq_error.h" #include "at.h" static void test_strerror(dAT) { char buf[256], *str; str = apreq_strerror(APREQ_ERROR_GENERAL, buf, sizeof buf); AT_ptr_eq(str, buf); AT_str_eq(str, "Internal apreq error"); str = apreq_strerror(APREQ_ERROR_TAINTED, buf, sizeof buf); AT_str_eq(str, "Attempt to perform unsafe action with tainted data"); str = apreq_strerror(APREQ_ERROR_BADSEQ, buf, sizeof buf); AT_str_eq(str, "Invalid byte sequence"); str = apreq_strerror(APREQ_ERROR_NODATA, buf, sizeof buf); AT_str_eq(str, "Missing input data"); str = apreq_strerror(APREQ_ERROR_GENERAL+99, buf, sizeof buf); AT_str_eq(str, "Error string not yet specified by apreq"); /* Test some common APR status codes also */ str = apreq_strerror(APR_EINIT, buf, sizeof buf); AT_str_eq(str, "There is no error, this value signifies an initialized " "error code"); str = apreq_strerror(APR_INCOMPLETE, buf, sizeof buf); AT_str_eq(str, "Partial results are valid but processing is incomplete"); str = apreq_strerror(APR_EOF, buf, sizeof buf); AT_str_eq(str, "End of file found"); str = apreq_strerror(APR_ENOTIMPL, buf, sizeof buf); AT_str_eq(str, "This function has not been implemented on this platform"); } #define dT(func, plan) #func, func, plan int main(int argc, char *argv[]) { unsigned i, plan = 0; apr_pool_t *p; dAT; at_test_t test_list [] = { { dT(test_strerror, 10), "1" } }; apr_initialize(); atexit(apr_terminate); apr_pool_create(&p, NULL); AT = at_create(p, 0, at_report_stdout_make(p)); for (i = 0; i < sizeof(test_list) / sizeof(at_test_t); ++i) plan += test_list[i].plan; AT_begin(plan); for (i = 0; i < sizeof(test_list) / sizeof(at_test_t); ++i) AT_run(&test_list[i]); AT_end(); return 0; } libapreq2-2.13/library/t/Makefile.am0000644000076400017500000000110111473532340016250 0ustar issacissacAM_CPPFLAGS = @APR_INCLUDES@ AM_LDFLAGS = `@APREQ_CONFIG@ --link-libtool --libs` @APR_LTFLAGS@ noinst_LIBRARIES = libapache_test.a libapache_test_a_SOURCES = at.h at.c check_PROGRAMS = version cookie params parsers error util LDADD = libapache_test.a check_SCRIPTS = version.t cookie.t params.t parsers.t error.t util.t TESTS = $(check_SCRIPTS) TESTS_ENVIRONMENT = @PERL@ -MTest::Harness -e 'runtests(@ARGV)' CLEANFILES = $(check_PROGRAMS) $(check_SCRIPTS) %.t: % echo "#!perl" > $@ echo "exec './$*'" >> $@ test: $(check_SCRIPTS) $(TESTS_ENVIRONMENT) $(check_SCRIPTS) libapreq2-2.13/library/t/Makefile.in0000644000076400017500000004505311473533247016306 0ustar issacissac# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ check_PROGRAMS = version$(EXEEXT) cookie$(EXEEXT) params$(EXEEXT) \ parsers$(EXEEXT) error$(EXEEXT) util$(EXEEXT) subdir = library/t DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/apreq_config.h CONFIG_CLEAN_FILES = LIBRARIES = $(noinst_LIBRARIES) ARFLAGS = cru libapache_test_a_AR = $(AR) $(ARFLAGS) libapache_test_a_LIBADD = am_libapache_test_a_OBJECTS = at.$(OBJEXT) libapache_test_a_OBJECTS = $(am_libapache_test_a_OBJECTS) cookie_SOURCES = cookie.c cookie_OBJECTS = cookie.$(OBJEXT) cookie_LDADD = $(LDADD) cookie_DEPENDENCIES = libapache_test.a error_SOURCES = error.c error_OBJECTS = error.$(OBJEXT) error_LDADD = $(LDADD) error_DEPENDENCIES = libapache_test.a params_SOURCES = params.c params_OBJECTS = params.$(OBJEXT) params_LDADD = $(LDADD) params_DEPENDENCIES = libapache_test.a parsers_SOURCES = parsers.c parsers_OBJECTS = parsers.$(OBJEXT) parsers_LDADD = $(LDADD) parsers_DEPENDENCIES = libapache_test.a util_SOURCES = util.c util_OBJECTS = util.$(OBJEXT) util_LDADD = $(LDADD) util_DEPENDENCIES = libapache_test.a version_SOURCES = version.c version_OBJECTS = version.$(OBJEXT) version_LDADD = $(LDADD) version_DEPENDENCIES = libapache_test.a DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(libapache_test_a_SOURCES) cookie.c error.c params.c \ parsers.c util.c version.c DIST_SOURCES = $(libapache_test_a_SOURCES) cookie.c error.c params.c \ parsers.c util.c version.c ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ APACHE1_APXS = @APACHE1_APXS@ APACHE2_APXS = @APACHE2_APXS@ APACHE2_HTTPD = @APACHE2_HTTPD@ APACHE2_INCLUDES = @APACHE2_INCLUDES@ APACHE2_SRC = @APACHE2_SRC@ APREQ_CONFIG = @APREQ_CONFIG@ APREQ_DOTTED_VERSION = @APREQ_DOTTED_VERSION@ APREQ_LIBNAME = @APREQ_LIBNAME@ APREQ_LIBTOOL_VERSION = @APREQ_LIBTOOL_VERSION@ APREQ_MAJOR_VERSION = @APREQ_MAJOR_VERSION@ APR_CONFIG = @APR_CONFIG@ APR_DOC_VERSION = @APR_DOC_VERSION@ APR_INCLUDES = @APR_INCLUDES@ APR_LA = @APR_LA@ APR_LDFLAGS = @APR_LDFLAGS@ APR_LIBS = @APR_LIBS@ APR_LTFLAGS = @APR_LTFLAGS@ APU_CONFIG = @APU_CONFIG@ APU_DOC_VERSION = @APU_DOC_VERSION@ APU_LA = @APU_LA@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MM_OPTS = @MM_OPTS@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PERL_OPTS = @PERL_OPTS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TAR = @TAR@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = @APR_INCLUDES@ AM_LDFLAGS = `@APREQ_CONFIG@ --link-libtool --libs` @APR_LTFLAGS@ noinst_LIBRARIES = libapache_test.a libapache_test_a_SOURCES = at.h at.c LDADD = libapache_test.a check_SCRIPTS = version.t cookie.t params.t parsers.t error.t util.t TESTS = $(check_SCRIPTS) TESTS_ENVIRONMENT = @PERL@ -MTest::Harness -e 'runtests(@ARGV)' CLEANFILES = $(check_PROGRAMS) $(check_SCRIPTS) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu library/t/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu library/t/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libapache_test.a: $(libapache_test_a_OBJECTS) $(libapache_test_a_DEPENDENCIES) -rm -f libapache_test.a $(libapache_test_a_AR) libapache_test.a $(libapache_test_a_OBJECTS) $(libapache_test_a_LIBADD) $(RANLIB) libapache_test.a clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; for p in $$list; do \ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ echo " rm -f $$p $$f"; \ rm -f $$p $$f ; \ done cookie$(EXEEXT): $(cookie_OBJECTS) $(cookie_DEPENDENCIES) @rm -f cookie$(EXEEXT) $(LINK) $(cookie_OBJECTS) $(cookie_LDADD) $(LIBS) error$(EXEEXT): $(error_OBJECTS) $(error_DEPENDENCIES) @rm -f error$(EXEEXT) $(LINK) $(error_OBJECTS) $(error_LDADD) $(LIBS) params$(EXEEXT): $(params_OBJECTS) $(params_DEPENDENCIES) @rm -f params$(EXEEXT) $(LINK) $(params_OBJECTS) $(params_LDADD) $(LIBS) parsers$(EXEEXT): $(parsers_OBJECTS) $(parsers_DEPENDENCIES) @rm -f parsers$(EXEEXT) $(LINK) $(parsers_OBJECTS) $(parsers_LDADD) $(LIBS) util$(EXEEXT): $(util_OBJECTS) $(util_DEPENDENCIES) @rm -f util$(EXEEXT) $(LINK) $(util_OBJECTS) $(util_LDADD) $(LIBS) version$(EXEEXT): $(version_OBJECTS) $(version_DEPENDENCIES) @rm -f version$(EXEEXT) $(LINK) $(version_OBJECTS) $(version_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/at.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cookie.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/params.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parsers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags check-TESTS: $(TESTS) @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \ srcdir=$(srcdir); export srcdir; \ list=' $(TESTS) '; \ if test -n "$$list"; then \ for tst in $$list; do \ if test -f ./$$tst; then dir=./; \ elif test -f $$tst; then dir=; \ else dir="$(srcdir)/"; fi; \ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *$$ws$$tst$$ws*) \ xpass=`expr $$xpass + 1`; \ failed=`expr $$failed + 1`; \ echo "XPASS: $$tst"; \ ;; \ *) \ echo "PASS: $$tst"; \ ;; \ esac; \ elif test $$? -ne 77; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *$$ws$$tst$$ws*) \ xfail=`expr $$xfail + 1`; \ echo "XFAIL: $$tst"; \ ;; \ *) \ failed=`expr $$failed + 1`; \ echo "FAIL: $$tst"; \ ;; \ esac; \ else \ skip=`expr $$skip + 1`; \ echo "SKIP: $$tst"; \ fi; \ done; \ if test "$$failed" -eq 0; then \ if test "$$xfail" -eq 0; then \ banner="All $$all tests passed"; \ else \ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ fi; \ else \ if test "$$xpass" -eq 0; then \ banner="$$failed of $$all tests failed"; \ else \ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ fi; \ fi; \ dashes="$$banner"; \ skipped=""; \ if test "$$skip" -ne 0; then \ skipped="($$skip tests were not run)"; \ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$skipped"; \ fi; \ report=""; \ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ report="Please report to $(PACKAGE_BUGREPORT)"; \ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$report"; \ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ echo "$$dashes"; \ echo "$$banner"; \ test -z "$$skipped" || echo "$$skipped"; \ test -z "$$report" || echo "$$report"; \ echo "$$dashes"; \ test "$$failed" -eq 0; \ else :; fi distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(LIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ clean-noinstLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool \ clean-noinstLIBRARIES ctags distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am %.t: % echo "#!perl" > $@ echo "exec './$*'" >> $@ test: $(check_SCRIPTS) $(TESTS_ENVIRONMENT) $(check_SCRIPTS) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libapreq2-2.13/library/t/params.c0000644000076400017500000001476711473532340015671 0ustar issacissac/* ** 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. */ #include "apreq_param.h" #include "apreq_util.h" #include "apreq_error.h" #include "apr_strings.h" #include "at.h" static const char query_string[] = "a=1;quux=foo+bar&a=2&plus=%2B;" "uplus=%U002b;okie=dokie;foo=a%E1;" "novalue1;novalue2="; static apr_table_t *args; static apr_pool_t *p; static void request_make(dAT) { apr_status_t s; args = apr_table_make(p, APREQ_DEFAULT_NELTS); AT_not_null(args); s = apreq_parse_query_string(p, args, query_string); AT_int_eq(s, APR_SUCCESS); AT_int_eq(apr_table_elts(args)->nelts, 9); } static void request_args_get(dAT) { const char *val; const apreq_param_t *param; AT_str_eq(apr_table_get(args,"a"), "1"); val = apr_table_get(args,"quux"); AT_str_eq(val, "foo bar"); param = apreq_value_to_param(val); AT_int_eq(param->v.dlen, 7); AT_str_eq(apr_table_get(args,"plus"), "+"); AT_str_eq(apr_table_get(args,"uplus"), "+"); AT_str_eq(apr_table_get(args,"okie"), "dokie"); AT_str_eq(apr_table_get(args,"novalue1"), ""); AT_str_eq(apr_table_get(args,"novalue2"),""); } static void params_as(dAT) { const char *val; apr_array_header_t *arr; arr = apreq_params_as_array(p,args,"a"); AT_int_eq(arr->nelts, 2); val = apreq_params_as_string(p,args,"a",APREQ_JOIN_AS_IS); AT_str_eq(val, "1, 2"); val = apreq_params_as_string(p,args,"does_not_exist",APREQ_JOIN_AS_IS); AT_str_eq(val, ""); } static void string_decoding_in_place(dAT) { char *s1 = apr_palloc(p,4096); char *s2 = apr_palloc(p,4096); char *s3; strcpy(s1, "bend it like beckham"); strcpy(s2, "dandy %3Edons"); AT_str_eq(s1,"bend it like beckham"); apreq_unescape(s1); AT_str_eq(s1, "bend it like beckham"); s3 = apreq_escape(p, s1, 20); AT_str_eq(s3, "bend+it+like+beckham"); apreq_unescape(s3); AT_str_eq(s3,"bend it like beckham"); AT_str_eq(s2,"dandy %3Edons"); apreq_unescape(s2); AT_str_eq(s2,"dandy >dons"); s3 = apreq_escape(p, s2, 11); AT_str_eq(s3,"dandy+%3Edons"); apreq_unescape(s3); AT_str_eq(s3,"dandy >dons"); } static void header_attributes(dAT) { const char *hdr = "text/plain; boundary=\"-foo-\", charset=ISO-8859-1"; const char *val; apr_size_t vlen; apr_status_t s; s = apreq_header_attribute(hdr, "none", 4, &val, &vlen); AT_int_eq(s, APREQ_ERROR_NOATTR); s = apreq_header_attribute(hdr, "set", 3, &val, &vlen); AT_int_eq(s, APREQ_ERROR_NOATTR); s = apreq_header_attribute(hdr, "boundary", 8, &val, &vlen); AT_int_eq(s, APR_SUCCESS); AT_int_eq(vlen, 5); AT_mem_eq(val, "-foo-", 5); s = apreq_header_attribute(hdr, "charset", 7, &val, &vlen); AT_int_eq(s, APR_SUCCESS); AT_int_eq(vlen, 10); AT_mem_eq(val, "ISO-8859-1", 10); hdr = "max-age=20; no-quote=\"..."; s = apreq_header_attribute(hdr, "max-age", 7, &val, &vlen); AT_int_eq(s, APR_SUCCESS); AT_int_eq(vlen, 2); AT_mem_eq(val, "20", 2); s = apreq_header_attribute(hdr, "age", 3, &val, &vlen); AT_int_eq(s, APREQ_ERROR_BADSEQ); s = apreq_header_attribute(hdr, "no-quote", 8, &val, &vlen); AT_int_eq(s, APREQ_ERROR_BADSEQ); } static void make_param(dAT) { apreq_param_t *param, *decode; apr_status_t s; apr_size_t nlen = 3, vlen = 11; char *name = apr_palloc(p,nlen+1); char *val = apr_palloc(p,vlen+1); char *encode; strcpy(name, "foo"); strcpy(val, "bar > alpha"); param = apreq_param_make(p, name, nlen, val, vlen); AT_str_eq(param->v.name, name); AT_int_eq(param->v.dlen, vlen); AT_str_eq(param->v.data, val); encode = apreq_param_encode(p, param); AT_str_eq(encode, "foo=bar+%3E+alpha"); s = apreq_param_decode(&decode, p, encode, nlen, vlen+2); AT_int_eq(s, APR_SUCCESS); AT_str_eq(decode->v.name, name); AT_int_eq(decode->v.dlen, vlen); AT_str_eq(decode->v.data, val); } static void quote_strings(dAT) { apr_size_t exp_len, res_len, res_quote_len; char *res = apr_palloc(p,24); char *res_quote = apr_palloc(p,24); const char *expr; int i; const char * arr[] = {"cest", "\"cest", "ce\"st", "\"cest\""}; const char * arr_quote[] = {"\"cest\"", "\"\\\"cest\"", "\"ce\\\"st\"", "\"\\\"cest\\\"\""}; apr_size_t arr_len[] = {4, 5, 5, 6}; apr_size_t arr_quote_len[] = {6, 8, 8, 10}; for (i=0; i<4; i++) { res_len = apreq_quote(res, arr[i], arr_len[i]); AT_int_eq(res_len, arr_quote_len[i]); AT_mem_eq(res, arr_quote[i], res_len); res_quote_len = apreq_quote_once(res_quote, res, res_len); AT_int_eq(res_quote_len, res_len); AT_mem_eq(res_quote, res, res_len); res_len = apreq_quote_once(res, arr[i], arr_len[i]); exp_len = (i == 3) ? arr_len[i] : arr_quote_len[i]; expr = (i == 3) ? arr[i] : arr_quote[i]; AT_int_eq(res_len, exp_len); AT_mem_eq(res, expr, exp_len); } } #define dT(func, plan) {#func, func, plan} int main(int argc, char *argv[]) { unsigned i, plan = 0; dAT; at_test_t test_list [] = { dT(request_make, 3), dT(request_args_get, 8), dT(params_as, 3), dT(string_decoding_in_place, 8), dT(header_attributes, 13), dT(make_param, 8), dT(quote_strings, 24), }; apr_initialize(); atexit(apr_terminate); apr_pool_create(&p, NULL); apreq_initialize(p); AT = at_create(p, 0, at_report_stdout_make(p)); AT_trace_on(); for (i = 0; i < sizeof(test_list) / sizeof(at_test_t); ++i) plan += test_list[i].plan; AT_begin(plan); for (i = 0; i < sizeof(test_list) / sizeof(at_test_t); ++i) AT_run(&test_list[i]); AT_end(); return 0; } libapreq2-2.13/library/t/parsers.c0000644000076400017500000004274411473532340016061 0ustar issacissac/* ** 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. */ #include "apreq_parser.h" #include "apreq_util.h" #include "apreq_error.h" #include "apr_strings.h" #include "apr_xml.h" #include "at.h" #define CRLF "\015\012" static apr_pool_t *p; static char url_data[] = "alpha=one&beta=two;omega=last%2"; static char form_data[] = "--AaB03x" CRLF /* 10 chars 012345678901234567890123456789012345678901234567890123456789 */ "content-disposition: form-data; name=\"field1\"" CRLF /* 47 chars */ "content-type: text/plain;charset=windows-1250" CRLF "content-transfer-encoding: quoted-printable" CRLF CRLF "Joe owes =80100." CRLF "--AaB03x" CRLF "content-disposition: form-data; name=\"pics\"; filename=\"file1.txt\"" CRLF "Content-Type: text/plain" CRLF CRLF "... contents of file1.txt ..." CRLF CRLF "--AaB03x" CRLF "content-disposition: form-data; name=\"\"" CRLF "content-type: text/plain;" CRLF " charset=windows-1250" CRLF "content-transfer-encoding: quoted-printable" CRLF CRLF "Joe owes =80100." CRLF "--AaB03x--" CRLF; static char xml_data[] = "" "" " foo.bar" " " " 1" " " ""; static char rel_data[] = /*offsets: 122, 522, */ "--f93dcbA3" CRLF "Content-Type: application/xml; charset=UTF-8" CRLF "Content-Length: 400" CRLF "Content-ID: <980119.X53GGT@example.com>" CRLF CRLF /*122*/ "" CRLF "" " My Proposal" " E. X. Ample" " A proposal for a new project." " (see handwritten region)" " project proposal funding" " false" " image.png" " cid:980119.X25MNC@example.com" "" /*400*/ CRLF "--f93dcbA3" CRLF /*14*/ "Content-Type: image/png" CRLF "Content-Transfer-Encoding: binary" CRLF "Content-ID: <980119.X25MNC@example.com>" CRLF CRLF /*103*/ "...Binary data here..." /*22*/ CRLF "--f93dcbA3" CRLF /*14*/ "Content-Type: image/png" CRLF "Content-Transfer-Encoding: binary" CRLF "Content-ID: <980119.X17AXM@example.com>" CRLF CRLF "...Binary data here..." CRLF "--f93dcbA3--" CRLF; static char mix_data[] = "--AaB03x" CRLF "Content-Disposition: form-data; name=\"submit-name\"" CRLF CRLF "Larry" CRLF "--AaB03x" CRLF "Content-Disposition: form-data; name=\"files\"" CRLF "Content-Type: multipart/mixed; boundary=BbC04y" CRLF CRLF "--BbC04y" CRLF "Content-Disposition: file; filename=\"file1.txt\"" CRLF "Content-Type: text/plain" CRLF CRLF "... contents of file1.txt ..." CRLF "--BbC04y" CRLF "Content-Disposition: file; filename=\"file2.gif\"" CRLF "Content-Type: image/gif" CRLF "Content-Transfer-Encoding: binary" CRLF CRLF "...contents of file2.gif..." CRLF "--BbC04y--" CRLF "--AaB03x " CRLF "content-disposition: form-data; name=\"field1\"" CRLF "content-type: text/plain;charset=windows-1250" CRLF "content-transfer-encoding: quoted-printable" CRLF CRLF "Joe owes =80100." CRLF "--AaB03x--"; /* omit CRLF, which is ok per rfc 2046 */ #define URL_ENCTYPE "application/x-www-form-urlencoded" #define MFD_ENCTYPE "multipart/form-data" #define MR_ENCTYPE "multipart/related" #define XML_ENCTYPE "application/xml" static void locate_default_parsers(dAT) { #ifdef __ELF__ apreq_parser_function_t f; AT_trace_on(); f = apreq_parser(URL_ENCTYPE); AT_EQ(f, (apreq_parser_function_t)apreq_parse_urlencoded, "%pp"); f = apreq_parser(MFD_ENCTYPE); AT_EQ(f, (apreq_parser_function_t)apreq_parse_multipart, "%pp"); f = apreq_parser(MR_ENCTYPE); AT_EQ(f, (apreq_parser_function_t)apreq_parse_multipart, "%pp"); AT_trace_off(); #else AT_skip(3, "skipping ELF-dependent tests"); #endif } static void parse_urlencoded(dAT) { apr_status_t rv; apr_bucket_alloc_t *ba; apr_bucket_brigade *bb; apreq_parser_t *parser; apr_table_t *body; body = apr_table_make(p, APREQ_DEFAULT_NELTS); ba = apr_bucket_alloc_create(p); bb = apr_brigade_create(p, ba); parser = apreq_parser_make(p, ba, URL_ENCTYPE, apreq_parse_urlencoded, 100, NULL, NULL, NULL); APR_BRIGADE_INSERT_HEAD(bb, apr_bucket_immortal_create(url_data,strlen(url_data), bb->bucket_alloc)); rv = apreq_parser_run(parser, body, bb); AT_int_eq(rv, APR_INCOMPLETE); APR_BRIGADE_INSERT_HEAD(bb, apr_bucket_immortal_create("blast",5, bb->bucket_alloc)); APR_BRIGADE_INSERT_TAIL(bb, apr_bucket_eos_create(bb->bucket_alloc)); rv = apreq_parser_run(parser, body, bb); AT_int_eq(rv, APR_SUCCESS); AT_str_eq(apr_table_get(body,"alpha"), "one"); AT_str_eq(apr_table_get(body,"beta"), "two"); AT_str_eq(apr_table_get(body,"omega"),"last+last"); } static void parse_multipart(dAT) { apr_size_t i, j; apr_bucket_alloc_t *ba; for (j = 0; j <= strlen(form_data); ++j) { ba = apr_bucket_alloc_create(p); /* AT_localize checks the inner loop tests itself * (and interprets any such failures as being fatal), * because doing IO to Test::Harness is just too slow * when this many (~1M) tests are involved. */ AT_localize(p); for (i = 0; i <= strlen(form_data); ++i) { const char *val; char *val2; apr_size_t len; apr_table_t *t, *body; apreq_parser_t *parser; apr_bucket_brigade *bb, *vb, *tail; apr_status_t rv; apr_bucket *e, *f; bb = apr_brigade_create(p, ba); body = apr_table_make(p, APREQ_DEFAULT_NELTS); parser = apreq_parser_make(p, ba, MFD_ENCTYPE "; charset=\"iso-8859-1\"" "; boundary=\"AaB03x\"", apreq_parse_multipart, 1000, NULL, NULL, NULL); e = apr_bucket_immortal_create(form_data, strlen(form_data), bb->bucket_alloc); APR_BRIGADE_INSERT_HEAD(bb, e); APR_BRIGADE_INSERT_TAIL(bb, apr_bucket_eos_create(bb->bucket_alloc)); /* Split e into three buckets */ apr_bucket_split(e, j); f = APR_BUCKET_NEXT(e); if (i < j) apr_bucket_split(e, i); else apr_bucket_split(f, i - j); tail = apr_brigade_split(bb, f); rv = apreq_parser_run(parser, body, bb); AT_int_eq(rv, (j < strlen(form_data)) ? APR_INCOMPLETE : APR_SUCCESS); rv = apreq_parser_run(parser, body, tail); AT_int_eq(rv, APR_SUCCESS); AT_int_eq(apr_table_elts(body)->nelts, 3); val = apr_table_get(body,"field1"); AT_str_eq(val, "Joe owes =80100."); t = apreq_value_to_param(val)->info; val = apr_table_get(t, "content-transfer-encoding"); AT_str_eq(val, "quoted-printable"); val = apr_table_get(body, "pics"); AT_str_eq(val, "file1.txt"); t = apreq_value_to_param(val)->info; vb = apreq_value_to_param(val)->upload; apr_brigade_pflatten(vb, &val2, &len, p); AT_int_eq(len, strlen("... contents of file1.txt ..." CRLF)); AT_mem_eq(val2 ,"... contents of file1.txt ..." CRLF, len); val = apr_table_get(t, "content-type"); AT_str_eq(val, "text/plain"); val = apr_table_get(body, ""); AT_str_eq(val, "Joe owes =80100."); t = apreq_value_to_param(val)->info; val = apr_table_get(t, "content-type"); AT_int_eq(apreq_header_attribute(val, "charset", 7, &val, &len), APR_SUCCESS); AT_str_eq(val, "windows-1250"); apr_brigade_cleanup(vb); apr_brigade_cleanup(bb); } #ifdef APR_POOL_DEBUG apr_bucket_alloc_destroy(ba); #endif apr_pool_clear(p); } } static void parse_disable_uploads(dAT) { const char *val; apr_table_t *t, *body; apr_status_t rv; apr_bucket_alloc_t *ba; apr_bucket_brigade *bb; apr_bucket *e; apreq_parser_t *parser; apreq_hook_t *hook; ba = apr_bucket_alloc_create(p); bb = apr_brigade_create(p, ba); e = apr_bucket_immortal_create(form_data, strlen(form_data), ba); APR_BRIGADE_INSERT_HEAD(bb, e); APR_BRIGADE_INSERT_TAIL(bb, apr_bucket_eos_create(bb->bucket_alloc)); body = apr_table_make(p, APREQ_DEFAULT_NELTS); hook = apreq_hook_make(p, apreq_hook_disable_uploads, NULL, NULL); parser = apreq_parser_make(p, ba, MFD_ENCTYPE "; charset=\"iso-8859-1\"" "; boundary=\"AaB03x\"", apreq_parse_multipart, 1000, NULL, hook, NULL); rv = apreq_parser_run(parser, body, bb); AT_int_eq(rv, APREQ_ERROR_GENERAL); AT_int_eq(apr_table_elts(body)->nelts, 1); val = apr_table_get(body,"field1"); AT_str_eq(val, "Joe owes =80100."); t = apreq_value_to_param(val)->info; val = apr_table_get(t, "content-transfer-encoding"); AT_str_eq(val, "quoted-printable"); val = apr_table_get(body, "pics"); AT_is_null(val); } static void parse_generic(dAT) { char *val; apr_size_t vlen; apr_status_t rv; apreq_param_t *dummy; apreq_parser_t *parser; apr_table_t *body; apr_bucket_alloc_t *ba = apr_bucket_alloc_create(p); apr_bucket_brigade *bb = apr_brigade_create(p, ba); apr_bucket *e = apr_bucket_immortal_create(xml_data, strlen(xml_data), ba); APR_BRIGADE_INSERT_HEAD(bb, e); APR_BRIGADE_INSERT_TAIL(bb, apr_bucket_eos_create(ba)); body = apr_table_make(p, APREQ_DEFAULT_NELTS); parser = apreq_parser_make(p, ba, "application/xml", apreq_parse_generic, 1000, NULL, NULL, NULL); rv = apreq_parser_run(parser, body, bb); AT_int_eq(rv, APR_SUCCESS); dummy = *(apreq_param_t **)parser->ctx; AT_not_null(dummy); apr_brigade_pflatten(dummy->upload, &val, &vlen, p); AT_int_eq(vlen, strlen(xml_data)); AT_mem_eq(val, xml_data, vlen); } static void hook_discard(dAT) { apr_status_t rv; apreq_param_t *dummy; apreq_parser_t *parser; apreq_hook_t *hook; apr_table_t *body; apr_bucket_alloc_t *ba = apr_bucket_alloc_create(p); apr_bucket_brigade *bb = apr_brigade_create(p, ba); apr_bucket *e = apr_bucket_immortal_create(xml_data, strlen(xml_data), ba); APR_BRIGADE_INSERT_HEAD(bb, e); APR_BRIGADE_INSERT_TAIL(bb, apr_bucket_eos_create(ba)); body = apr_table_make(p, APREQ_DEFAULT_NELTS); hook = apreq_hook_make(p, apreq_hook_discard_brigade, NULL, NULL); parser = apreq_parser_make(p, ba, "application/xml", apreq_parse_generic, 1000, NULL, hook, NULL); rv = apreq_parser_run(parser, body, bb); AT_int_eq(rv, APR_SUCCESS); dummy = *(apreq_param_t **)parser->ctx; AT_not_null(dummy); AT_not_null(dummy->upload); AT_ok(APR_BRIGADE_EMPTY(dummy->upload), "brigade has no contents"); } static void parse_related(dAT) { char ct[] = "multipart/related; boundary=f93dcbA3; " "type=application/xml; start=\"<980119.X53GGT@example.com>\""; char data[] = "...Binary data here..."; int dlen = strlen(data); const char *val; char *val2; apr_size_t vlen; apr_status_t rv; int ns_map = 0; apr_xml_doc *doc; apr_table_t *body; apreq_parser_t *parser; apreq_hook_t *xml_hook; apreq_param_t *param; apr_bucket_alloc_t *ba = apr_bucket_alloc_create(p); apr_bucket_brigade *bb = apr_brigade_create(p, ba); apr_bucket *e = apr_bucket_immortal_create(rel_data, strlen(rel_data), bb->bucket_alloc); APR_BRIGADE_INSERT_HEAD(bb, e); APR_BRIGADE_INSERT_TAIL(bb, apr_bucket_eos_create(bb->bucket_alloc)); xml_hook = apreq_hook_make(p, apreq_hook_apr_xml_parser, NULL, NULL); body = apr_table_make(p, APREQ_DEFAULT_NELTS); parser = apreq_parser_make(p, ba, ct, apreq_parse_multipart, 1000, NULL, xml_hook, NULL); rv = apreq_parser_run(parser, body, bb); AT_int_eq(rv, APR_SUCCESS); val = apr_table_get(body, "<980119.X53GGT@example.com>"); AT_not_null(val); param = apreq_value_to_param(val); AT_not_null(param); AT_not_null(param->info); val = apr_table_get(param->info, "Content-Length"); AT_str_eq(val, "400"); AT_not_null(param->upload); apr_brigade_pflatten(param->upload, &val2, &vlen, p); AT_int_eq(vlen, 400); AT_mem_eq(val2, rel_data + 122, 400); doc = *(apr_xml_doc **)xml_hook->ctx; apr_xml_to_text(p, doc->root, APR_XML_X2T_FULL, doc->namespaces, &ns_map, &val, &vlen); AT_int_eq(vlen, 400 - 22); AT_mem_eq(val, rel_data + 122 + 23, 400 - 23); val = apr_table_get(body, "<980119.X25MNC@example.com>"); AT_not_null(val); param = apreq_value_to_param(val); AT_not_null(param); AT_not_null(param->upload); apr_brigade_pflatten(param->upload, &val2, &vlen, p); AT_int_eq(vlen, dlen); AT_mem_eq(val2, data, vlen); val = apr_table_get(body, "<980119.X17AXM@example.com>"); AT_not_null(val); param = apreq_value_to_param(val); AT_not_null(param); AT_not_null(param->upload); apr_brigade_pflatten(param->upload, &val2, &vlen, p); AT_int_eq(vlen, dlen); AT_mem_eq(val2, data, vlen); } typedef struct { const char *key; const char *val; } array_elt; static void parse_mixed(dAT) { const char *val; char *val2; apr_size_t vlen; apr_status_t rv; apreq_param_t *param; const apr_array_header_t *arr; array_elt *elt; char ct[] = MFD_ENCTYPE "; charset=\"iso-8859-1\"; boundary=\"AaB03x\""; apreq_parser_t *parser; apr_table_t *body = apr_table_make(p, APREQ_DEFAULT_NELTS); apr_bucket_alloc_t *ba = apr_bucket_alloc_create(p); apr_bucket_brigade *bb = apr_brigade_create(p, ba); apr_bucket *e = apr_bucket_immortal_create(mix_data, strlen(mix_data), bb->bucket_alloc); APR_BRIGADE_INSERT_HEAD(bb, e); APR_BRIGADE_INSERT_TAIL(bb, apr_bucket_eos_create(bb->bucket_alloc)); parser = apreq_parser_make(p, ba, ct, apreq_parse_multipart, 1000, NULL, NULL, NULL); rv = apreq_parser_run(parser, body, bb); AT_int_eq(rv, APR_SUCCESS); val = apr_table_get(body, "submit-name"); AT_not_null(val); AT_str_eq(val, "Larry"); val = apr_table_get(body,"field1"); AT_str_eq(val, "Joe owes =80100."); val = apr_table_get(body, "files"); AT_not_null(val); AT_str_eq(val, "file1.txt"); param = apreq_value_to_param(val); AT_not_null(param->upload); apr_brigade_pflatten(param->upload, &val2, &vlen, p); AT_int_eq(vlen, strlen("... contents of file1.txt ...")); AT_mem_eq(val2, "... contents of file1.txt ...", vlen); arr = apr_table_elts(body); AT_int_eq(arr->nelts, 4); elt = (array_elt *)&arr->elts[2 * arr->elt_size]; AT_str_eq(elt->key, "files"); AT_str_eq(elt->val, "file2.gif"); param = apreq_value_to_param(elt->val); AT_not_null(param->upload); apr_brigade_pflatten(param->upload, &val2, &vlen, p); AT_int_eq(vlen, strlen("...contents of file2.gif...")); AT_mem_eq(val2, "...contents of file2.gif...", vlen); } #define dT(func, plan) {#func, func, plan} int main(int argc, char *argv[]) { apr_pool_t *test_pool; unsigned i, plan = 0; dAT; at_test_t test_list [] = { dT(locate_default_parsers, 3), dT(parse_urlencoded, 5), dT(parse_multipart, sizeof form_data), dT(parse_disable_uploads, 5), dT(parse_generic, 4), dT(hook_discard, 4), dT(parse_related, 20), dT(parse_mixed, 15) }; apr_initialize(); atexit(apr_terminate); apr_pool_create(&p, NULL); apr_pool_create(&test_pool, NULL); apreq_initialize(p); AT = at_create(test_pool, 0, at_report_stdout_make(test_pool)); for (i = 0; i < sizeof(test_list) / sizeof(at_test_t); ++i) plan += test_list[i].plan; AT_begin(plan); for (i = 0; i < sizeof(test_list) / sizeof(at_test_t); ++i) AT_run(&test_list[i]); AT_end(); return 0; } libapreq2-2.13/library/t/util.c0000644000076400017500000002167711473532340015361 0ustar issacissac/* ** 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. */ #include "apr_strings.h" #include "apreq_error.h" #include "apreq_util.h" #include "at.h" static void test_atoi64f(dAT) { AT_int_eq(apreq_atoi64f("0"), 0); AT_int_eq(apreq_atoi64f("-1"), -1); AT_int_eq(apreq_atoi64f("-"), 0); AT_int_eq(apreq_atoi64f("5"), 5); AT_int_eq(apreq_atoi64f("3.333"), 3); AT_int_eq(apreq_atoi64f("33k"), 33 * 1024); AT_int_eq(apreq_atoi64f(" +8M "), 8 * 1024 * 1024); AT_ok(apreq_atoi64f("44GB") == (apr_int64_t)44 * 1024 * 1024 * 1024, "44GB test"); AT_ok(apreq_atoi64f("0xaBcDefg") == (apr_int64_t)11259375 * 1024 * 1024 * 1024, "hex test"); } static void test_atoi64t(dAT) { AT_int_eq(apreq_atoi64t("0"), 0); AT_int_eq(apreq_atoi64t("-1"), -1); AT_int_eq(apreq_atoi64t("-g088l3dyg00k"), 0); AT_int_eq(apreq_atoi64t("5s"), 5); AT_int_eq(apreq_atoi64t("3.333"), 3); AT_int_eq(apreq_atoi64t("33d"), 33 * 60 * 60 * 24); AT_int_eq(apreq_atoi64t(" +8M "), 8 * 60 * 60 * 24 * 30); AT_int_eq(apreq_atoi64t("+9m"), 9 * 60); AT_int_eq(apreq_atoi64t("6h"), 6 * 60 * 60); } static void test_index(dAT) { const char haystack[] = "Four score and seven years ago"; apr_size_t hlen = sizeof haystack - 1; AT_int_eq(apreq_index(haystack, hlen, "Four", 4, APREQ_MATCH_FULL), 0); AT_int_eq(apreq_index(haystack, hlen, "Four", 4, APREQ_MATCH_PARTIAL), 0); AT_int_eq(apreq_index(haystack, hlen, "Fourteen", 8, APREQ_MATCH_FULL), -1); AT_int_eq(apreq_index(haystack, hlen, "Fourteen", 8, APREQ_MATCH_PARTIAL), -1); AT_int_eq(apreq_index(haystack, hlen, "agoraphobia", 11, APREQ_MATCH_FULL), -1); AT_int_eq(apreq_index(haystack, hlen, "agoraphobia", 11, APREQ_MATCH_PARTIAL), hlen - 3); } #define A_GRAVE 0xE5 #define KATAKANA_A 0xFF71 static void test_decode(dAT) { apr_size_t elen; char src1[] = "%C3%80%E3%82%a2"; /* A_GRAVE KATAKANA_A as utf8 */ unsigned char expect[6]; AT_int_eq(apreq_decode((char *)expect, &elen, src1, sizeof(src1) -1), APR_SUCCESS); AT_int_eq(elen, 5); AT_int_eq(expect[0], 0xC3); AT_int_eq(expect[1], 0x80); AT_int_eq(expect[2], 0xE3); AT_int_eq(expect[3], 0x82); AT_int_eq(expect[4], 0xA2); } static void test_charset_divine(dAT) { apr_size_t elen; char src1[] = "%C3%80%E3%82%a2"; /* A_GRAVE KATAKANA_A as utf8 */ char src2[] = "pound%A3";/* latin-1 */ char src3[] = "euro%80";/* cp-1252 */ char expect[7]; AT_int_eq(apreq_decode(expect, &elen, src1, sizeof(src1) -1), APR_SUCCESS); AT_int_eq(apreq_charset_divine(expect, elen), APREQ_CHARSET_UTF8); AT_int_eq(apreq_decode(expect, &elen, src2, sizeof(src2) -1), APR_SUCCESS); AT_int_eq(apreq_charset_divine(expect, elen), APREQ_CHARSET_LATIN1); AT_int_eq(apreq_decode(expect, &elen, src3, sizeof(src3) -1), APR_SUCCESS); AT_int_eq(apreq_charset_divine(expect, elen), APREQ_CHARSET_CP1252); } static void test_decodev(dAT) { char src1[] = "%2540%2"; char src2[] = "0%u0"; char src3[] = "041"; struct iovec iovec1[] = { { src1, sizeof(src1) - 1 }, { src2, sizeof(src2) - 1 }, { src3, sizeof(src3) - 1 }, }; struct iovec iovec2[] = { { src1, sizeof(src1) - 1 }, { src2, sizeof(src2) - 1 }, }; const char expect1[] = "%40 A"; const char expect2[] = "%40 "; char dest[sizeof(src1) + sizeof(src2) + sizeof(src3)]; apr_size_t dest_len; apr_status_t status; status = apreq_decodev(dest, &dest_len, iovec1, 3); AT_int_eq(status, APR_SUCCESS); AT_int_eq(dest_len, sizeof(expect1) - 1); AT_mem_eq(dest, expect1, sizeof(expect1) - 1); status = apreq_decodev(dest, &dest_len, iovec2, 2); AT_int_eq(status, APR_INCOMPLETE); AT_int_eq(dest_len, sizeof(expect2) - 1); AT_mem_eq(dest, expect2, sizeof(expect2) - 1); } static void test_encode(dAT) { } static void test_cp1252_to_utf8(dAT) { char src1[] = "%C3%80%E3%82%a2"; /* A_GRAVE KATAKANA_A as utf8 */ char src2[5]; unsigned char expect[16]; apr_size_t slen; AT_int_eq(apreq_decode((char *)src2, &slen, src1, sizeof(src1) -1), APR_SUCCESS); AT_int_eq(apreq_cp1252_to_utf8((char *)expect, src2, 5), 12); /* 0xC3 */ AT_int_eq(expect[0], 0xC0 | (0xC3 >> 6)); AT_int_eq(expect[1], 0xC3 - 0x40); /* 0x20AC */ AT_int_eq(expect[2], 0xE0 | (0x20AC >> 12)); AT_int_eq(expect[3], 0x80 | ((0x20AC >> 6) & 0x3F)); AT_int_eq(expect[4], 0x80 | (0x20AC & 0x3F)); /* 0xE3 */ AT_int_eq(expect[5], 0xC3); AT_int_eq(expect[6], 0xE3 - 0x40); /* 0x201A */ AT_int_eq(expect[7], 0xE0 | (0x201A >> 12)); AT_int_eq(expect[8], 0x80 | ((0x201A >> 6) & 0x3F)); AT_int_eq(expect[9], 0x80 | (0x201A & 0x3F)); /* 0xA2 */ AT_int_eq(expect[10], 0xC0 | (0xA2 >> 6)); AT_int_eq(expect[11], 0xA2); } static void test_quote(dAT) { size_t len; char dst[64]; len = apreq_quote(dst, "foo", 3); AT_int_eq(len, 5); AT_str_eq(dst, "\"foo\""); len = apreq_quote(dst, "\"foo", 4); AT_int_eq(len, 7); AT_str_eq(dst, "\"\\\"foo\""); len = apreq_quote(dst, "foo\\bar", 7); AT_int_eq(len, 10); AT_str_eq(dst, "\"foo\\\\bar\""); len = apreq_quote(dst, "foo\0bar", 7); AT_int_eq(len, 10); AT_str_eq(dst, "\"foo\\0bar\""); } static void test_quote_once(dAT) { size_t len; char dst[64]; len = apreq_quote_once(dst, "foo", 3); AT_int_eq(len, 5); AT_str_eq(dst, "\"foo\""); len = apreq_quote_once(dst, "\"foo", 4); AT_int_eq(len, 7); AT_str_eq(dst, "\"\\\"foo\""); len = apreq_quote_once(dst, "foo\"", 4); AT_int_eq(len, 7); AT_str_eq(dst, "\"foo\\\"\""); len = apreq_quote_once(dst, "foo\0bar", 7); AT_int_eq(len, 10); AT_str_eq(dst, "\"foo\\0bar\""); /* null byte must be escaped, even when there are already double quotes */ len = apreq_quote_once(dst, "\"foo\0bar\"", 9); AT_int_eq(len, 14); AT_str_eq(dst, "\"\\\"foo\\0bar\\\"\""); len = apreq_quote_once(dst, "\"foo\"", 5); AT_int_eq(len, 5); AT_str_eq(dst, "\"foo\""); len = apreq_quote_once(dst, "'foo'", 5); AT_int_eq(len, 7); AT_str_eq(dst, "\"'foo'\""); len = apreq_quote_once(dst, "\"fo\\o\"", 6); AT_int_eq(len, 6); AT_str_eq(dst, "\"fo\\o\""); len = apreq_quote_once(dst, "\"foo\"bar\"", 9); AT_int_eq(len, 14); AT_str_eq(dst, "\"\\\"foo\\\"bar\\\"\""); } static void test_join(dAT) { } static void test_brigade_fwrite(dAT) { } static void test_file_mktemp(dAT) { } static void test_header_attribute(dAT) { const char hdr[] = "filename=\"filename=foo\" filename=\"quux.txt\""; const char *val; apr_size_t vlen; AT_int_eq(apreq_header_attribute(hdr+4, "name", 4, &val, &vlen), APR_SUCCESS); AT_int_eq(vlen, 12); AT_mem_eq("filename=foo", val, 12); AT_int_eq(apreq_header_attribute(hdr+4, "filename", 8, &val, &vlen), APR_SUCCESS); AT_int_eq(vlen, 8); AT_mem_eq("quux.txt", val, 8); } static void test_brigade_concat(dAT) { } #define dT(func, plan) #func, func, plan int main(int argc, char *argv[]) { unsigned i, plan = 0; apr_pool_t *p; dAT; at_test_t test_list [] = { { dT(test_atoi64f, 9) }, { dT(test_atoi64t, 9) }, { dT(test_index, 6) }, { dT(test_decode, 7) }, { dT(test_charset_divine, 6) }, { dT(test_decodev, 6) }, { dT(test_encode, 0) }, { dT(test_cp1252_to_utf8, 14) }, { dT(test_quote, 8) }, { dT(test_quote_once, 18), }, { dT(test_join, 0) }, { dT(test_brigade_fwrite, 0) }, { dT(test_file_mktemp, 0) }, { dT(test_header_attribute, 6) }, { dT(test_brigade_concat, 0) }, }; apr_initialize(); atexit(apr_terminate); apr_pool_create(&p, NULL); AT = at_create(p, 0, at_report_stdout_make(p)); for (i = 0; i < sizeof(test_list) / sizeof(at_test_t); ++i) plan += test_list[i].plan; AT_begin(plan); for (i = 0; i < sizeof(test_list) / sizeof(at_test_t); ++i) AT_run(&test_list[i]); AT_end(); return 0; } libapreq2-2.13/library/t/version.c0000644000076400017500000000361111473532340016055 0ustar issacissac/* ** 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. */ #include "apreq_version.h" #include "at.h" static void version_string(dAT) { const char *vstring = apreq_version_string(); AT_not_null(vstring); AT_str_eq(vstring, APREQ_VERSION_STRING); } static void version_type(dAT) { apr_version_t v; apreq_version(&v); AT_int_eq(v.major, APREQ_MAJOR_VERSION); AT_int_eq(v.minor, APREQ_MINOR_VERSION); AT_int_eq(v.patch, APREQ_PATCH_VERSION); #ifdef APREQ_IS_DEV_VERSION AT_int_eq(v.is_dev, 1); #else AT_int_eq(v.is_dev, 0); #endif } int main(int argc, char *argv[]) { apr_pool_t *p; unsigned i, plan = 0; dAT; at_test_t test_list [] = { {"version_string", version_string, 2, "1"}, {"version_type", version_type, 4} }; apr_initialize(); atexit(apr_terminate); apr_pool_create(&p, NULL); AT = at_create(p, 0, at_report_stdout_make(p)); for (i = 0; i < sizeof(test_list) / sizeof(at_test_t); ++i) plan += test_list[i].plan; AT_begin(plan); for (i = 0; i < sizeof(test_list) / sizeof(at_test_t); ++i) AT_run(&test_list[i]); AT_end(); return 0; } libapreq2-2.13/library/util.c0000644000076400017500000007341611473532340015114 0ustar issacissac/* ** 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. */ #include "apreq_util.h" #include "apreq_error.h" #include "apr_time.h" #include "apr_strings.h" #include "apr_lib.h" #include #undef MAX #undef MIN #define MIN(a,b) ( (a) < (b) ? (a) : (b) ) #define MAX(a,b) ( (a) > (b) ? (a) : (b) ) /* used for specifying file sizes */ APREQ_DECLARE(apr_int64_t) apreq_atoi64f(const char *s) { apr_int64_t n = 0; char *p; if (s == NULL) return 0; n = apr_strtoi64(s, &p, 0); if (p == NULL) return n; while (apr_isspace(*p)) ++p; switch (*p) { case 'G': /* fall thru */ case 'g': return n * 1024*1024*1024; case 'M': /* fall thru */ case 'm': return n * 1024*1024; case 'K': /* fall thru */ case 'k': return n * 1024; } return n; } /* converts date offsets (e.g. "+3M") to seconds */ APREQ_DECLARE(apr_int64_t) apreq_atoi64t(const char *s) { apr_int64_t n = 0; char *p; if (s == NULL) return 0; n = apr_strtoi64(s, &p, 0); /* XXX: what about overflow? */ if (p == NULL) return n; while (apr_isspace(*p)) ++p; switch (*p) { case 'Y': /* fall thru */ case 'y': return n * 60*60*24*365; case 'M': return n * 60*60*24*30; case 'D': /* fall thru */ case 'd': return n * 60*60*24; case 'H': /* fall thru */ case 'h': return n * 60*60; case 'm': return n * 60; case 's': /* fall thru */ default: return n; } /* should never get here */ return -1; } APREQ_DECLARE(apr_ssize_t ) apreq_index(const char* hay, apr_size_t hlen, const char* ndl, apr_size_t nlen, const apreq_match_t type) { apr_size_t len = hlen; const char *end = hay + hlen; const char *begin = hay; while ( (hay = memchr(hay, ndl[0], len)) ) { len = end - hay; /* done if matches up to capacity of buffer */ if ( memcmp(hay, ndl, MIN(nlen, len)) == 0 ) { if (type == APREQ_MATCH_FULL && len < nlen) hay = NULL; /* insufficient room for match */ break; } --len; ++hay; } return hay ? hay - begin : -1; } static const char c2x_table[] = "0123456789ABCDEF"; static APR_INLINE unsigned char hex2_to_char(const char *what) { register unsigned char digit; #if !APR_CHARSET_EBCDIC digit = (what[0] >= 'A' ? ((what[0] & 0xdf) - 'A') + 10 : (what[0] - '0')); digit *= 16; digit += (what[1] >= 'A' ? ((what[1] & 0xdf) - 'A') + 10 : (what[1] - '0')); #else /*APR_CHARSET_EBCDIC*/ char xstr[5]; xstr[0]='0'; xstr[1]='x'; xstr[2]=what[0]; xstr[3]=what[1]; xstr[4]='\0'; digit = apr_xlate_conv_byte(ap_hdrs_from_ascii, 0xFF & strtol(xstr, NULL, 16)); #endif /*APR_CHARSET_EBCDIC*/ return (digit); } /* Unicode notes: "bmp" refers to the 16-bit * Unicode Basic Multilingual Plane. Here we're * restricting our unicode internals to 16-bit * codepoints, to keep the code as simple as possible. * This should be sufficient for apreq itself, since * we really only need to validate RFC3986-encoded utf8. */ /* Converts Windows cp1252 to Unicode. */ static APR_INLINE apr_uint16_t cp1252_to_bmp(unsigned char c) { /* We only need to deal with iso-8859-1 control chars * in the 0x80 - 0x9F range. */ if ((c & 0xE0) != 0x80) return c; switch (c) { case 0x80: return 0x20AC; case 0x82: return 0x201A; case 0x83: return 0x192; case 0x84: return 0x201E; case 0x85: return 0x2026; case 0x86: return 0x2020; case 0x87: return 0x2021; case 0x88: return 0x2C6; case 0x89: return 0x2030; case 0x8A: return 0x160; case 0x8B: return 0x2039; case 0x8C: return 0x152; case 0x8E: return 0x17D; case 0x91: return 0x2018; case 0x92: return 0x2019; case 0x93: return 0x201C; case 0x94: return 0x201D; case 0x95: return 0x2022; case 0x96: return 0x2013; case 0x97: return 0x2014; case 0x98: return 0x2DC; case 0x99: return 0x2122; case 0x9A: return 0x161; case 0x9B: return 0x203A; case 0x9C: return 0x153; case 0x9E: return 0x17E; case 0x9F: return 0x178; } return c; } /* converts cp1252 to utf8 */ APREQ_DECLARE(apr_size_t) apreq_cp1252_to_utf8(char *dest, const char *src, apr_size_t slen) { const unsigned char *s = (unsigned const char *)src; const unsigned char *end = s + slen; unsigned char *d = (unsigned char *)dest; apr_uint16_t c; while (s < end) { c = cp1252_to_bmp(*s++); if (c < 0x80) { *d++ = c; } else if (c < 0x800) { *d++ = 0xC0 | (c >> 6); *d++ = 0x80 | (c & 0x3F); } else { *d++ = 0xE0 | (c >> 12); *d++ = 0x80 | ((c >> 6) & 0x3F); *d++ = 0x80 | (c & 0x3F); } } *d = 0; return d - (unsigned char *)dest; } /** * Valid utf8 bit patterns: (true utf8 must satisfy a minimality condition) * * 0aaaaaaa * 110bbbba 10aaaaaa minimality mask: 0x1E * 1110cccc 10cbbbba 10aaaaaa 0x0F || 0x20 * 11110ddd 10ddcccc 10cbbbba 10aaaaaa 0x07 || 0x30 * 111110ee 10eeeddd 10ddcccc 10cbbbba 10aaaaaa 0x03 || 0x38 * 1111110f 10ffffee 10eeeddd 10ddcccc 10cbbbba 10aaaaaa 0x01 || 0x3C * * Charset divination heuristics: * 1) presume ascii; if not, then * 2) presume utf8; if not, then * 3) presume latin1; unless there are control chars, in which case * 4) punt to cp1252. * * Note: in downgrading from 2 to 3, we need to be careful * about earlier control characters presumed to be valid utf8. */ APREQ_DECLARE(apreq_charset_t) apreq_charset_divine(const char *src, apr_size_t slen) { apreq_charset_t rv = APREQ_CHARSET_ASCII; register unsigned char trail = 0, saw_cntrl = 0, mask = 0; register const unsigned char *s = (const unsigned char *)src; const unsigned char *end = s + slen; for (; s < end; ++s) { if (trail) { if ((*s & 0xC0) == 0x80 && (mask == 0 || (mask & *s))) { mask = 0; --trail; if ((*s & 0xE0) == 0x80) { saw_cntrl = 1; } } else { trail = 0; if (saw_cntrl) return APREQ_CHARSET_CP1252; rv = APREQ_CHARSET_LATIN1; } } else if (*s < 0x80) { /* do nothing */ } else if (*s < 0xA0) { return APREQ_CHARSET_CP1252; } else if (*s < 0xC0) { if (saw_cntrl) return APREQ_CHARSET_CP1252; rv = APREQ_CHARSET_LATIN1; } else if (rv == APREQ_CHARSET_LATIN1) { /* do nothing */ } /* utf8 cases */ else if (*s < 0xE0) { if (*s & 0x1E) { rv = APREQ_CHARSET_UTF8; trail = 1; mask = 0; } else if (saw_cntrl) return APREQ_CHARSET_CP1252; else rv = APREQ_CHARSET_LATIN1; } else if (*s < 0xF0) { mask = (*s & 0x0F) ? 0 : 0x20; rv = APREQ_CHARSET_UTF8; trail = 2; } else if (*s < 0xF8) { mask = (*s & 0x07) ? 0 : 0x30; rv = APREQ_CHARSET_UTF8; trail = 3; } else if (*s < 0xFC) { mask = (*s & 0x03) ? 0 : 0x38; rv = APREQ_CHARSET_UTF8; trail = 4; } else if (*s < 0xFE) { mask = (*s & 0x01) ? 0 : 0x3C; rv = APREQ_CHARSET_UTF8; trail = 5; } else { rv = APREQ_CHARSET_UTF8; } } return trail ? saw_cntrl ? APREQ_CHARSET_CP1252 : APREQ_CHARSET_LATIN1 : rv; } static APR_INLINE apr_uint16_t hex4_to_bmp(const char *what) { register apr_uint16_t digit = 0; #if !APR_CHARSET_EBCDIC digit = (what[0] >= 'A' ? ((what[0] & 0xDF)-'A') + 10 : (what[0]-'0')); digit *= 16; digit += (what[1] >= 'A' ? ((what[1] & 0xDF)-'A') + 10 : (what[1]-'0')); digit *= 16; digit += (what[2] >= 'A' ? ((what[2] & 0xDF)-'A') + 10 : (what[2]-'0')); digit *= 16; digit += (what[3] >= 'A' ? ((what[3] & 0xDF)-'A') + 10 : (what[3]-'0')); #else /*APR_CHARSET_EBCDIC*/ char xstr[7]; xstr[0]='0'; xstr[1]='x'; xstr[2]=what[0]; xstr[3]=what[1]; xstr[4]=what[2]; xstr[5]=what[3]; xstr[6]='\0'; digit = apr_xlate_conv_byte(ap_hdrs_from_ascii, 0xFFFF & strtol(xstr, NULL, 16)); #endif /*APR_CHARSET_EBCDIC*/ return (digit); } static apr_status_t url_decode(char *dest, apr_size_t *dlen, const char *src, apr_size_t *slen) { register const char *s = src; unsigned char *start = (unsigned char *)dest; register unsigned char *d = (unsigned char *)dest; const char *end = src + *slen; for (; s < end; ++d, ++s) { switch (*s) { case '+': *d = ' '; break; case '%': if (s + 2 < end && apr_isxdigit(s[1]) && apr_isxdigit(s[2])) { *d = hex2_to_char(s + 1); s += 2; } else if (s + 5 < end && (s[1] == 'u' || s[1] == 'U') && apr_isxdigit(s[2]) && apr_isxdigit(s[3]) && apr_isxdigit(s[4]) && apr_isxdigit(s[5])) { apr_uint16_t c = hex4_to_bmp(s+2); if (c < 0x80) { *d = c; } else if (c < 0x800) { *d++ = 0xC0 | (c >> 6); *d = 0x80 | (c & 0x3F); } else { *d++ = 0xE0 | (c >> 12); *d++ = 0x80 | ((c >> 6) & 0x3F); *d = 0x80 | (c & 0x3F); } s += 5; } else { *dlen = d - start; *slen = s - src; if (s + 5 < end || (s + 2 < end && !apr_isxdigit(s[2])) || (s + 1 < end && !apr_isxdigit(s[1]) && s[1] != 'u' && s[1] != 'U')) { *d = 0; return APREQ_ERROR_BADSEQ; } memmove(d, s, end - s); d[end - s] = 0; return APR_INCOMPLETE; } break; default: if (*s > 0) { *d = *s; } else { *d = 0; *dlen = d - start; *slen = s - src; return APREQ_ERROR_BADCHAR; } } } *d = 0; *dlen = d - start; *slen = s - src; return APR_SUCCESS; } APREQ_DECLARE(apr_status_t) apreq_decode(char *d, apr_size_t *dlen, const char *s, apr_size_t slen) { apr_size_t len = 0; const char *end = s + slen; if (s == (const char *)d) { /* optimize for src = dest case */ for ( ; d < end; ++d) { if (*d == '%' || *d == '+') break; else if (*d == 0) { *dlen = (const char *)d - s; return APREQ_ERROR_BADCHAR; } } len = (const char *)d - s; s = (const char *)d; slen -= len; } return url_decode(d, dlen, s, &slen); } APREQ_DECLARE(apr_status_t) apreq_decodev(char *d, apr_size_t *dlen, struct iovec *v, int nelts) { apr_status_t status = APR_SUCCESS; int n = 0; *dlen = 0; while (n < nelts) { apr_size_t slen, len; slen = v[n].iov_len; switch (status = url_decode(d, &len, v[n].iov_base, &slen)) { case APR_SUCCESS: d += len; *dlen += len; ++n; continue; case APR_INCOMPLETE: d += len; *dlen += len; slen = v[n].iov_len - slen; if (++n == nelts) { return status; } memcpy(d + slen, v[n].iov_base, v[n].iov_len); v[n].iov_len += slen; v[n].iov_base = d; continue; default: *dlen += len; return status; } } return status; } APREQ_DECLARE(apr_size_t) apreq_encode(char *dest, const char *src, const apr_size_t slen) { char *d = dest; const unsigned char *s = (const unsigned char *)src; unsigned char c; for ( ; s < (const unsigned char *)src + slen; ++s) { c = *s; if ( c < 0x80 && (apr_isalnum(c) || c == '-' || c == '.' || c == '_' || c == '~') ) *d++ = c; else if ( c == ' ' ) *d++ = '+'; else { #if APR_CHARSET_EBCDIC c = apr_xlate_conv_byte(ap_hdrs_to_ascii, (unsigned char)c); #endif *d++ = '%'; *d++ = c2x_table[c >> 4]; *d++ = c2x_table[c & 0xf]; } } *d = 0; return d - dest; } static int is_quoted(const char *p, const apr_size_t len) { if (len > 1 && p[0] == '"' && p[len-1] == '"') { apr_size_t i; int backslash = 0; for (i = 1; i < len - 1; i++) { if (p[i] == '\\') backslash = !backslash; else if (p[i] == 0 || (p[i] == '"' && !backslash)) return 0; else backslash = 0; } return !backslash; } return 0; } APREQ_DECLARE(apr_size_t) apreq_quote_once(char *dest, const char *src, const apr_size_t slen) { if (is_quoted(src, slen)) { /* looks like src is already quoted */ memcpy(dest, src, slen); dest[slen] = 0; return slen; } else return apreq_quote(dest, src, slen); } APREQ_DECLARE(apr_size_t) apreq_quote(char *dest, const char *src, const apr_size_t slen) { char *d = dest; const char *s = src; const char *const last = src + slen - 1; if (slen == 0) { *d = 0; return 0; } *d++ = '"'; while (s <= last) { switch (*s) { case 0: *d++ = '\\'; *d++ = '0'; s++; break; case '\\': case '"': *d++ = '\\'; default: *d++ = *s++; } } *d++ = '"'; *d = 0; return d - dest; } APREQ_DECLARE(char *) apreq_join(apr_pool_t *p, const char *sep, const apr_array_header_t *arr, apreq_join_t mode) { apr_size_t len, slen; char *rv; const apreq_value_t **a = (const apreq_value_t **)arr->elts; char *d; const int n = arr->nelts; int j; slen = sep ? strlen(sep) : 0; if (n == 0) return apr_pstrdup(p, ""); for (j=0, len=0; j < n; ++j) len += a[j]->dlen + slen + 1; /* Allocated the required space */ switch (mode) { case APREQ_JOIN_ENCODE: len += 2 * len; break; case APREQ_JOIN_QUOTE: len = 2 * (len + n); break; case APREQ_JOIN_AS_IS: case APREQ_JOIN_DECODE: /* nothing special required, just here to keep noisy compilers happy */ break; } rv = apr_palloc(p, len); /* Pass two --- copy the argument strings into the result space */ d = rv; switch (mode) { case APREQ_JOIN_ENCODE: d += apreq_encode(d, a[0]->data, a[0]->dlen); for (j = 1; j < n; ++j) { memcpy(d, sep, slen); d += slen; d += apreq_encode(d, a[j]->data, a[j]->dlen); } break; case APREQ_JOIN_DECODE: if (apreq_decode(d, &len, a[0]->data, a[0]->dlen)) return NULL; else d += len; for (j = 1; j < n; ++j) { memcpy(d, sep, slen); d += slen; if (apreq_decode(d, &len, a[j]->data, a[j]->dlen)) return NULL; else d += len; } break; case APREQ_JOIN_QUOTE: d += apreq_quote_once(d, a[0]->data, a[0]->dlen); for (j = 1; j < n; ++j) { memcpy(d, sep, slen); d += slen; d += apreq_quote_once(d, a[j]->data, a[j]->dlen); } break; case APREQ_JOIN_AS_IS: memcpy(d,a[0]->data, a[0]->dlen); d += a[0]->dlen; for (j = 1; j < n ; ++j) { memcpy(d, sep, slen); d += slen; memcpy(d, a[j]->data, a[j]->dlen); d += a[j]->dlen; } break; } *d = 0; return rv; } /* * This is intentionally not apr_file_writev() * note, this is iterative and not recursive */ APR_INLINE static apr_status_t apreq_fwritev(apr_file_t *f, struct iovec *v, int *nelts, apr_size_t *bytes_written) { apr_size_t len; int n; apr_status_t s; *bytes_written = 0; while (1) { /* try to write */ s = apr_file_writev(f, v, *nelts, &len); *bytes_written += len; if (s != APR_SUCCESS) return s; /* see how far we've come */ n = 0; #ifdef SOLARIS2 # ifdef __GNUC__ /* * iovec.iov_len is a long here * which causes a comparison between * signed(long) and unsigned(apr_size_t) * */ while (n < *nelts && len >= (apr_size_t)v[n].iov_len) # else /* * Sun C however defines this as size_t which is unsigned * */ while (n < *nelts && len >= v[n].iov_len) # endif /* !__GNUC__ */ #else /* * Hopefully everything else does this * (this was the default for years) */ while (n < *nelts && len >= v[n].iov_len) #endif len -= v[n++].iov_len; if (n == *nelts) { /* nothing left to write, report success */ *nelts = 0; return APR_SUCCESS; } /* incomplete write: must shift v */ v[n].iov_len -= len; v[n].iov_base = (char *)(v[n].iov_base) + len; if (n > 0) { /* we're satisfied for now if we can remove one iovec from the "v" array */ (*nelts) -= n; memmove(v, v + n, sizeof(*v) * *nelts); return APR_SUCCESS; } /* we're still in the first iovec - check for endless loop, and then try again */ if (len == 0) return APREQ_ERROR_GENERAL; } } struct cleanup_data { const char *fname; apr_pool_t *pool; }; static apr_status_t apreq_file_cleanup(void *d) { struct cleanup_data *data = d; return apr_file_remove(data->fname, data->pool); } /* * The reason we need the above cleanup is because on Windows, APR_DELONCLOSE * forces applications to open the file with FILE_SHARED_DELETE * set, which is, unfortunately, a property that is preserved * across NTFS "hard" links. This breaks apps that link() the temp * file to a permanent location, and subsequently expect to open it * before the original tempfile is closed+deleted. In fact, even * Apache::Upload does this, so it is a common enough event that the * apreq_file_cleanup workaround is necessary. */ APREQ_DECLARE(apr_status_t) apreq_file_mktemp(apr_file_t **fp, apr_pool_t *pool, const char *path) { apr_status_t rc; char *tmpl; struct cleanup_data *data; apr_int32_t flag; if (path == NULL) { rc = apr_temp_dir_get(&path, pool); if (rc != APR_SUCCESS) return rc; } rc = apr_filepath_merge(&tmpl, path, "apreqXXXXXX", APR_FILEPATH_NOTRELATIVE, pool); if (rc != APR_SUCCESS) return rc; data = apr_palloc(pool, sizeof *data); /* cleanups are LIFO, so this one will run just after the cleanup set by mktemp */ apr_pool_cleanup_register(pool, data, apreq_file_cleanup, apreq_file_cleanup); /* NO APR_DELONCLOSE! see comment above */ flag = APR_CREATE | APR_READ | APR_WRITE | APR_EXCL | APR_BINARY; rc = apr_file_mktemp(fp, tmpl, flag, pool); if (rc == APR_SUCCESS) { apr_file_name_get(&data->fname, *fp); data->pool = pool; } else { apr_pool_cleanup_kill(pool, data, apreq_file_cleanup); } return rc; } /* * is_2616_token() is the verbatim definition from section 2.2 * in the rfc itself. We try to optimize it around the * expectation that the argument is not a token, which * should be the typical usage. */ static APR_INLINE unsigned is_2616_token(const char c) { switch (c) { case ' ': case ';': case ',': case '"': case '\t': /* The chars we are expecting are listed above; the chars below are just for completeness. */ case '?': case '=': case '@': case ':': case '\\': case '/': case '(': case ')': case '<': case '>': case '{': case '}': case '[': case ']': return 0; default: if (apr_iscntrl(c)) return 0; } return 1; } APREQ_DECLARE(apr_status_t) apreq_header_attribute(const char *hdr, const char *name, const apr_size_t nlen, const char **val, apr_size_t *vlen) { const char *key, *v; /* Must ensure first char isn't '=', so we can safely backstep. */ while (*hdr == '=') ++hdr; while ((key = strchr(hdr, '=')) != NULL) { v = key + 1; --key; while (apr_isspace(*key) && key > hdr + nlen) --key; key -= nlen - 1; while (apr_isspace(*v)) ++v; if (*v == '"') { ++v; *val = v; look_for_end_quote: switch (*v) { case '"': break; case 0: return APREQ_ERROR_BADSEQ; case '\\': if (v[1] != 0) ++v; default: ++v; goto look_for_end_quote; } } else { *val = v; look_for_terminator: switch (*v) { case 0: case ' ': case ';': case ',': case '\t': case '\r': case '\n': break; default: ++v; goto look_for_terminator; } } if (key >= hdr && strncasecmp(key, name, nlen) == 0) { *vlen = v - *val; if (key == hdr || ! is_2616_token(key[-1])) return APR_SUCCESS; } hdr = v; } return APREQ_ERROR_NOATTR; } #define BUCKET_IS_SPOOL(e) ((e)->type == &spool_bucket_type) #define FILE_BUCKET_LIMIT ((apr_size_t)-1 - 1) static void spool_bucket_destroy(void *data) { apr_bucket_type_file.destroy(data); } static apr_status_t spool_bucket_read(apr_bucket *e, const char **str, apr_size_t *len, apr_read_type_e block) { return apr_bucket_type_file.read(e, str, len, block); } static apr_status_t spool_bucket_setaside(apr_bucket *data, apr_pool_t *reqpool) { return apr_bucket_type_file.setaside(data, reqpool); } static apr_status_t spool_bucket_split(apr_bucket *a, apr_size_t point) { apr_status_t rv = apr_bucket_shared_split(a, point); a->type = &apr_bucket_type_file; return rv; } static apr_status_t spool_bucket_copy(apr_bucket *e, apr_bucket **c) { apr_status_t rv = apr_bucket_shared_copy(e, c); (*c)->type = &apr_bucket_type_file; return rv; } static const apr_bucket_type_t spool_bucket_type = { "APREQ_SPOOL", 5, APR_BUCKET_DATA, spool_bucket_destroy, spool_bucket_read, spool_bucket_setaside, spool_bucket_split, spool_bucket_copy, }; APREQ_DECLARE(apr_file_t *)apreq_brigade_spoolfile(apr_bucket_brigade *bb) { apr_bucket *last; last = APR_BRIGADE_LAST(bb); if (BUCKET_IS_SPOOL(last)) return ((apr_bucket_file *)last->data)->fd; return NULL; } APREQ_DECLARE(apr_status_t) apreq_brigade_concat(apr_pool_t *pool, const char *temp_dir, apr_size_t heap_limit, apr_bucket_brigade *out, apr_bucket_brigade *in) { apr_status_t s; apr_bucket_file *f; apr_off_t wlen; apr_file_t *file; apr_off_t in_len, out_len; apr_bucket *last_in, *last_out; last_out = APR_BRIGADE_LAST(out); if (APR_BUCKET_IS_EOS(last_out)) return APR_EOF; s = apr_brigade_length(out, 0, &out_len); if (s != APR_SUCCESS) return s; /* This cast, when out_len = -1, is intentional */ if ((apr_uint64_t)out_len < heap_limit) { s = apr_brigade_length(in, 0, &in_len); if (s != APR_SUCCESS) return s; /* This cast, when in_len = -1, is intentional */ if ((apr_uint64_t)in_len < heap_limit - (apr_uint64_t)out_len) { APR_BRIGADE_CONCAT(out, in); return APR_SUCCESS; } } if (!BUCKET_IS_SPOOL(last_out)) { s = apreq_file_mktemp(&file, pool, temp_dir); if (s != APR_SUCCESS) return s; s = apreq_brigade_fwrite(file, &wlen, out); if (s != APR_SUCCESS) return s; last_out = apr_bucket_file_create(file, wlen, 0, out->p, out->bucket_alloc); last_out->type = &spool_bucket_type; APR_BRIGADE_INSERT_TAIL(out, last_out); f = last_out->data; } else { f = last_out->data; /* Need to seek here, just in case our spool bucket * was read from between apreq_brigade_concat calls. */ wlen = last_out->start + last_out->length; s = apr_file_seek(f->fd, APR_SET, &wlen); if (s != APR_SUCCESS) return s; } if (in == out) return APR_SUCCESS; last_in = APR_BRIGADE_LAST(in); if (APR_BUCKET_IS_EOS(last_in)) APR_BUCKET_REMOVE(last_in); s = apreq_brigade_fwrite(f->fd, &wlen, in); if (s == APR_SUCCESS) { /* We have to deal with the possibility that the new * data may be too large to be represented by a single * temp_file bucket. */ while ((apr_uint64_t)wlen > FILE_BUCKET_LIMIT - last_out->length) { apr_bucket *e; apr_bucket_copy(last_out, &e); e->length = 0; e->start = last_out->start + FILE_BUCKET_LIMIT; wlen -= FILE_BUCKET_LIMIT - last_out->length; last_out->length = FILE_BUCKET_LIMIT; /* Copying makes the bucket types exactly the * opposite of what we need here. */ last_out->type = &apr_bucket_type_file; e->type = &spool_bucket_type; APR_BRIGADE_INSERT_TAIL(out, e); last_out = e; } last_out->length += wlen; if (APR_BUCKET_IS_EOS(last_in)) APR_BRIGADE_INSERT_TAIL(out, last_in); } else if (APR_BUCKET_IS_EOS(last_in)) APR_BRIGADE_INSERT_TAIL(in, last_in); apr_brigade_cleanup(in); return s; } APREQ_DECLARE(apr_status_t) apreq_brigade_fwrite(apr_file_t *f, apr_off_t *wlen, apr_bucket_brigade *bb) { struct iovec v[APREQ_DEFAULT_NELTS]; apr_status_t s; apr_bucket *e, *first; int n = 0; apr_bucket_brigade *tmp = bb; *wlen = 0; if (BUCKET_IS_SPOOL(APR_BRIGADE_LAST(bb))) { tmp = apr_brigade_create(bb->p, bb->bucket_alloc); s = apreq_brigade_copy(tmp, bb); if (s != APR_SUCCESS) return s; } for (e = APR_BRIGADE_FIRST(tmp); e != APR_BRIGADE_SENTINEL(tmp); e = APR_BUCKET_NEXT(e)) { apr_size_t len; if (n == APREQ_DEFAULT_NELTS) { s = apreq_fwritev(f, v, &n, &len); if (s != APR_SUCCESS) return s; if (tmp != bb) { while ((first = APR_BRIGADE_FIRST(tmp)) != e) apr_bucket_delete(first); } *wlen += len; } s = apr_bucket_read(e, (const char **)&(v[n].iov_base), &len, APR_BLOCK_READ); if (s != APR_SUCCESS) return s; v[n++].iov_len = len; } while (n > 0) { apr_size_t len; s = apreq_fwritev(f, v, &n, &len); if (s != APR_SUCCESS) return s; *wlen += len; if (tmp != bb) { while ((first = APR_BRIGADE_FIRST(tmp)) != e) apr_bucket_delete(first); } } return APR_SUCCESS; } libapreq2-2.13/library/version.c0000644000076400017500000000233011473532340015607 0ustar issacissac/* ** 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. */ #include "apreq_version.h" #include "apr_general.h" /* for APR_STRINGIFY */ APREQ_DECLARE(void) apreq_version(apr_version_t *pvsn) { pvsn->major = APREQ_MAJOR_VERSION; pvsn->minor = APREQ_MINOR_VERSION; pvsn->patch = APREQ_PATCH_VERSION; #ifdef APREQ_IS_DEV_VERSION pvsn->is_dev = 1; #else pvsn->is_dev = 0; #endif } APREQ_DECLARE(const char *) apreq_version_string(void) { return APREQ_VERSION_STRING; } libapreq2-2.13/LICENSE0000644000076400017500000002613611473532340013331 0ustar issacissac 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. libapreq2-2.13/ltmain.sh0000644000076400017500000060646711312064261014151 0ustar issacissac# ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun configure. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007, 2008 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. basename="s,^.*/,,g" # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" # The name of this program: progname=`echo "$progpath" | $SED $basename` modename="$progname" # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 PROGRAM=ltmain.sh PACKAGE=libtool VERSION="1.5.26 Debian 1.5.26-4+lenny1" TIMESTAMP=" (1.1220.2.493 2008/02/01 16:58:18)" # Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # Check that we have a working $echo. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec $SHELL "$progpath" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit $EXIT_FAILURE fi # Global variables. mode=$default_mode nonopt= prev= prevopt= run= show="$echo" show_help= execute_dlfiles= duplicate_deps=no preserve_args= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" extracted_archives= extracted_serial=0 ##################################### # Shell function definitions: # This seems to be the best place for them # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $mkdir "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || { $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 exit $EXIT_FAILURE } fi $echo "X$my_tmpdir" | $Xsed } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. func_win32_libid () { win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then win32_nmres=`eval $NM -f posix -A $1 | \ $SED -n -e '1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $echo $win32_libid_type } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac CC_quoted="$CC_quoted $arg" done case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac CC_quoted="$CC_quoted $arg" done case "$@ " in " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then $echo "$modename: unable to infer tagged configuration" $echo "$modename: specify a tag with \`--tag'" 1>&2 exit $EXIT_FAILURE # else # $echo "$modename: using $tagname tagged configuration" fi ;; esac fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 exit $EXIT_FAILURE fi } # func_extract_archives gentop oldlib ... func_extract_archives () { my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" my_status="" $show "${rm}r $my_gentop" $run ${rm}r "$my_gentop" $show "$mkdir $my_gentop" $run $mkdir "$my_gentop" my_status=$? if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then exit $my_status fi for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) extracted_serial=`expr $extracted_serial + 1` my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" $show "${rm}r $my_xdir" $run ${rm}r "$my_xdir" $show "$mkdir $my_xdir" $run $mkdir "$my_xdir" exit_status=$? if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then exit $exit_status fi case $host in *-darwin*) $show "Extracting $my_xabs" # Do not bother doing anything if just a dry run if test -z "$run"; then darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` if test -n "$darwin_arches"; then darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= $show "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we have a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` lipo -create -output "$darwin_file" $darwin_files done # $darwin_filelist ${rm}r unfat-$$ cd "$darwin_orig_dir" else cd "$darwin_orig_dir" func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches fi # $run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # End of Shell function definitions ##################################### # Darwin sucks eval std_shrext=\"$shrext_cmds\" disable_libs=no # Parse our command line options once, thoroughly. while test "$#" -gt 0 do arg="$1" shift case $arg in -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in execute_dlfiles) execute_dlfiles="$execute_dlfiles $arg" ;; tag) tagname="$arg" preserve_args="${preserve_args}=$arg" # Check whether tagname contains only valid characters case $tagname in *[!-_A-Za-z0-9,/]*) $echo "$progname: invalid tag name: $tagname" 1>&2 exit $EXIT_FAILURE ;; esac case $tagname in CC) # Don't test for the "default" C tag, as we know, it's there, but # not specially marked. ;; *) if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then taglist="$taglist $tagname" # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" else $echo "$progname: ignoring unknown tag $tagname" 1>&2 fi ;; esac ;; *) eval "$prev=\$arg" ;; esac prev= prevopt= continue fi # Have we seen a non-optional argument yet? case $arg in --help) show_help=yes ;; --version) echo "\ $PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP Copyright (C) 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." exit $? ;; --config) ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath # Now print the configurations for the tags. for tagname in $taglist; do ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" done exit $? ;; --debug) $echo "$progname: enabling shell trace mode" set -x preserve_args="$preserve_args $arg" ;; --dry-run | -n) run=: ;; --features) $echo "host: $host" if test "$build_libtool_libs" = yes; then $echo "enable shared libraries" else $echo "disable shared libraries" fi if test "$build_old_libs" = yes; then $echo "enable static libraries" else $echo "disable static libraries" fi exit $? ;; --finish) mode="finish" ;; --mode) prevopt="--mode" prev=mode ;; --mode=*) mode="$optarg" ;; --preserve-dup-deps) duplicate_deps="yes" ;; --quiet | --silent) show=: preserve_args="$preserve_args $arg" ;; --tag) prevopt="--tag" prev=tag preserve_args="$preserve_args --tag" ;; --tag=*) set tag "$optarg" ${1+"$@"} shift prev=tag preserve_args="$preserve_args --tag" ;; -dlopen) prevopt="-dlopen" prev=execute_dlfiles ;; -*) $echo "$modename: unrecognized option \`$arg'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; *) nonopt="$arg" break ;; esac done if test -n "$prevopt"; then $echo "$modename: option \`$prevopt' requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi case $disable_libs in no) ;; shared) build_libtool_libs=no build_old_libs=yes ;; static) build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` ;; esac # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= if test -z "$show_help"; then # Infer the operation mode. if test -z "$mode"; then $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 case $nonopt in *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) mode=link for arg do case $arg in -c) mode=compile break ;; esac done ;; *db | *dbx | *strace | *truss) mode=execute ;; *install*|cp|mv) mode=install ;; *rm) mode=uninstall ;; *) # If we have no mode, but dlfiles were specified, then do execute mode. test -n "$execute_dlfiles" && mode=execute # Just use the default operation mode. if test -z "$mode"; then if test -n "$nonopt"; then $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 else $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 fi fi ;; esac fi # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then $echo "$modename: unrecognized option \`-dlopen'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$modename --help --mode=$mode' for more information." # These modes are in order of execution frequency so that they run quickly. case $mode in # libtool compile mode compile) modename="$modename: compile" # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) if test -n "$libobj" ; then $echo "$modename: you cannot specify \`-o' more than once" 1>&2 exit $EXIT_FAILURE fi arg_mode=target continue ;; -static | -prefer-pic | -prefer-non-pic) later="$later $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac lastarg="$lastarg $arg" done IFS="$save_ifs" lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` # Add the arguments to base_compile. base_compile="$base_compile $lastarg" continue ;; * ) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` case $lastarg in # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, and some SunOS ksh mistreat backslash-escaping # in scan sets (worked around with variable expansion), # and furthermore cannot handle '|' '&' '(' ')' in scan sets # at all, so we specify them separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") lastarg="\"$lastarg\"" ;; esac base_compile="$base_compile $lastarg" done # for arg case $arg_mode in arg) $echo "$modename: you must specify an argument for -Xcompile" exit $EXIT_FAILURE ;; target) $echo "$modename: you must specify a target with \`-o'" 1>&2 exit $EXIT_FAILURE ;; *) # Get the name of the library object. [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo xform='[cCFSifmso]' case $libobj in *.ada) xform=ada ;; *.adb) xform=adb ;; *.ads) xform=ads ;; *.asm) xform=asm ;; *.c++) xform=c++ ;; *.cc) xform=cc ;; *.ii) xform=ii ;; *.class) xform=class ;; *.cpp) xform=cpp ;; *.cxx) xform=cxx ;; *.[fF][09]?) xform=[fF][09]. ;; *.for) xform=for ;; *.java) xform=java ;; *.obj) xform=obj ;; *.sx) xform=sx ;; esac libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` case $libobj in *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; *) $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 exit $EXIT_FAILURE ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -static) build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` case $qlibobj in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") qlibobj="\"$qlibobj\"" ;; esac test "X$libobj" != "X$qlibobj" \ && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir= else xdir=$xdir/ fi lobj=${xdir}$objdir/$objname if test -z "$base_compile"; then $echo "$modename: you must specify a compilation command" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi $run $rm $removelist trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" removelist="$removelist $output_obj $lockfile" trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $run ln "$progpath" "$lockfile" 2>/dev/null; do $show "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $echo "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi $echo "$srcfile" > "$lockfile" fi if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` case $qsrcfile in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") qsrcfile="\"$qsrcfile\"" ;; esac $run $rm "$libobj" "${libobj}T" # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then $echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then $show "$mv $output_obj $lobj" if $run $mv $output_obj $lobj; then : else error=$? $run $rm $removelist exit $error fi fi # Append the name of the PIC object to the libtool object file. test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then $echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then $show "$mv $output_obj $obj" if $run $mv $output_obj $obj; then : else error=$? $run $rm $removelist exit $error fi fi # Append the name of the non-PIC object the libtool object file. # Only append if the libtool object file exists. test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test ;; *) qarg=$arg ;; esac libtool_args="$libtool_args $qarg" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) compile_command="$compile_command @OUTPUT@" finalize_command="$finalize_command @OUTPUT@" ;; esac case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. compile_command="$compile_command @SYMFILE@" finalize_command="$finalize_command @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" if test ! -f "$arg"; then $echo "$modename: symbol file \`$arg' does not exist" exit $EXIT_FAILURE fi prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat $save_arg` do # moreargs="$moreargs $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then pic_object= non_pic_object= # Read the .lo file # If there is no directory component, then add one. case $arg in */* | *\\*) . $arg ;; *) . ./$arg ;; esac if test -z "$pic_object" || \ test -z "$non_pic_object" || test "$pic_object" = none && \ test "$non_pic_object" = none; then $echo "$modename: cannot find name of object for \`$arg'" 1>&2 exit $EXIT_FAILURE fi # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. libobjs="$libobjs $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object non_pic_objects="$non_pic_objects $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi else # Only an error if not doing a dry-run. if test -z "$run"; then $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 exit $EXIT_FAILURE else # Dry-run case. # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` libobjs="$libobjs $pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi fi done else $echo "$modename: link input file \`$save_arg' does not exist" exit $EXIT_FAILURE fi arg=$save_arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit $EXIT_FAILURE ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $wl$qarg" prev= compile_command="$compile_command $wl$qarg" finalize_command="$finalize_command $wl$qarg" continue ;; xcclinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; shrext) shrext_cmds="$arg" prev= continue ;; darwin_framework|darwin_framework_skip) test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" prev= continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then compile_command="$compile_command $link_static_flag" finalize_command="$finalize_command $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 continue ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: more than one -exported-symbols argument is not allowed" exit $EXIT_FAILURE fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework|-arch|-isysroot) case " $CC " in *" ${arg} ${1} "* | *" ${arg} ${1} "*) prev=darwin_framework_skip ;; *) compiler_flags="$compiler_flags $arg" prev=darwin_framework ;; esac compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" ;; esac continue ;; -L*) dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 absdir="$dir" notinst_path="$notinst_path $dir" fi dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; *) dllsearchpath="$dllsearchpath:$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework deplibs="$deplibs -framework System" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi deplibs="$deplibs $arg" continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. -model) compile_command="$compile_command $arg" compiler_flags="$compiler_flags $arg" finalize_command="$finalize_command $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) compiler_flags="$compiler_flags $arg" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -module) module=yes continue ;; # -64, -mips[0-9] enable 64-bit mode on the SGI compiler # -r[0-9][0-9]* specifies the processor on the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler # +DA*, +DD* enable 64-bit mode on the HP compiler # -q* pass through compiler args for the IBM compiler # -m* pass through architecture-specific compiler args for GCC # -m*, -t[45]*, -txscale* pass through architecture-specific # compiler args for GCC # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC # -F/path gives path to uninstalled frameworks, gcc on darwin # @file GCC response files -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" compiler_flags="$compiler_flags $arg" continue ;; -shrext) prev=shrext continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit $EXIT_FAILURE ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -Wc,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Wl,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $wl$flag" linker_flags="$linker_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # Some other compiler flag. -* | +*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; *.$objext) # A standard object. objs="$objs $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then pic_object= non_pic_object= # Read the .lo file # If there is no directory component, then add one. case $arg in */* | *\\*) . $arg ;; *) . ./$arg ;; esac if test -z "$pic_object" || \ test -z "$non_pic_object" || test "$pic_object" = none && \ test "$non_pic_object" = none; then $echo "$modename: cannot find name of object for \`$arg'" 1>&2 exit $EXIT_FAILURE fi # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. libobjs="$libobjs $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object non_pic_objects="$non_pic_objects $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi else # Only an error if not doing a dry-run. if test -z "$run"; then $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 exit $EXIT_FAILURE else # Dry-run case. # Extract subdirectory from the argument. xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$arg"; then xdir= else xdir="$xdir/" fi pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` libobjs="$libobjs $pic_object" non_pic_objects="$non_pic_objects $non_pic_object" fi fi ;; *.$libext) # An archive. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi done # argument parsing loop if test -n "$prev"; then $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi oldlibs= # calculate the name of the file, without its directory outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` if test "X$output_objdir" = "X$output"; then output_objdir="$objdir" else output_objdir="$output_objdir/$objdir" fi # Create the object directory. if test ! -d "$output_objdir"; then $show "$mkdir $output_objdir" $run $mkdir $output_objdir exit_status=$? if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then exit $exit_status fi fi # Determine the type of output case $output in "") $echo "$modename: you must specify an output file" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac case $host in *cygwin* | *mingw* | *pw32*) # don't eliminate duplications in $postdeps and $predeps duplicate_compiler_generated_deps=yes ;; *) duplicate_compiler_generated_deps=$duplicate_deps ;; esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if test "X$duplicate_deps" = "Xyes" ; then case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi libs="$libs $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; esac pre_post_deps="$pre_post_deps $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries case $linkmode in lib) passes="conv link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 exit $EXIT_FAILURE ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else compiler_flags="$compiler_flags $deplib" fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 continue fi name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then library_names= old_library= case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; *) $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` if eval $echo \"$deplib\" 2>/dev/null \ | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then $echo $echo "*** Warning: Trying to link with static lib archive $deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because the file extensions .$libext of this argument makes me believe" $echo "*** that it is just a static archive that I should not used here." else $echo $echo "*** Warning: Linking the shared library $output against the" $echo "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 exit $EXIT_FAILURE fi # Check to see that this really is a libtool archive. if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." dlname= dlopen= dlpreopen= libdir= library_names= old_library= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit $EXIT_FAILURE fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then $echo "$modename: \`$lib' is not a convenience library" 1>&2 exit $EXIT_FAILURE fi continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit $EXIT_FAILURE fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 exit $EXIT_FAILURE fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. dlprefiles="$dlprefiles $lib $dependency_libs" else newdlfiles="$newdlfiles $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 abs_ladir="$ladir" fi ;; esac laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then $echo "$modename: warning: library \`$lib' was moved." 1>&2 dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" fi fi # $installed = yes name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 exit $EXIT_FAILURE fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$newdlprefiles $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath " in *" $dir "*) ;; *" $absdir "*) ;; *) temp_rpath="$temp_rpath $absdir" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes ; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then if test "$installed" = no; then notinst_deplibs="$notinst_deplibs $lib" need_relink=yes fi # This is a shared library # Warn about portability, can't link against -module's on # some systems (darwin) if test "$shouldnotlink" = yes && test "$pass" = link ; then $echo if test "$linkmode" = prog; then $echo "*** Warning: Linking the executable $output against the loadable module" else $echo "*** Warning: Linking the shared library $output against the loadable module" fi $echo "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names realname="$2" shift; shift libname=`eval \\$echo \"$libname_spec\"` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw*) major=`expr $current - $age` versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" soname=`$echo $soroot | ${SED} -e 's/^.*\///'` newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else $show "extracting exported symbol list from \`$soname'" save_ifs="$IFS"; IFS='~' cmds=$extract_expsyms_cmds for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else $show "generating import library for \`$soname'" save_ifs="$IFS"; IFS='~' cmds=$old_archive_from_expsyms_cmds for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a module then we can not link against # it, someone is ignoring the new warnings I added if /usr/bin/file -L $add 2> /dev/null | $EGREP ": [^:]* bundle" >/dev/null ; then $echo "** Warning, lib $linklib is a module, not a shared library" if test -z "$old_library" ; then $echo $echo "** And there doesn't seem to be a static archive available" $echo "** The link will probably fail, sorry" else add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then $echo "$modename: configuration error: unsupported hardcode properties" exit $EXIT_FAILURE fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && \ test "$hardcode_minus_L" != yes && \ test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. $echo $echo "*** Warning: This system can not link to static lib archive $lib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then $echo "*** But as you try to build a module library, libtool will still create " $echo "*** a static module, that should work as long as the dlopening application" $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then $echo $echo "*** However, this would only work if libtool was able to extract symbol" $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" $echo "*** not find such a program. So, this module is probably useless." $echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` case " $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" if test "X$duplicate_deps" = "Xyes" ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do case $deplib in -L*) path="$deplib" ;; *.la) dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$deplib" && dir="." # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 absdir="$dir" fi ;; esac if grep "^installed=no" $deplib > /dev/null; then path="$absdir/$objdir" else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi if test "$absdir" != "$libdir"; then $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 fi path="$absdir" fi depdepl= case $host in *-*-darwin*) # we do not want to link against static libs, # but need to link against shared eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$deplibdir/$depdepl" ; then depdepl="$deplibdir/$depdepl" elif test -f "$path/$depdepl" ; then depdepl="$path/$depdepl" else # Can't find it, oh well... depdepl= fi # do not add paths which are already there case " $newlib_search_path " in *" $path "*) ;; *) newlib_search_path="$newlib_search_path $path";; esac fi path="" ;; *) path="-L$path" ;; esac ;; -l*) case $host in *-*-darwin*) # Again, we only want to link against shared libraries eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` for tmp in $newlib_search_path ; do if test -f "$tmp/lib$tmp_libs.dylib" ; then eval depdepl="$tmp/lib$tmp_libs.dylib" break fi done path="" ;; *) continue ;; esac ;; *) continue ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac case " $deplibs " in *" $depdepl "*) ;; *) deplibs="$depdepl $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then tmp_libs="$tmp_libs $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) case " $deplibs" in *\ -l* | *\ -L*) $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;; esac if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 fi if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 fi # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" objs="$objs$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) if test "$module" = no; then $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 exit $EXIT_FAILURE else $echo $echo "*** Warning: Linking the shared library $output against the non-libtool" $echo "*** objects $objs is not portable!" libobjs="$libobjs $objs" fi fi if test "$dlself" != no; then $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 fi set dummy $rpath if test "$#" -gt 2; then $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 fi install_libdir="$2" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 fi else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 IFS="$save_ifs" if test -n "$8"; then $echo "$modename: too many parameters to \`-version-info'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$2" number_minor="$3" number_revision="$4" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in darwin|linux|osf|windows|none) current=`expr $number_major + $number_minor` age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) current=`expr $number_major + $number_minor` age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; *) $echo "$modename: unknown library version type \`$version_type'" 1>&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit $EXIT_FAILURE ;; esac ;; no) current="$2" revision="$3" age="$4" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE ;; esac if test "$age" -gt "$current"; then $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit $EXIT_FAILURE fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header major=.`expr $current - $age` versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... minor_current=`expr $current + 1` xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current"; ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then major=`expr $current - $age` else major=`expr $current - $age + 1` fi case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do iface=`expr $revision - $loop` loop=`expr $loop - 1` verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) major=.`expr $current - $age` versuffix="$major.$age.$revision" ;; osf) major=.`expr $current - $age` versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do iface=`expr $current - $loop` loop=`expr $loop - 1` verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. major=`expr $current - $age` versuffix="-$major" ;; *) $echo "$modename: unknown library version type \`$version_type'" 1>&2 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit $EXIT_FAILURE ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi if test "$mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$echo "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi removelist="$removelist $p" ;; *) ;; esac done if test -n "$removelist"; then $show "${rm}r $removelist" $run ${rm}r $removelist fi fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) dlfiles="$dlfiles $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$deplibs -framework System" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then deplibs="$deplibs -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $rm conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null \ | grep " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ | ${SED} 10q \ | $EGREP "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $echo $echo "*** Warning: linker path does not have real file for library $a_deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $echo "*** with $libname but no candidates were found. (...for file magic test)" else $echo "*** with $libname and none of the candidates passed a file format test" $echo "*** using a file magic. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` for a_deplib in $deplibs; do name=`expr $a_deplib : '-l\(.*\)'` # If $name is empty we are operating on a -L argument. if test -n "$name" && test "$name" != "0"; then if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) newdeplibs="$newdeplibs $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval \\$echo \"$libname_spec\"` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval $echo \"$potent_lib\" 2>/dev/null \ | ${SED} 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $echo $echo "*** Warning: linker path does not have real file for library $a_deplib." $echo "*** I have the capability to make that library automatically link in when" $echo "*** you link to this library. But I can only do this if you have a" $echo "*** shared version of the library, which you do not appear to have" $echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $echo "*** with $libname but no candidates were found. (...for regex pattern test)" else $echo "*** with $libname and none of the candidates passed a file format test" $echo "*** using a regex pattern. Last file checked: $potlib" fi fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ -e 's/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` done fi if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ | grep . >/dev/null; then $echo if test "X$deplibs_check_method" = "Xnone"; then $echo "*** Warning: inter-library dependencies are not supported in this platform." else $echo "*** Warning: inter-library dependencies are not known to be supported." fi $echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then $echo $echo "*** Warning: libtool could not satisfy all declared inter-library" $echo "*** dependencies of module $libname. Therefore, libtool will create" $echo "*** a static module, that should work as long as the dlopening" $echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then $echo $echo "*** However, this would only work if libtool was able to extract symbol" $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" $echo "*** not find such a program. So, this module is probably useless." $echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else $echo "*** The inter-library dependencies that have been dropped here will be" $echo "*** automatically added whenever a program is linked with this library" $echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then $echo $echo "*** Since this library must not contain undefined symbols," $echo "*** because either the platform does not support them or" $echo "*** it was explicitly requested with -no-undefined," $echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" if test -n "$hardcode_libdir_flag_spec_ld"; then case $archive_cmds in *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; esac else eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names realname="$2" shift; shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do linknames="$linknames $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" if len=`expr "X$cmd" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then $show "$cmd" $run eval "$cmd" || exit $? skipped_export=false else # The command line is too long to execute in one step. $show "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex"; then $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' $show "$mv \"${export_symbols}T\" \"$export_symbols\"" $run eval '$mv "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) tmp_deplibs="$tmp_deplibs $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" else gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $convenience libobjs="$libobjs $func_extract_archives_result" fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*" 2>/dev/null` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise. $echo "creating reloadable object files..." # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output output_la=`$echo "X$output" | $Xsed -e "$basename"` # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= delfiles= last_robj= k=1 output=$output_objdir/$output_la-${k}.$objext # Loop over the list of objects to be linked. for obj in $save_libobjs do eval test_cmds=\"$reload_cmds $objlist $last_robj\" if test "X$objlist" = X || { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && test "$len" -le "$max_cmd_len"; }; then objlist="$objlist $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. eval concat_cmds=\"$reload_cmds $objlist $last_robj\" else # All subsequent reloadable object files will link in # the last one created. eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext k=`expr $k + 1` output=$output_objdir/$output_la-${k}.$objext objlist=$obj len=1 fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" if ${skipped_export-false}; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols libobjs=$output # Append the command to create the export file. eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" fi # Set up a command to remove the reloadable object files # after they are used. i=0 while test "$i" -lt "$k" do i=`expr $i + 1` delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" done $echo "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi # Append the command to remove the reloadable object files # to the just-reset $cmds. eval cmds=\"\$cmds~\$rm $delfiles\" fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then $show "${rm}r $gentop" $run ${rm}r "$gentop" fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) case " $deplibs" in *\ -l* | *\ -L*) $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;; esac if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 fi case $output in *.lo) if test -n "$objs$old_deplibs"; then $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 exit $EXIT_FAILURE fi libobj="$output" obj=`$echo "X$output" | $Xsed -e "$lo2o"` ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $run $rm $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` else gentop="$output_objdir/${obj}x" generated="$generated $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # Create the old-style object. reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" cmds=$reload_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $run eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" cmds=$reload_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; esac if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 fi if test "$preload" = yes; then if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && test "$dlopen_self_static" = unknown; then $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." fi fi case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac case $host in *darwin*) # Don't allow lazy linking, it breaks C++ global constructors if test "$tagname" = CXX ; then compile_command="$compile_command ${wl}-bind_at_load" finalize_command="$finalize_command ${wl}-bind_at_load" fi ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done compile_deplibs="$new_libs" compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; *) dllsearchpath="$dllsearchpath:$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then dlsyms="${outputname}S.c" else $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 fi fi if test -n "$dlsyms"; then case $dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${outputname}.nm" $show "$rm $nlist ${nlist}S ${nlist}T" $run $rm "$nlist" "${nlist}S" "${nlist}T" # Parse the name list into a source file. $show "creating $output_objdir/$dlsyms" test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ #ifdef __cplusplus extern \"C\" { #endif /* Prevent the only kind of declaration conflicts we can make. */ #define lt_preloaded_symbols some_other_symbol /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then $show "generating symbol list for \`$output'" test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for arg in $progfiles; do $show "extracting global C symbols from \`$arg'" $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi if test -n "$export_symbols_regex"; then $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $run $rm $export_symbols $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* ) $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac else $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' $run eval 'mv "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* ) $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac fi fi for arg in $dlprefiles; do $show "extracting global C symbols from \`$arg'" name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` $run eval '$echo ": $name " >> "$nlist"' $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -z "$run"; then # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $mv "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if grep -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else grep -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' else $echo '/* NONE */' >> "$output_objdir/$dlsyms" fi $echo >> "$output_objdir/$dlsyms" "\ #undef lt_preloaded_symbols #if defined (__STDC__) && __STDC__ # define lt_ptr void * #else # define lt_ptr char * # define const #endif /* The mapping between symbol names and symbols. */ " case $host in *cygwin* | *mingw* ) $echo >> "$output_objdir/$dlsyms" "\ /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs */ struct { " ;; * ) $echo >> "$output_objdir/$dlsyms" "\ const struct { " ;; esac $echo >> "$output_objdir/$dlsyms" "\ const char *name; lt_ptr address; } lt_preloaded_symbols[] = {\ " eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" $echo >> "$output_objdir/$dlsyms" "\ {0, (lt_ptr) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " fi pic_flag_for_symtable= case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; esac;; *-*-hpux*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag";; esac esac # Now compile the dynamic symbol file. $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? # Clean up the generated files. $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" # Transform the symbol file into the correct name. case $host in *cygwin* | *mingw* ) if test -f "$output_objdir/${outputname}.def" ; then compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` else compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` fi ;; * ) compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` ;; esac ;; *) $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 exit $EXIT_FAILURE ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` fi if test "$need_relink" = no || test "$build_libtool_libs" != yes; then # Replace the output file specification. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. $show "$link_command" $run eval "$link_command" exit_status=$? # Delete the generated files. if test -n "$dlsyms"; then $show "$rm $output_objdir/${outputname}S.${objext}" $run $rm "$output_objdir/${outputname}S.${objext}" fi exit $exit_status fi if test -n "$shlibpath_var"; then # We should set the shlibpath_var rpath= for dir in $temp_rpath; do case $dir in [\\/]* | [A-Za-z]:[\\/]*) # Absolute path. rpath="$rpath$dir:" ;; *) # Relative path: add a thisdir entry. rpath="$rpath\$thisdir/$dir:" ;; esac done temp_rpath="$rpath" fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $run $rm $output # Link the executable and exit $show "$link_command" $run eval "$link_command" || exit $? exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 $echo "$modename: \`$output' will be relinked during installation" 1>&2 else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname $show "$link_command" $run eval "$link_command" || exit $? # Now create the wrapper script. $show "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` fi # Quote $echo for shipping. if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then case $progpath in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; esac qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if our run command is non-null. if test -z "$run"; then # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) output_name=`basename $output` output_path=`dirname $output` cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $rm $cwrappersource $cwrapper trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 cat > $cwrappersource <> $cwrappersource<<"EOF" #include #include #include #include #include #include #include #include #include #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) /* -DDEBUG is fairly common in CFLAGS. */ #undef DEBUG #if defined DEBUGWRAPPER # define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) #else # define DEBUG(format, ...) #endif const char *program_name = NULL; void * xmalloc (size_t num); char * xstrdup (const char *string); const char * base_name (const char *name); char * find_executable(const char *wrapper); int check_executable(const char *path); char * strendzap(char *str, const char *pat); void lt_fatal (const char *message, ...); int main (int argc, char *argv[]) { char **newargz; int i; program_name = (char *) xstrdup (base_name (argv[0])); DEBUG("(main) argv[0] : %s\n",argv[0]); DEBUG("(main) program_name : %s\n",program_name); newargz = XMALLOC(char *, argc+2); EOF cat >> $cwrappersource <> $cwrappersource <<"EOF" newargz[1] = find_executable(argv[0]); if (newargz[1] == NULL) lt_fatal("Couldn't find %s", argv[0]); DEBUG("(main) found exe at : %s\n",newargz[1]); /* we know the script has the same name, without the .exe */ /* so make sure newargz[1] doesn't end in .exe */ strendzap(newargz[1],".exe"); for (i = 1; i < argc; i++) newargz[i+1] = xstrdup(argv[i]); newargz[argc+1] = NULL; for (i=0; i> $cwrappersource <> $cwrappersource <> $cwrappersource <<"EOF" return 127; } void * xmalloc (size_t num) { void * p = (void *) malloc (num); if (!p) lt_fatal ("Memory exhausted"); return p; } char * xstrdup (const char *string) { return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL ; } const char * base_name (const char *name) { const char *base; #if defined (HAVE_DOS_BASED_FILE_SYSTEM) /* Skip over the disk name in MSDOS pathnames. */ if (isalpha ((unsigned char)name[0]) && name[1] == ':') name += 2; #endif for (base = name; *name; name++) if (IS_DIR_SEPARATOR (*name)) base = name + 1; return base; } int check_executable(const char * path) { struct stat st; DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); if ((!path) || (!*path)) return 0; if ((stat (path, &st) >= 0) && ( /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ #if defined (S_IXOTH) ((st.st_mode & S_IXOTH) == S_IXOTH) || #endif #if defined (S_IXGRP) ((st.st_mode & S_IXGRP) == S_IXGRP) || #endif ((st.st_mode & S_IXUSR) == S_IXUSR)) ) return 1; else return 0; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise */ char * find_executable (const char* wrapper) { int has_slash = 0; const char* p; const char* p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char* concat_name; DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable(concat_name)) return concat_name; XFREE(concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable(concat_name)) return concat_name; XFREE(concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char* path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char* q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR(*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); tmp_len = strlen(tmp); concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable(concat_name)) return concat_name; XFREE(concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); tmp_len = strlen(tmp); concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable(concat_name)) return concat_name; XFREE(concat_name); return NULL; } char * strendzap(char *str, const char *pat) { size_t len, patlen; assert(str != NULL); assert(pat != NULL); len = strlen(str); patlen = strlen(pat); if (patlen <= len) { str += len - patlen; if (strcmp(str, pat) == 0) *str = '\0'; } return str; } static void lt_error_core (int exit_status, const char * mode, const char * message, va_list ap) { fprintf (stderr, "%s: %s: ", program_name, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, "FATAL", message, ap); va_end (ap); } EOF # we should really use a build-platform specific compiler # here, but OTOH, the wrappers (shell script and this C one) # are only useful if you want to execute the "real" binary. # Since the "real" binary is built for $host, then this # wrapper might as well be built for $host, too. $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource ;; esac $rm $output trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 $echo > $output "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variable: notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$echo are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then echo=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then # Yippee, \$echo works! : else # Restart under the correct shell, and then maybe \$echo will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $echo >> $output "\ # Find the directory that this script lives in. thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` done # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $echo >> $output "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || \\ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $mkdir \"\$progdir\" else $rm \"\$progdir/\$file\" fi" $echo >> $output "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $echo \"\$relink_command_output\" >&2 $rm \"\$progdir/\$file\" exit $EXIT_FAILURE fi fi $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $rm \"\$progdir/\$program\"; $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } $rm \"\$progdir/\$file\" fi" else $echo >> $output "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $echo >> $output "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $echo >> $output "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $echo >> $output "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $echo >> $output "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2*) $echo >> $output "\ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $echo >> $output "\ exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $echo >> $output "\ \$echo \"\$0: cannot exec \$program \$*\" exit $EXIT_FAILURE fi else # The program doesn't exist. \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$echo \"This script is just a wrapper for \$program.\" 1>&2 $echo \"See the $PACKAGE documentation for more information.\" 1>&2 exit $EXIT_FAILURE fi fi\ " chmod +x $output fi exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $addlibs oldobjs="$oldobjs $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do $echo "X$obj" | $Xsed -e 's%^.*/%%' done | sort | sort -uc >/dev/null 2>&1); then : else $echo "copying selected object files to avoid basename conflicts..." if test -z "$gentop"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "$mkdir $gentop" $run $mkdir "$gentop" exit_status=$? if test "$exit_status" -ne 0 && test ! -d "$gentop"; then exit $exit_status fi fi save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase counter=`expr $counter + 1` case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" $run ln "$obj" "$gentop/$newobj" || $run cp "$obj" "$gentop/$newobj" oldobjs="$oldobjs $gentop/$newobj" ;; *) oldobjs="$oldobjs $obj" ;; esac done fi eval cmds=\"$old_archive_cmds\" if len=`expr "X$cmds" : ".*"` && test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts $echo "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done for obj in $save_oldobjs do oldobjs="$objlist $obj" objlist="$objlist $obj" eval test_cmds=\"$old_archive_cmds\" if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && test "$len" -le "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do eval cmd=\"$cmd\" IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$generated"; then $show "${rm}r$generated" $run ${rm}r$generated fi # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" $show "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. if test -z "$run"; then for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$newdependency_libs $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdlfiles="$newdlfiles $libdir/$name" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit $EXIT_FAILURE fi newdlprefiles="$newdlprefiles $libdir/$name" done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlfiles="$newdlfiles $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlprefiles="$newdlprefiles $abs" done dlprefiles="$newdlprefiles" fi $rm $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $echo > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $echo >> $output "\ relink_command=\"$relink_command\"" fi done fi # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? ;; esac exit $EXIT_SUCCESS ;; # libtool install mode install) modename="$modename: install" # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $echo "X$nonopt" | grep shtool > /dev/null; then # Aesthetically quote it. arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac install_prog="$arg " arg="$1" shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac install_prog="$install_prog$arg" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) case " $install_prog " in *[\\\ /]cp\ *) ;; *) prev=$arg ;; esac ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac install_prog="$install_prog $arg" done if test -z "$install_prog"; then $echo "$modename: you must specify an install program" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test -n "$prev"; then $echo "$modename: the \`$prev' option requires an argument" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi if test -z "$files"; then if test -z "$dest"; then $echo "$modename: no file or destination specified" 1>&2 else $echo "$modename: you must specify a destination" 1>&2 fi $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Strip any trailing slash from the destination. dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` test "X$destdir" = "X$dest" && destdir=. destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` # Not a directory, so check to see that there is only one file specified. set dummy $files if test "$#" -gt 2; then $echo "$modename: \`$dest' is not a directory" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi library_names= old_library= relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ test "X$dir" = "X$file/" && dir= dir="$dir$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. if test "$inst_prefix_dir" = "$destdir"; then $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 exit $EXIT_FAILURE fi if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` else relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` fi $echo "$modename: warning: relinking \`$file'" 1>&2 $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 exit $EXIT_FAILURE fi fi # See the names of the shared library. set dummy $library_names if test -n "$2"; then realname="$2" shift shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. $show "$install_prog $dir/$srcname $destdir/$realname" $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? if test -n "$stripme" && test -n "$striplib"; then $show "$striplib $destdir/$realname" $run eval "$striplib $destdir/$realname" || exit $? fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do if test "$linkname" != "$realname"; then $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" fi done fi # Do each command in the postinstall commands. lib="$destdir/$realname" cmds=$postinstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' fi exit $lt_exit } done IFS="$save_ifs" fi # Install the pseudo-library for information purposes. name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` instname="$dir/$name"i $show "$install_prog $instname $destdir/$name" $run eval "$install_prog $instname $destdir/$name" || exit $? # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` ;; *.$objext) staticdest="$destfile" destfile= ;; *) $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac # Install the libtool object if requested. if test -n "$destfile"; then $show "$install_prog $file $destfile" $run eval "$install_prog $file $destfile" || exit $? fi # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` $show "$install_prog $staticobj $staticdest" $run eval "$install_prog \$staticobj \$staticdest" || exit $? fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then file=`$echo $file|${SED} 's,.exe$,,'` stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin*|*mingw*) wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` ;; *) wrapper=$file ;; esac if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then notinst_deplibs= relink_command= # Note that it is not necessary on cygwin/mingw to append a dot to # foo even if both foo and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. # # If there is no directory component, then add one. case $wrapper in */* | *\\*) . ${wrapper} ;; *) . ./${wrapper} ;; esac # Check the variables that should have been set. if test -z "$notinst_deplibs"; then $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 exit $EXIT_FAILURE fi finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then # If there is no directory component, then add one. case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac fi libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 finalize=no fi done relink_command= # Note that it is not necessary on cygwin/mingw to append a dot to # foo even if both foo and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. # # If there is no directory component, then add one. case $wrapper in */* | *\\*) . ${wrapper} ;; *) . ./${wrapper} ;; esac outputname= if test "$fast_install" = no && test -n "$relink_command"; then if test "$finalize" = yes && test -z "$run"; then tmpdir=`func_mktempdir` file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 ${rm}r "$tmpdir" continue fi file="$outputname" else $echo "$modename: warning: cannot relink \`$file'" 1>&2 fi else # Install the binary that we compiled earlier. file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` ;; esac ;; esac $show "$install_prog$stripme $file $destfile" $run eval "$install_prog\$stripme \$file \$destfile" || exit $? test -n "$outputname" && ${rm}r "$tmpdir" ;; esac done for file in $staticlibs; do name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` # Set up the ranlib parameters. oldlib="$destdir/$name" $show "$install_prog $file $oldlib" $run eval "$install_prog \$file \$oldlib" || exit $? if test -n "$stripme" && test -n "$old_striplib"; then $show "$old_striplib $oldlib" $run eval "$old_striplib $oldlib" || exit $? fi # Do each command in the postinstall commands. cmds=$old_postinstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$future_libdirs"; then $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 fi if test -n "$current_libdirs"; then # Maybe just do a dry run. test -n "$run" && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi ;; # libtool finish mode finish) modename="$modename: finish" libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. cmds=$finish_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" || admincmds="$admincmds $cmd" done IFS="$save_ifs" fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $run eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. test "$show" = : && exit $EXIT_SUCCESS $echo "X----------------------------------------------------------------------" | $Xsed $echo "Libraries have been installed in:" for libdir in $libdirs; do $echo " $libdir" done $echo $echo "If you ever happen to want to link against installed libraries" $echo "in a given directory, LIBDIR, you must either use libtool, and" $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" $echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" $echo " during execution" fi if test -n "$runpath_var"; then $echo " - add LIBDIR to the \`$runpath_var' environment variable" $echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $echo " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $echo " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi $echo $echo "See any operating system documentation about shared libraries for" $echo "more information, such as the ld(1) and ld.so(8) manual pages." $echo "X----------------------------------------------------------------------" | $Xsed exit $EXIT_SUCCESS ;; # libtool execute mode execute) modename="$modename: execute" # The first argument is the command name. cmd="$nonopt" if test -z "$cmd"; then $echo "$modename: you must specify a COMMAND" 1>&2 $echo "$help" exit $EXIT_FAILURE fi # Handle -dlopen flags immediately. for file in $execute_dlfiles; do if test ! -f "$file"; then $echo "$modename: \`$file' is not a file" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi dir= case $file in *.la) # Check to see that this really is a libtool archive. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi # Read the libtool library. dlname= library_names= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" continue fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else if test ! -f "$dir/$dlname"; then $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 exit $EXIT_FAILURE fi fi ;; *.lo) # Just add the directory containing the .lo file. dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. ;; *) $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` args="$args \"$file\"" done if test -z "$run"; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" $echo "export $shlibpath_var" fi $echo "$cmd$args" exit $EXIT_SUCCESS fi ;; # libtool clean and uninstall mode clean | uninstall) modename="$modename: $mode" rm="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) rm="$rm $arg"; rmforce=yes ;; -*) rm="$rm $arg" ;; *) files="$files $arg" ;; esac done if test -z "$rm"; then $echo "$modename: you must specify an RM program" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE fi rmdirs= origobjdir="$objdir" for file in $files; do dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$file"; then dir=. objdir="$origobjdir" else objdir="$dir/$origobjdir" fi name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` test "$mode" = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test "$mode" = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if (test -L "$file") >/dev/null 2>&1 \ || (test -h "$file") >/dev/null 2>&1 \ || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then . $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" case "$mode" in clean) case " $library_names " in # " " in the beginning catches empty $dlname *" $dlname "*) ;; *) rmfiles="$rmfiles $objdir/$dlname" ;; esac test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. cmds=$postuninstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. cmds=$old_postuninstall_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $show "$cmd" $run eval "$cmd" if test "$?" -ne 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # Read the .lo file . $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" \ && test "$pic_object" != none; then rmfiles="$rmfiles $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" \ && test "$non_pic_object" != none; then rmfiles="$rmfiles $dir/$non_pic_object" fi fi ;; *) if test "$mode" = clean ; then noexename=$name case $file in *.exe) file=`$echo $file|${SED} 's,.exe$,,'` noexename=`$echo $name|${SED} 's,.exe$,,'` # $file with .exe has already been added to rmfiles, # add $file without .exe rmfiles="$rmfiles $file" ;; esac # Do a test to see if this is a libtool program. if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then relink_command= . $dir/$noexename # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi if test "X$noexename" != "X$name" ; then rmfiles="$rmfiles $objdir/lt-${noexename}.c" fi fi fi ;; esac $show "$rm $rmfiles" $run $rm $rmfiles || exit_status=1 done objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then $show "rmdir $dir" $run rmdir $dir >/dev/null 2>&1 fi done exit $exit_status ;; "") $echo "$modename: you must specify a MODE" 1>&2 $echo "$generic_help" 1>&2 exit $EXIT_FAILURE ;; esac if test -z "$exec_cmd"; then $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$generic_help" 1>&2 exit $EXIT_FAILURE fi fi # test -z "$show_help" if test -n "$exec_cmd"; then eval exec $exec_cmd exit $EXIT_FAILURE fi # We need to display help for each of the modes. case $mode in "") $echo \ "Usage: $modename [OPTION]... [MODE-ARG]... Provide generalized library-building support services. --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --finish same as \`--mode=finish' --help display this help message and exit --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] --quiet same as \`--silent' --silent don't print informational messages --tag=TAG use configuration variables from tag TAG --version print version information MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for a more detailed description of MODE. Report bugs to ." exit $EXIT_SUCCESS ;; clean) $echo \ "Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $echo \ "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -prefer-pic try to building PIC objects only -prefer-non-pic try to building non-PIC objects only -static always build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $echo \ "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $echo \ "Usage: $modename [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $echo \ "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $echo \ "Usage: $modename [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $echo \ "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$help" 1>&2 exit $EXIT_FAILURE ;; esac $echo $echo "Try \`$modename --help' for more information about other modes." exit $? # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared disable_libs=shared # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static disable_libs=static # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: libapreq2-2.13/Makefile.am0000644000076400017500000001167711473532340014364 0ustar issacissac# The following is a trick to get CPAN clients to follow prerequisites: # # PREREQ_PM # # --- MakeMaker post_initialize section: AUTOMAKE_OPTIONS = foreign SUBDIRS = . include library module glue EXTRA_DIST = LICENSE NOTICE README INSTALL CHANGES STATUS FAQ.pod MANIFEST.SKIP Makefile.PL buildconf build win32 docs libapreq.rc APU_SRCDIR=`@APU_CONFIG@ --srcdir` APR_SRCDIR=`@APR_CONFIG@ --srcdir` APU_DOX = (cd $(APU_SRCDIR); cat docs/doxygen.conf - | doxygen -) APR_DOX = (cd $(APR_SRCDIR); cat docs/doxygen.conf - | doxygen -) SED_BODY_TAG= s(^[\S\s]+[\S\s]+$$)()gi, \ s(href="/Apache2(?:/\w+)*/([^/]+).html")(href="group__apreq__xs__\L$$1.html")g, \ s(href="/APR/Request/Param/(?:Table|Cookie).html")(href="group__apreq__xs__apr__request.html")g, \ s(href="/APR/Request.html")(href="group__apreq__xs__apr__request.html")g, \ s(href="/APR/Request/([^/]+).html")(href="group__apreq__xs__apr__request__\L$$1.html")g, \ s(href="/APR/Brigade.html")(href="http://apr.apache.org/docs/apr-util/$(APU_DOC_VERSION)/apr__buckets_8h.html")g, \ s(href="/APR/([^/]+).html")(href="http://apr.apache.org/docs/apr/$(APR_DOC_VERSION)/apr__\L$$1s_8h.html")g EUM=ExtUtils::Manifest PM_DIR=glue/perl/lib/Apache2 XS_DIR=glue/perl/xsbuilder/APR bin_SCRIPTS = apreq2-config CLEANFILES = $(bin_SCRIPTS) POD2HTML = @PERL@ -MPod::Html -wle 'pod2html @ARGV' if BUILD_PERL_GLUE PERL_TEST = perl_test else PERL_TEST = endif TAR=@TAR@ release: distclean docs_clean reconfig distdir @PERL@ build/version_check.pl > $(distdir)/PREREQUISITES @PERL@ build/version_check.pl -version=@PACKAGE_VERSION@ > $(distdir)/META.yml echo MANIFEST > $(distdir)/MANIFEST @cd $(distdir); @PERL@ -M$(EUM) -e "$(EUM)::mkmanifest" @PERL@ -ple '$$_="$(distdir)/$$_"' $(distdir)/MANIFEST | $(TAR) -czf $(distdir).tar.gz -T - rm -rf $(distdir) @echo "Made $(distdir).tar.gz" release_test: -rm -rf $(distdir) if [ ! -x $(TAR) ]; then echo "$(TAR) is not executable."; fi $(TAR) xzvf $(distdir).tar.gz @cd $(distdir); @PERL@ -M$(EUM) -e "die 'Bogus MANIFEST' if $(EUM)::manicheck" @cd $(distdir); @PERL@ Makefile.PL -apxs @APACHE2_APXS@ && $(MAKE) test rm -rf $(distdir) @echo "$(distdir).tar.gz is kosher." reconfig: ./buildconf.nice ./config.nice docs_clean: -rm -rf docs -rm -rf *.html pod2*.tmp docs: pod2html build/doxygen.conf apr_tags docs/html/feather.gif @PERL@ build/version_check.pl doxygen doxygen build/doxygen.conf docs_install: docs @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgdatadir) cp *.html docs/html cp -R docs $(DESTDIR)$(pkgdatadir) %.html: $(POD_DIR)/%.pm Makefile.am ${POD2HTML} < $< | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > $@ Apache2__Request.html: $(PM_DIR)/Request.pm ${POD2HTML} < $< | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > $@ Apache2__Upload.html: $(PM_DIR)/Upload.pm ${POD2HTML} < $< | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > $@ Apache2__Cookie.html: $(PM_DIR)/Cookie.pm ${POD2HTML} < $< | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > $@ APR__Request.html: $(XS_DIR)/Request/Request.pod ${POD2HTML} < $< | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > $@ APR__Request__Param.html: $(XS_DIR)/Request/Param/Param.pod ${POD2HTML} < $< | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > $@ APR__Request__Cookie.html: $(XS_DIR)/Request/Cookie/Cookie.pod ${POD2HTML} < $< | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > $@ APR__Request__Error.html: $(XS_DIR)/Request/Error/Error.pod ${POD2HTML} < $< | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > $@ APR__Request__Apache2.html: $(XS_DIR)/Request/Apache2/Apache2.pod ${POD2HTML} < $< | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > $@ APR__Request__CGI.html: $(XS_DIR)/Request/CGI/CGI.pod ${POD2HTML} < $< | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > $@ FAQ.html: Makefile.am FAQ.pod ${POD2HTML} < FAQ.pod | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > FAQ.html pod2html :: Apache2__Request.html Apache2__Cookie.html Apache2__Upload.html pod2html :: APR__Request.html APR__Request__Cookie.html pod2html :: APR__Request__Param.html APR__Request__Error.html pod2html :: APR__Request__Apache2.html APR__Request__CGI.html FAQ.html $(POD_DIR)/%.t: $(POD_DIR)/%.pod (cd glue/perl ; pod2test docs/$*.pod docs/$*.t) pod2test :: $(POD_DIR)/Request.t $(POD_DIR)/Cookie.t $(POD_DIR)/Upload.t $(POD_DIR)/Error.t $(POD_DIR)/Table.t apr_tags: docs/apr.tag docs/apu.tag docs/html/feather.gif: ${mkinstalldirs} docs ${mkinstalldirs} docs/html cp feather.gif docs/html docs/apu.tag: ${mkinstalldirs} docs echo GENERATE_TAGFILE=`pwd`/docs/apu.tag | $(APU_DOX) docs/apr.tag: ${mkinstalldirs} docs echo GENERATE_TAGFILE=`pwd`/docs/apr.tag | $(APR_DOX) test: all library_test module_test $(PERL_TEST) module_test: cd module; $(MAKE) test library_test: cd library; $(MAKE) test perl_install: cd glue/perl; $(MAKE) install perl_test: cd glue/perl; $(MAKE) test perl_glue: cd glue/perl; @PERL@ ../../build/xsbuilder.pl run cd glue/perl; @PERL@ Makefile.PL -apxs @APACHE2_APXS@ cd glue/perl; $(MAKE) if BUILD_HTTPD install-exec-local: httpd_install httpd_install: cd @APACHE2_SRC@; $(MAKE) install endif libapreq2-2.13/Makefile.in0000644000076400017500000006367211473533305014401 0ustar issacissac# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # The following is a trick to get CPAN clients to follow prerequisites: # # PREREQ_PM => { Test::More=>q[0.47], ExtUtils::XSBuilder=>q[0.23], ExtUtils::MakeMaker=>q[6.15], Apache::Test=>q[1.04], mod_perl2=>q[1.999022] } # # --- MakeMaker post_initialize section: VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/apreq2-config.in \ $(top_srcdir)/build/doxygen.conf.in $(top_srcdir)/configure \ INSTALL config.guess config.sub depcomp install-sh ltmain.sh \ missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/apreq_config.h CONFIG_CLEAN_FILES = build/doxygen.conf apreq2-config am__installdirs = "$(DESTDIR)$(bindir)" binSCRIPT_INSTALL = $(INSTALL_SCRIPT) SCRIPTS = $(bin_SCRIPTS) SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d $(distdir) \ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr $(distdir); }; } DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ APACHE1_APXS = @APACHE1_APXS@ APACHE2_APXS = @APACHE2_APXS@ APACHE2_HTTPD = @APACHE2_HTTPD@ APACHE2_INCLUDES = @APACHE2_INCLUDES@ APACHE2_SRC = @APACHE2_SRC@ APREQ_CONFIG = @APREQ_CONFIG@ APREQ_DOTTED_VERSION = @APREQ_DOTTED_VERSION@ APREQ_LIBNAME = @APREQ_LIBNAME@ APREQ_LIBTOOL_VERSION = @APREQ_LIBTOOL_VERSION@ APREQ_MAJOR_VERSION = @APREQ_MAJOR_VERSION@ APR_CONFIG = @APR_CONFIG@ APR_DOC_VERSION = @APR_DOC_VERSION@ APR_INCLUDES = @APR_INCLUDES@ APR_LA = @APR_LA@ APR_LDFLAGS = @APR_LDFLAGS@ APR_LIBS = @APR_LIBS@ APR_LTFLAGS = @APR_LTFLAGS@ APU_CONFIG = @APU_CONFIG@ APU_DOC_VERSION = @APU_DOC_VERSION@ APU_LA = @APU_LA@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MM_OPTS = @MM_OPTS@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PERL_OPTS = @PERL_OPTS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TAR = @TAR@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign SUBDIRS = . include library module glue EXTRA_DIST = LICENSE NOTICE README INSTALL CHANGES STATUS FAQ.pod MANIFEST.SKIP Makefile.PL buildconf build win32 docs libapreq.rc APU_SRCDIR = `@APU_CONFIG@ --srcdir` APR_SRCDIR = `@APR_CONFIG@ --srcdir` APU_DOX = (cd $(APU_SRCDIR); cat docs/doxygen.conf - | doxygen -) APR_DOX = (cd $(APR_SRCDIR); cat docs/doxygen.conf - | doxygen -) SED_BODY_TAG = s(^[\S\s]+[\S\s]+$$)()gi, \ s(href="/Apache2(?:/\w+)*/([^/]+).html")(href="group__apreq__xs__\L$$1.html")g, \ s(href="/APR/Request/Param/(?:Table|Cookie).html")(href="group__apreq__xs__apr__request.html")g, \ s(href="/APR/Request.html")(href="group__apreq__xs__apr__request.html")g, \ s(href="/APR/Request/([^/]+).html")(href="group__apreq__xs__apr__request__\L$$1.html")g, \ s(href="/APR/Brigade.html")(href="http://apr.apache.org/docs/apr-util/$(APU_DOC_VERSION)/apr__buckets_8h.html")g, \ s(href="/APR/([^/]+).html")(href="http://apr.apache.org/docs/apr/$(APR_DOC_VERSION)/apr__\L$$1s_8h.html")g EUM = ExtUtils::Manifest PM_DIR = glue/perl/lib/Apache2 XS_DIR = glue/perl/xsbuilder/APR bin_SCRIPTS = apreq2-config CLEANFILES = $(bin_SCRIPTS) POD2HTML = @PERL@ -MPod::Html -wle 'pod2html @ARGV' @BUILD_PERL_GLUE_FALSE@PERL_TEST = @BUILD_PERL_GLUE_TRUE@PERL_TEST = perl_test all: all-recursive .SUFFIXES: am--refresh: @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ cd $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) build/doxygen.conf: $(top_builddir)/config.status $(top_srcdir)/build/doxygen.conf.in cd $(top_builddir) && $(SHELL) ./config.status $@ apreq2-config: $(top_builddir)/config.status $(srcdir)/apreq2-config.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_SCRIPTS)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f $$d$$p; then \ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \ $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \ else :; fi; \ done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; for p in $$list; do \ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ rm -f "$(DESTDIR)$(bindir)/$$f"; \ done mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) test -d $(distdir) || mkdir $(distdir) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r $(distdir) dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && cd $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(SCRIPTS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." @BUILD_HTTPD_FALSE@install-exec-local: clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-exec-am: install-binSCRIPTS install-exec-local install-html: install-html-recursive install-info: install-info-recursive install-man: install-pdf: install-pdf-recursive install-ps: install-ps-recursive installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binSCRIPTS .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \ distclean distclean-generic distclean-libtool distclean-tags \ distcleancheck distdir distuninstallcheck dvi dvi-am html \ html-am info info-am install install-am install-binSCRIPTS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-exec-local install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-binSCRIPTS release: distclean docs_clean reconfig distdir @PERL@ build/version_check.pl > $(distdir)/PREREQUISITES @PERL@ build/version_check.pl -version=@PACKAGE_VERSION@ > $(distdir)/META.yml echo MANIFEST > $(distdir)/MANIFEST @cd $(distdir); @PERL@ -M$(EUM) -e "$(EUM)::mkmanifest" @PERL@ -ple '$$_="$(distdir)/$$_"' $(distdir)/MANIFEST | $(TAR) -czf $(distdir).tar.gz -T - rm -rf $(distdir) @echo "Made $(distdir).tar.gz" release_test: -rm -rf $(distdir) if [ ! -x $(TAR) ]; then echo "$(TAR) is not executable."; fi $(TAR) xzvf $(distdir).tar.gz @cd $(distdir); @PERL@ -M$(EUM) -e "die 'Bogus MANIFEST' if $(EUM)::manicheck" @cd $(distdir); @PERL@ Makefile.PL -apxs @APACHE2_APXS@ && $(MAKE) test rm -rf $(distdir) @echo "$(distdir).tar.gz is kosher." reconfig: ./buildconf.nice ./config.nice docs_clean: -rm -rf docs -rm -rf *.html pod2*.tmp docs: pod2html build/doxygen.conf apr_tags docs/html/feather.gif @PERL@ build/version_check.pl doxygen doxygen build/doxygen.conf docs_install: docs @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgdatadir) cp *.html docs/html cp -R docs $(DESTDIR)$(pkgdatadir) %.html: $(POD_DIR)/%.pm Makefile.am ${POD2HTML} < $< | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > $@ Apache2__Request.html: $(PM_DIR)/Request.pm ${POD2HTML} < $< | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > $@ Apache2__Upload.html: $(PM_DIR)/Upload.pm ${POD2HTML} < $< | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > $@ Apache2__Cookie.html: $(PM_DIR)/Cookie.pm ${POD2HTML} < $< | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > $@ APR__Request.html: $(XS_DIR)/Request/Request.pod ${POD2HTML} < $< | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > $@ APR__Request__Param.html: $(XS_DIR)/Request/Param/Param.pod ${POD2HTML} < $< | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > $@ APR__Request__Cookie.html: $(XS_DIR)/Request/Cookie/Cookie.pod ${POD2HTML} < $< | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > $@ APR__Request__Error.html: $(XS_DIR)/Request/Error/Error.pod ${POD2HTML} < $< | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > $@ APR__Request__Apache2.html: $(XS_DIR)/Request/Apache2/Apache2.pod ${POD2HTML} < $< | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > $@ APR__Request__CGI.html: $(XS_DIR)/Request/CGI/CGI.pod ${POD2HTML} < $< | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > $@ FAQ.html: Makefile.am FAQ.pod ${POD2HTML} < FAQ.pod | @PERL@ -0777 -pe '$(SED_BODY_TAG)' > FAQ.html pod2html :: Apache2__Request.html Apache2__Cookie.html Apache2__Upload.html pod2html :: APR__Request.html APR__Request__Cookie.html pod2html :: APR__Request__Param.html APR__Request__Error.html pod2html :: APR__Request__Apache2.html APR__Request__CGI.html FAQ.html $(POD_DIR)/%.t: $(POD_DIR)/%.pod (cd glue/perl ; pod2test docs/$*.pod docs/$*.t) pod2test :: $(POD_DIR)/Request.t $(POD_DIR)/Cookie.t $(POD_DIR)/Upload.t $(POD_DIR)/Error.t $(POD_DIR)/Table.t apr_tags: docs/apr.tag docs/apu.tag docs/html/feather.gif: ${mkinstalldirs} docs ${mkinstalldirs} docs/html cp feather.gif docs/html docs/apu.tag: ${mkinstalldirs} docs echo GENERATE_TAGFILE=`pwd`/docs/apu.tag | $(APU_DOX) docs/apr.tag: ${mkinstalldirs} docs echo GENERATE_TAGFILE=`pwd`/docs/apr.tag | $(APR_DOX) test: all library_test module_test $(PERL_TEST) module_test: cd module; $(MAKE) test library_test: cd library; $(MAKE) test perl_install: cd glue/perl; $(MAKE) install perl_test: cd glue/perl; $(MAKE) test perl_glue: cd glue/perl; @PERL@ ../../build/xsbuilder.pl run cd glue/perl; @PERL@ Makefile.PL -apxs @APACHE2_APXS@ cd glue/perl; $(MAKE) @BUILD_HTTPD_TRUE@install-exec-local: httpd_install @BUILD_HTTPD_TRUE@httpd_install: @BUILD_HTTPD_TRUE@ cd @APACHE2_SRC@; $(MAKE) install # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libapreq2-2.13/Makefile.PL0000644000076400017500000000551611473532340014275 0ustar issacissacrequire 5.006; use strict; use warnings; use Getopt::Long qw(GetOptions); use Config; use constant PERL_PATH => $Config{perlpath}; # XXX use constant WIN32 => ($^O =~ /Win32/); sub test_prereq { system (PERL_PATH, "build/version_check.pl", @_) == 0 or warn "Please upgrade $_[0] first.\n"; } test_prereq perl => PERL_PATH; my %opts; undef @opts{qw(with-apache2-apxs with-apache1-apxs with-apache2-src with-perl with-apache2-httpd with-apr-config with-apu-config apxs with-expat with-mm-opts)}; undef @opts{qw(with-apache2)} if (WIN32); my @flags = qw/enable-maintainer-mode enable-perl-glue disable-perl-glue/; push @flags, qw/debug/ if (WIN32); my %args; # grab from @ARGV only the options that we expect GetOptions(\%args, (map "$_=s", keys %opts), @flags); $args{"with-perl"} = PERL_PATH; my $opts = ""; $opts .= "--enable-maintainer-mode " if $args{"enable-maintainer-mode"}; unless (exists $args{"disable-perl-glue"}) { $opts .= "--enable-perl-glue "; test_prereq "mod_perl2"; test_prereq "Apache::Test"; test_prereq "ExtUtils::MakeMaker"; test_prereq "ExtUtils::XSBuilder"; test_prereq "Test::More"; } $opts .= "--debug " if (WIN32 and $args{debug}); delete @args{@flags}; $args{"with-apache2-apxs"} = delete $args{apxs} if exists $args{apxs} and not exists $args{"with-apache2-apxs"}; $args{"with-apache2-apxs"} ||= eval { require Apache2::Build; Apache2::Build->build_config->{MP_APXS}; }; $args{"with-perl-opts"} = "@ARGV" if @ARGV; if (WIN32) { require File::Basename; require File::Spec; unless ($args{'with-apache2'}) { my @candidates = qw(with-apache2-apxs with-apache2-httpd with-apr-config with-apu-config); foreach my $opt(@candidates) { my $c = delete $args{$opt}; next unless $c; (my $dir = File::Basename::dirname($c)) =~ s{(\\|/)bin}{}; if (-d $dir) { $args{'with-apache2'} = $dir; last; } } unless ($args{'with-apache2'}) { my $mp_ap_prefix = eval { Apache2::Build->build_config->{MP_AP_PREFIX}; }; if ($mp_ap_prefix and -d $mp_ap_prefix) { $args{'with-apache2'} = $mp_ap_prefix; } } } unless (defined $args{'with-apache2-apxs'}) { $args{'with-apache2-apxs'} = File::Spec->catfile($args{'with-apache2'}, 'bin', 'apxs.bat'); } my @opts = map{qq/--$_="$args{$_}"/} keys %args; push @opts, (split ' ', $opts); my @args = (PERL_PATH, 'win32/Configure.pl', @opts); print "@args\n"; system(@args) == 0 or die "system @args failed: $?"; } else { $opts .= join " ", map {qq/--$_="$args{$_}"/} keys %args; my $cmd = "./configure $opts"; print "$cmd\n"; exec $cmd; } libapreq2-2.13/MANIFEST0000644000076400017500000002121211473533326013450 0ustar issacissacacinclude.m4 aclocal.m4 apreq2-config.in build/announcement.pl build/dox.css build/dox.foot build/dox.head build/doxygen.conf build/doxygen.conf.in build/get-version.sh build/RELEASE build/update_version.pl build/version_check.pl build/WEBSITE build/xsbuilder.pl buildconf CHANGES config.guess config.sub configure configure.ac depcomp docs/apr.tag docs/apreq2.tag docs/apu.tag docs/html/annotated.html docs/html/apreq_8h-source.html docs/html/apreq_8h.html docs/html/apreq__cookie_8h-source.html docs/html/apreq__cookie_8h.html docs/html/apreq__error_8h-source.html docs/html/apreq__error_8h.html docs/html/apreq__module_8h-source.html docs/html/apreq__module_8h.html docs/html/apreq__module__apache2_8h-source.html docs/html/apreq__module__apache_8h-source.html docs/html/apreq__param_8h-source.html docs/html/apreq__param_8h.html docs/html/apreq__parser_8h-source.html docs/html/apreq__parser_8h.html docs/html/apreq__util_8h-source.html docs/html/apreq__util_8h.html docs/html/apreq__version_8h-source.html docs/html/apreq__version_8h.html docs/html/apreq_changes.html docs/html/apreq_faq.html docs/html/apreq_install.html docs/html/apreq_license.html docs/html/apreq_notice.html docs/html/apreq_status.html docs/html/dox.css docs/html/doxygen.png docs/html/examples.html docs/html/feather.gif docs/html/files.html docs/html/functions.html docs/html/functions_vars.html docs/html/globals.html docs/html/globals_defs.html docs/html/globals_enum.html docs/html/globals_eval.html docs/html/globals_func.html docs/html/globals_type.html docs/html/group__apreq__lang.html docs/html/group__apreq__module.html docs/html/group__apreq__xs.html docs/html/group__apreq__xs__apr__request.html docs/html/group__apreq__xs__apr__request__apache2.html docs/html/group__apreq__xs__apr__request__cgi.html docs/html/group__apreq__xs__apr__request__cookie.html docs/html/group__apreq__xs__apr__request__error.html docs/html/group__apreq__xs__apr__request__param.html docs/html/group__apreq__xs__cookie.html docs/html/group__apreq__xs__request.html docs/html/group__apreq__xs__upload.html docs/html/group__libapreq2.html docs/html/group__mod__apreq2.html docs/html/index.html docs/html/installdox docs/html/modules.html docs/html/pages.html docs/html/structapreq__cookie__t.html docs/html/structapreq__handle__t.html docs/html/structapreq__hook__find__param__ctx__t.html docs/html/structapreq__hook__t.html docs/html/structapreq__module__t.html docs/html/structapreq__param__t.html docs/html/structapreq__parser__t.html docs/html/structapreq__value__t.html docs/html/tab_b.gif docs/html/tab_l.gif docs/html/tab_r.gif docs/html/tabs.css docs/html/todo.html docs/man/man3/apreq.h.3 docs/man/man3/apreq_changes.3 docs/man/man3/apreq_cookie.h.3 docs/man/man3/apreq_cookie_t.3 docs/man/man3/apreq_error.h.3 docs/man/man3/apreq_faq.3 docs/man/man3/apreq_handle_t.3 docs/man/man3/apreq_hook_find_param_ctx_t.3 docs/man/man3/apreq_hook_t.3 docs/man/man3/apreq_install.3 docs/man/man3/apreq_lang.3 docs/man/man3/apreq_license.3 docs/man/man3/apreq_module.3 docs/man/man3/apreq_module.h.3 docs/man/man3/apreq_module_t.3 docs/man/man3/apreq_notice.3 docs/man/man3/apreq_param.h.3 docs/man/man3/apreq_param_t.3 docs/man/man3/apreq_parser.h.3 docs/man/man3/apreq_parser_t.3 docs/man/man3/apreq_status.3 docs/man/man3/apreq_util.h.3 docs/man/man3/apreq_value_t.3 docs/man/man3/apreq_version.h.3 docs/man/man3/apreq_xs.3 docs/man/man3/apreq_xs_apr_request.3 docs/man/man3/apreq_xs_apr_request_apache2.3 docs/man/man3/apreq_xs_apr_request_cgi.3 docs/man/man3/apreq_xs_apr_request_cookie.3 docs/man/man3/apreq_xs_apr_request_error.3 docs/man/man3/apreq_xs_apr_request_param.3 docs/man/man3/apreq_xs_cookie.3 docs/man/man3/apreq_xs_request.3 docs/man/man3/apreq_xs_upload.3 docs/man/man3/libapreq2.3 docs/man/man3/mod_apreq2.3 docs/man/man3/todo.3 FAQ.pod glue/Makefile.am glue/Makefile.in glue/perl/lib/Apache2/Cookie.pm glue/perl/lib/Apache2/Request.pm glue/perl/lib/Apache2/Upload.pm glue/perl/Makefile.PL glue/perl/README glue/perl/t/apreq/big_input.t glue/perl/t/apreq/cgi.t glue/perl/t/apreq/cookie.t glue/perl/t/apreq/cookie2.t glue/perl/t/apreq/inherit.t glue/perl/t/apreq/request.t glue/perl/t/apreq/upload.t glue/perl/t/conf/extra.conf.in glue/perl/t/response/TestAPI/cookie.pm glue/perl/t/response/TestAPI/error.pm glue/perl/t/response/TestAPI/module.pm glue/perl/t/response/TestAPI/param.pm glue/perl/t/response/TestApReq/big_input.pm glue/perl/t/response/TestApReq/cookie.pm glue/perl/t/response/TestApReq/cookie2.pm glue/perl/t/response/TestApReq/inherit.pm glue/perl/t/response/TestApReq/request.pm glue/perl/t/response/TestApReq/upload.pm glue/perl/t/TEST.PL glue/perl/xsbuilder/APR/Request/Apache2/Apache2.pm glue/perl/xsbuilder/APR/Request/Apache2/Apache2.pod glue/perl/xsbuilder/APR/Request/Apache2/Apache2.xs glue/perl/xsbuilder/APR/Request/Apache2/APR__Request__Apache2.h glue/perl/xsbuilder/APR/Request/APR__Request.h glue/perl/xsbuilder/APR/Request/CGI/CGI.pm glue/perl/xsbuilder/APR/Request/CGI/CGI.pod glue/perl/xsbuilder/APR/Request/CGI/CGI.xs glue/perl/xsbuilder/APR/Request/Cookie/APR__Request__Cookie.h glue/perl/xsbuilder/APR/Request/Cookie/Cookie.pm glue/perl/xsbuilder/APR/Request/Cookie/Cookie.pod glue/perl/xsbuilder/APR/Request/Cookie/Cookie.xs glue/perl/xsbuilder/APR/Request/Error/APR__Request__Error.h glue/perl/xsbuilder/APR/Request/Error/Error.pm glue/perl/xsbuilder/APR/Request/Error/Error.pod glue/perl/xsbuilder/APR/Request/Error/Error.xs glue/perl/xsbuilder/APR/Request/Hook/Hook.pod glue/perl/xsbuilder/APR/Request/Hook/Hook.xs glue/perl/xsbuilder/APR/Request/Param/APR__Request__Param.h glue/perl/xsbuilder/APR/Request/Param/Param.pm glue/perl/xsbuilder/APR/Request/Param/Param.pod glue/perl/xsbuilder/APR/Request/Param/Param.xs glue/perl/xsbuilder/APR/Request/Parser/Parser.pod glue/perl/xsbuilder/APR/Request/Parser/Parser.xs glue/perl/xsbuilder/APR/Request/Request.pm glue/perl/xsbuilder/APR/Request/Request.pod glue/perl/xsbuilder/APR/Request/Request.xs glue/perl/xsbuilder/apreq_xs_postperl.h glue/perl/xsbuilder/apreq_xs_preperl.h glue/perl/xsbuilder/apreq_xs_tables.h glue/perl/xsbuilder/maps/apreq_functions.map glue/perl/xsbuilder/maps/apreq_structures.map glue/perl/xsbuilder/maps/apreq_types.map glue/perl/xsbuilder/ppport.h glue/perl/xsbuilder/tables/APR/Request/CallbackTable.pm glue/perl/xsbuilder/tables/APR/Request/ConstantsTable.pm glue/perl/xsbuilder/tables/APR/Request/FunctionTable.pm glue/perl/xsbuilder/tables/APR/Request/StructureTable.pm glue/perl/xsbuilder/typemap glue/README include/apreq.h include/apreq_config.h.in include/apreq_cookie.h include/apreq_error.h include/apreq_module.h include/apreq_param.h include/apreq_parser.h include/apreq_util.h include/apreq_version.h include/groups.dox.in include/Makefile.am include/Makefile.in INSTALL install-sh libapreq.rc library/cookie.c library/error.c library/Makefile.am library/Makefile.in library/module.c library/module_cgi.c library/module_custom.c library/param.c library/parser.c library/parser_header.c library/parser_multipart.c library/parser_urlencoded.c library/t/at.c library/t/at.h library/t/cookie.c library/t/error.c library/t/Makefile.am library/t/Makefile.in library/t/params.c library/t/parsers.c library/t/util.c library/t/version.c library/util.c library/version.c LICENSE ltmain.sh Makefile.am Makefile.in Makefile.PL MANIFEST META.yml missing module/apache2/apreq_module_apache2.h module/apache2/apreq_private_apache2.h module/apache2/filter.c module/apache2/handle.c module/apache2/Makefile.am module/apache2/Makefile.in module/Makefile.am module/Makefile.in module/t/big_request.t module/t/c-modules/apreq_access_test/mod_apreq_access_test.c module/t/c-modules/apreq_big_request_test/mod_apreq_big_request_test.c module/t/c-modules/apreq_cookie_test/mod_apreq_cookie_test.c module/t/c-modules/apreq_output_filter_test/mod_apreq_output_filter_test.c module/t/c-modules/apreq_redirect_test/mod_apreq_redirect_test.c module/t/c-modules/apreq_request_test/mod_apreq_request_test.c module/t/c-modules/apreq_upload_test/10k module/t/c-modules/apreq_upload_test/128k module/t/c-modules/apreq_upload_test/1b module/t/c-modules/apreq_upload_test/1k module/t/c-modules/apreq_upload_test/63k module/t/c-modules/apreq_upload_test/64k module/t/c-modules/apreq_upload_test/65k module/t/c-modules/apreq_upload_test/mod_apreq_upload_test.c module/t/cgi.t module/t/conf/extra.conf.in module/t/conf/ssl/ca-bundle-duplicates.crt module/t/conf/ssl/ca-bundle-sample.crt module/t/conf/ssl/httpd-passphrase.pl.PL module/t/conf/ssl/proxyssl.conf.in module/t/conf/ssl/ssl.conf.in module/t/cookie.t module/t/request.t module/t/TEST.PL module/t/upload.t module/test_cgi.c NOTICE PREREQUISITES README STATUS win32/apreq2_test.mak win32/apreq2_win32.pl win32/Configure.pl win32/libapreq2.mak win32/mod_apreq2.mak win32/README win32/test_cgi.mak win32/util.pl libapreq2-2.13/META.yml0000644000076400017500000000152411473533326013574 0ustar issacissac--- #YAML:1.0 name: libapreq2 version: 2.13 license: open_source installdirs: site distribution_type: module dynamic_config: 1 provides: Apache2::Request: version: 2.13 Apache2::Cookie: version: 2.13 Apache2::Upload: version: 2.13 APR::Request: version: 2.13 APR::Request::Apache2: version: 2.13 APR::Request::CGI: version: 2.13 APR::Request::Error: version: 2.13 APR::Request::Cookie: version: 2.13 APR::Request::Param: version: 2.13 no_index: directory: - glue/perl/xsbuilder/tables/APR/Request - glue/perl/t/response/TestAPI - glue/perl/t/response/TestApReq generated_by: build/version_check.pl requires: mod_perl2: perl: 5.6.1 build_requires: Apache::Test: 1.04 ExtUtils::MakeMaker: 6.15 ExtUtils::XSBuilder: 0.23 Test::More: 0.47 mod_perl2: 1.999022 perl: 5.6.1 libapreq2-2.13/missing0000755000076400017500000002557711473532767013750 0ustar issacissac#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2006-05-10.23 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006 # Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). case $1 in lex|yacc) # Not GNU programs, they don't have --version. ;; tar) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $1 in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit 1 fi ;; makeinfo) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; tar) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case $firstarg in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case $firstarg in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: libapreq2-2.13/module/apache2/apreq_module_apache2.h0000644000076400017500000001335111473532337021326 0ustar issacissac/* ** 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. */ #ifndef APREQ_APACHE2_H #define APREQ_APACHE2_H #include "apreq_module.h" #include "apr_optional.h" #include #ifdef __cplusplus extern "C" { #endif /** * @defgroup mod_apreq2 Apache 2.X Filter Module * @ingroup apreq_module * @brief mod_apreq2 - DSO that ties libapreq2 to Apache HTTPD 2.X. * * mod_apreq2 provides the "APREQ2" input filter for using libapreq2 * (and allow its parsed data structures to be shared) within * the Apache 2.X webserver. Using it, libapreq2 works properly * in every phase of the HTTP request, from translation handlers * to output filters, and even for subrequests / internal redirects. * *
* *

Activating mod_apreq2 in Apache 2.X

* * The installation process triggered by * % make install * will not modify your webserver's config file. Hence, * be sure you activate it on startup by adding a LoadModule directive * to your webserver config; e.g. * * @code * * LoadModule apreq_module modules/mod_apreq2.so * * @endcode * * The mod_apreq2 filter is named "apreq2", and may be used in Apache's * input filter directives, e.g. * @code * * AddInputFilter apreq2 # or * SetInputFilter apreq2 * * @endcode * * However, this is not required because libapreq2 will add the filter (only) * if it's necessary. You just need to ensure that your module invokes * apreq_handle_apache2() before the content handler ultimately reads * from the input filter chain. It is important to realize that no * matter how the input filters are initially arranged, the APREQ2 filter * will attempt to reposition itself to be the last input filter to read the * data. * * If you want to use other input filters to transform the incoming HTTP * request data, is important to register those filters with Apache * as having type AP_FTYPE_CONTENT_SET or AP_FTYPE_RESOURCE. Due to the * limitations of Apache's current input filter design, types higher than * AP_FTYPE_CONTENT_SET may not work properly whenever the apreq filter is * active. * * This is especially true when a content handler uses libapreq2 to parse * some of the post data before doing an internal redirect. Any input * filter subsequently added to the redirected request will bypass the * original apreq filter (and therefore lose access to some of the original * post data), unless its type is less than the type of the apreq filter * (currently AP_FTYPE_PROTOCOL-1). * * *

Server Configuration Directives

* * * * * * * * * * * * * * * * * * * * * * * * * * *
Per-directory commands for mod_apreq2
DirectiveContextDefaultDescription
APREQ2_ReadLimitdirectory #APREQ_DEFAULT_READ_LIMIT Maximum number of bytes mod_apreq2 will send off to libapreq2 * for parsing. mod_apreq2 will log this event and subsequently * remove itself from the filter chain. *
APREQ2_BrigadeLimitdirectory#APREQ_DEFAULT_BRIGADE_LIMIT Maximum number of bytes mod_apreq2 will let accumulate * within the heap-buckets in a brigade. Excess data will be * spooled to an appended file bucket. *
APREQ2_TempDirdirectoryNULL Sets the location of the temporary directory apreq will use to spool * overflow brigade data (based on the APREQ2_BrigadeLimit setting). * If left unset, libapreq2 will select a platform-specific location * via apr_temp_dir_get(). *
* *

Implementation Details

*
 *   XXX apreq as a normal input filter
 *   XXX apreq as a "virtual" content handler.
 *   XXX apreq as a transparent "tee".
 *   XXX apreq parser registration in post_config
 * 
* * @{ */ /** * Create an apreq handle which communicates with an Apache 2.X * request_rec. */ APREQ_DECLARE(apreq_handle_t *) apreq_handle_apache2(request_rec *r); /** * * */ #ifdef WIN32 typedef __declspec(dllexport) apreq_handle_t * (__stdcall apr_OFN_apreq_handle_apache2_t) (request_rec *r); #else APR_DECLARE_OPTIONAL_FN(APREQ_DECLARE(apreq_handle_t *), apreq_handle_apache2, (request_rec *r)); #endif /** * The mod_apreq2 filter is named "apreq2", and may be used in Apache's * input filter directives, e.g. * @code * * AddInputFilter apreq2 # or * SetInputFilter apreq2 * @endcode * See above */ #define APREQ_FILTER_NAME "apreq2" /** * The Apache2 Module Magic Number for use in the Apache 2.x module structures * This gets bumped if changes in th4e API will break third party applications * using this apache2 module * @see APREQ_MODULE */ #define APREQ_APACHE2_MMN 20090110 /** @} */ #ifdef __cplusplus } #endif #endif libapreq2-2.13/module/apache2/apreq_private_apache2.h0000644000076400017500000000350311473532337021511 0ustar issacissacextern module AP_MODULE_DECLARE_DATA apreq_module; struct dir_config { const char *temp_dir; apr_uint64_t read_limit; apr_size_t brigade_limit; }; /* The "warehouse", stored in r->request_config */ struct apache2_handle { apreq_handle_t handle; request_rec *r; apr_table_t *jar, *args; apr_status_t jar_status, args_status; ap_filter_t *f; }; /* Tracks the apreq filter state */ struct filter_ctx { apr_bucket_brigade *bb; /* input brigade that's passed to the parser */ apr_bucket_brigade *bbtmp; /* temporary copy of bb, destined for the spool */ apr_bucket_brigade *spool; /* copied prefetch data for downstream filters */ apreq_parser_t *parser; apreq_hook_t *hook_queue; apreq_hook_t *find_param; apr_table_t *body; apr_status_t body_status; apr_status_t filter_error; apr_uint64_t bytes_read; /* Total bytes read into this filter. */ apr_uint64_t read_limit; /* Max bytes the filter may show to parser */ apr_size_t brigade_limit; const char *temp_dir; }; apr_status_t apreq_filter_prefetch(ap_filter_t *f, apr_off_t readbytes); apr_status_t apreq_filter(ap_filter_t *f, apr_bucket_brigade *bb, ap_input_mode_t mode, apr_read_type_e block, apr_off_t readbytes); void apreq_filter_make_context(ap_filter_t *f); void apreq_filter_init_context(ap_filter_t *f); APR_INLINE static void apreq_filter_relocate(ap_filter_t *f) { request_rec *r = f->r; if (f != r->input_filters) { ap_filter_t *top = r->input_filters; ap_remove_input_filter(f); r->input_filters = f; f->next = top; } } libapreq2-2.13/module/apache2/filter.c0000644000076400017500000004107511473532337016552 0ustar issacissac/* ** 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. */ #include "assert.h" #include "httpd.h" #include "http_config.h" #include "http_log.h" #include "util_filter.h" #include "apr_tables.h" #include "apr_buckets.h" #include "http_request.h" #include "apr_strings.h" #include "apreq_module_apache2.h" #include "apreq_private_apache2.h" #include "apreq_error.h" #include "apreq_util.h" #include "apreq_version.h" static void *apreq_create_dir_config(apr_pool_t *p, char *d) { /* d == OR_ALL */ struct dir_config *dc = apr_palloc(p, sizeof *dc); dc->temp_dir = NULL; dc->read_limit = APREQ_DEFAULT_READ_LIMIT; dc->brigade_limit = APREQ_DEFAULT_BRIGADE_LIMIT; return dc; } static void *apreq_merge_dir_config(apr_pool_t *p, void *a_, void *b_) { struct dir_config *a = a_, *b = b_, *c = apr_palloc(p, sizeof *c); c->temp_dir = (b->temp_dir != NULL) /* overrides ok */ ? b->temp_dir : a->temp_dir; c->brigade_limit = (b->brigade_limit == (apr_size_t)-1) /* overrides ok */ ? a->brigade_limit : b->brigade_limit; c->read_limit = (b->read_limit < a->read_limit) /* why min? */ ? b->read_limit : a->read_limit; return c; } static const char *apreq_set_temp_dir(cmd_parms *cmd, void *data, const char *arg) { struct dir_config *conf = data; const char *err = ap_check_cmd_context(cmd, NOT_IN_LIMIT); if (err != NULL) return err; conf->temp_dir = arg; return NULL; } static const char *apreq_set_read_limit(cmd_parms *cmd, void *data, const char *arg) { struct dir_config *conf = data; const char *err = ap_check_cmd_context(cmd, NOT_IN_LIMIT); if (err != NULL) return err; conf->read_limit = apreq_atoi64f(arg); return NULL; } static const char *apreq_set_brigade_limit(cmd_parms *cmd, void *data, const char *arg) { struct dir_config *conf = data; const char *err = ap_check_cmd_context(cmd, NOT_IN_LIMIT); if (err != NULL) return err; conf->brigade_limit = apreq_atoi64f(arg); return NULL; } static const command_rec apreq_cmds[] = { AP_INIT_TAKE1("APREQ2_TempDir", apreq_set_temp_dir, NULL, OR_ALL, "Default location of temporary directory"), AP_INIT_TAKE1("APREQ2_ReadLimit", apreq_set_read_limit, NULL, OR_ALL, "Maximum amount of data that will be fed into a parser."), AP_INIT_TAKE1("APREQ2_BrigadeLimit", apreq_set_brigade_limit, NULL, OR_ALL, "Maximum in-memory bytes a brigade may use."), { NULL } }; void apreq_filter_init_context(ap_filter_t *f) { request_rec *r = f->r; struct filter_ctx *ctx = f->ctx; apr_bucket_alloc_t *ba = r->connection->bucket_alloc; const char *cl_header; if (r->method_number == M_GET) { /* Don't parse GET (this protects against subrequest body parsing). */ ctx->body_status = APREQ_ERROR_NODATA; return; } cl_header = apr_table_get(r->headers_in, "Content-Length"); if (cl_header != NULL) { char *dummy; apr_uint64_t content_length = apr_strtoi64(cl_header,&dummy,0); if (dummy == NULL || *dummy != 0) { ap_log_rerror(APLOG_MARK, APLOG_ERR, APR_EGENERAL, r, "Invalid Content-Length header (%s)", cl_header); ctx->body_status = APREQ_ERROR_BADHEADER; return; } else if (content_length > ctx->read_limit) { ap_log_rerror(APLOG_MARK, APLOG_ERR, APR_EGENERAL, r, "Content-Length header (%s) exceeds configured " "max_body limit (%" APR_UINT64_T_FMT ")", cl_header, ctx->read_limit); ctx->body_status = APREQ_ERROR_OVERLIMIT; return; } } if (ctx->parser == NULL) { const char *ct_header = apr_table_get(r->headers_in, "Content-Type"); if (ct_header != NULL) { apreq_parser_function_t pf = apreq_parser(ct_header); if (pf != NULL) { ctx->parser = apreq_parser_make(r->pool, ba, ct_header, pf, ctx->brigade_limit, ctx->temp_dir, ctx->hook_queue, NULL); } else { ctx->body_status = APREQ_ERROR_NOPARSER; return; } } else { ctx->body_status = APREQ_ERROR_NOHEADER; return; } } else { if (ctx->parser->brigade_limit > ctx->brigade_limit) ctx->parser->brigade_limit = ctx->brigade_limit; if (ctx->temp_dir != NULL) ctx->parser->temp_dir = ctx->temp_dir; if (ctx->hook_queue != NULL) apreq_parser_add_hook(ctx->parser, ctx->hook_queue); } ctx->hook_queue = NULL; ctx->bb = apr_brigade_create(r->pool, ba); ctx->bbtmp = apr_brigade_create(r->pool, ba); ctx->spool = apr_brigade_create(r->pool, ba); ctx->body = apr_table_make(r->pool, APREQ_DEFAULT_NELTS); ctx->body_status = APR_INCOMPLETE; } /* * Situations to contend with: * * 1) Often the filter will be added by the content handler itself, * so the apreq_filter_init hook will not be run. * 2) If an auth handler uses apreq, the apreq_filter will ensure * it's part of the protocol filters. apreq_filter_init does NOT need * to notify the protocol filter that it must not continue parsing, * the apreq filter can perform this check itself. apreq_filter_init * just needs to ensure cfg->f does not point at it. * 3) If req->proto_input_filters and req->input_filters are apreq * filters, and req->input_filters->next == req->proto_input_filters, * it is safe for apreq_filter to "steal" the proto filter's context * and subsequently drop it from the chain. */ /* Examines the input_filter chain and moves the apreq filter(s) around * before the filter chain is stacked by ap_get_brigade. */ static apr_status_t apreq_filter_init(ap_filter_t *f) { request_rec *r = f->r; struct filter_ctx *ctx = f->ctx; struct apache2_handle *handle = (struct apache2_handle *)apreq_handle_apache2(r); /* Don't parse GET (this protects against subrequest body parsing). */ if (f->r->method_number == M_GET) return APR_SUCCESS; if (ctx == NULL || ctx->body_status == APR_EINIT) { if (f == r->input_filters) { handle->f = f; } else if (r->input_filters->frec->filter_func.in_func == apreq_filter) { ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r, "removing intermediate apreq filter"); if (handle->f == f) handle->f = r->input_filters; ap_remove_input_filter(f); } else { ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r, "relocating intermediate apreq filter"); apreq_filter_relocate(f); handle->f = f; } return APR_SUCCESS; } /* else this is a protocol filter which may still be active. * if it is, we must deregister it now. */ if (handle->f == f) { ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r, "disabling stale protocol filter"); if (ctx->body_status == APR_INCOMPLETE) ctx->body_status = APREQ_ERROR_INTERRUPT; handle->f = NULL; } return APR_SUCCESS; } apr_status_t apreq_filter_prefetch(ap_filter_t *f, apr_off_t readbytes) { struct filter_ctx *ctx = f->ctx; request_rec *r = f->r; apr_status_t rv; apr_off_t len; if (ctx->body_status == APR_EINIT) apreq_filter_init_context(f); if (ctx->body_status != APR_INCOMPLETE || readbytes == 0) return ctx->body_status; ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r, "prefetching %" APR_OFF_T_FMT " bytes", readbytes); rv = ap_get_brigade(f->next, ctx->bb, AP_MODE_READBYTES, APR_BLOCK_READ, readbytes); if (rv != APR_SUCCESS) { ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, "ap_get_brigade failed during prefetch"); ctx->filter_error = rv; return ctx->body_status = APREQ_ERROR_GENERAL; } apreq_brigade_setaside(ctx->bb, r->pool); apreq_brigade_copy(ctx->bbtmp, ctx->bb); rv = apreq_brigade_concat(r->pool, ctx->temp_dir, ctx->brigade_limit, ctx->spool, ctx->bbtmp); if (rv != APR_SUCCESS && rv != APR_EOF) { ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, "apreq_brigade_concat failed; TempDir problem?"); ctx->filter_error = APR_EGENERAL; return ctx->body_status = rv; } /* Adding "f" to the protocol filter chain ensures the * spooled data is preserved across internal redirects. */ if (f != r->proto_input_filters) { ap_filter_t *in; for (in = r->input_filters; in != r->proto_input_filters; in = in->next) { if (f == in) { r->proto_input_filters = f; break; } } } apr_brigade_length(ctx->bb, 1, &len); ctx->bytes_read += len; if (ctx->bytes_read > ctx->read_limit) { ctx->body_status = APREQ_ERROR_OVERLIMIT; ap_log_rerror(APLOG_MARK, APLOG_ERR, ctx->body_status, r, "Bytes read (%" APR_UINT64_T_FMT ") exceeds configured read limit (%" APR_UINT64_T_FMT ")", ctx->bytes_read, ctx->read_limit); return ctx->body_status; } ctx->body_status = apreq_parser_run(ctx->parser, ctx->body, ctx->bb); apr_brigade_cleanup(ctx->bb); return ctx->body_status; } apr_status_t apreq_filter(ap_filter_t *f, apr_bucket_brigade *bb, ap_input_mode_t mode, apr_read_type_e block, apr_off_t readbytes) { request_rec *r = f->r; struct filter_ctx *ctx; apr_status_t rv; apr_off_t len; switch (mode) { case AP_MODE_READBYTES: /* only the modes above are supported */ break; case AP_MODE_EXHAUSTIVE: /* not worth supporting at this level */ case AP_MODE_GETLINE: /* chunked trailers are b0rked in ap_http_filter */ return ap_get_brigade(f->next, bb, mode, block, readbytes); default: return APR_ENOTIMPL; } if (f->ctx == NULL) apreq_filter_make_context(f); ctx = f->ctx; if (ctx->body_status == APR_EINIT) apreq_filter_init_context(f); if (ctx->spool && !APR_BRIGADE_EMPTY(ctx->spool)) { apr_bucket *e; rv = apr_brigade_partition(ctx->spool, readbytes, &e); if (rv != APR_SUCCESS && rv != APR_INCOMPLETE) return rv; if (APR_BUCKET_IS_EOS(e)) e = APR_BUCKET_NEXT(e); apreq_brigade_move(bb, ctx->spool, e); return APR_SUCCESS; } else if (ctx->body_status != APR_INCOMPLETE) { if (ctx->filter_error) return ctx->filter_error; rv = ap_get_brigade(f->next, bb, mode, block, readbytes); ap_remove_input_filter(f); return rv; } rv = ap_get_brigade(f->next, bb, mode, block, readbytes); if (rv != APR_SUCCESS) return rv; apreq_brigade_copy(ctx->bb, bb); apr_brigade_length(bb, 1, &len); ctx->bytes_read += len; if (ctx->bytes_read > ctx->read_limit) { ctx->body_status = APREQ_ERROR_OVERLIMIT; ap_log_rerror(APLOG_MARK, APLOG_ERR, ctx->body_status, r, "Bytes read (%" APR_UINT64_T_FMT ") exceeds configured max_body limit (%" APR_UINT64_T_FMT ")", ctx->bytes_read, ctx->read_limit); } else { ctx->body_status = apreq_parser_run(ctx->parser, ctx->body, ctx->bb); apr_brigade_cleanup(ctx->bb); } return APR_SUCCESS; } static int apreq_pre_init(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *base_server) { apr_status_t status; status = apreq_pre_initialize(p); if (status != APR_SUCCESS) { ap_log_error(APLOG_MARK, APLOG_STARTUP|APLOG_ERR, status, base_server, "Failed to pre-initialize libapreq2"); return HTTP_INTERNAL_SERVER_ERROR; } APR_REGISTER_OPTIONAL_FN(apreq_handle_apache2); return OK; } static int apreq_post_init(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *base_server) { apr_status_t status; ap_add_version_component(p, apr_psprintf(p, "mod_apreq2-%d/%s", APREQ_APACHE2_MMN, apreq_version_string())); status = apreq_post_initialize(p); if (status != APR_SUCCESS) { ap_log_error(APLOG_MARK, APLOG_STARTUP|APLOG_ERR, status, base_server, "Failed to post-initialize libapreq2"); return HTTP_INTERNAL_SERVER_ERROR; } return OK; } static void register_hooks (apr_pool_t *p) { /* APR_HOOK_FIRST because we want other modules to be able to * register parsers in their post_config hook via APR_HOOK_MIDDLE. */ ap_hook_post_config(apreq_pre_init, NULL, NULL, APR_HOOK_FIRST); /* APR_HOOK_LAST because we need to lock the default_parsers hash * (to prevent further modifications) before the server forks. */ ap_hook_post_config(apreq_post_init, NULL, NULL, APR_HOOK_LAST); ap_register_input_filter(APREQ_FILTER_NAME, apreq_filter, apreq_filter_init, AP_FTYPE_PROTOCOL-1); } /** @} */ module AP_MODULE_DECLARE_DATA apreq_module = { #line __LINE__ "mod_apreq2.c" STANDARD20_MODULE_STUFF, apreq_create_dir_config, apreq_merge_dir_config, NULL, NULL, apreq_cmds, register_hooks, }; void apreq_filter_make_context(ap_filter_t *f) { request_rec *r; struct filter_ctx *ctx; struct dir_config *d; r = f->r; d = ap_get_module_config(r->per_dir_config, &apreq_module); if (f == r->input_filters && r->proto_input_filters == f->next && f->next->frec->filter_func.in_func == apreq_filter && f->r->method_number != M_GET) { ctx = f->next->ctx; switch (ctx->body_status) { case APREQ_ERROR_INTERRUPT: ctx->body_status = APR_INCOMPLETE; /* fall thru */ case APR_SUCCESS: if (d != NULL) { ctx->temp_dir = d->temp_dir; ctx->read_limit = d->read_limit; ctx->brigade_limit = d->brigade_limit; if (ctx->parser != NULL) { ctx->parser->temp_dir = d->temp_dir; ctx->parser->brigade_limit = d->brigade_limit; } } ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r, "stealing filter context"); f->ctx = ctx; r->proto_input_filters = f; ap_remove_input_filter(f->next); return; default: ap_log_rerror(APLOG_MARK, APLOG_DEBUG, ctx->body_status, r, "cannot steal context: bad filter status"); } } ctx = apr_pcalloc(r->pool, sizeof *ctx); ctx->body_status = APR_EINIT; if (d == NULL) { ctx->read_limit = (apr_uint64_t)-1; ctx->brigade_limit = APREQ_DEFAULT_BRIGADE_LIMIT; } else { ctx->temp_dir = d->temp_dir; ctx->read_limit = d->read_limit; ctx->brigade_limit = d->brigade_limit; } f->ctx = ctx; } libapreq2-2.13/module/apache2/handle.c0000644000076400017500000002546411473532337016524 0ustar issacissac/* ** 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. */ #include "assert.h" #include "httpd.h" #include "http_config.h" #include "http_log.h" #include "util_filter.h" #include "apr_tables.h" #include "apr_buckets.h" #include "http_request.h" #include "apr_strings.h" #include "apreq_module_apache2.h" #include "apreq_private_apache2.h" #include "apreq_error.h" APR_INLINE static ap_filter_t *get_apreq_filter(apreq_handle_t *handle) { struct apache2_handle *req = (struct apache2_handle *)handle; if (req->f == NULL) { req->f = ap_add_input_filter(APREQ_FILTER_NAME, NULL, req->r, req->r->connection); /* ap_add_input_filter does not guarantee cfg->f == r->input_filters, * so we reposition the new filter there as necessary. */ apreq_filter_relocate(req->f); } return req->f; } static apr_status_t apache2_jar(apreq_handle_t *handle, const apr_table_t **t) { struct apache2_handle *req = (struct apache2_handle*)handle; request_rec *r = req->r; if (req->jar_status == APR_EINIT) { const char *cookies = apr_table_get(r->headers_in, "Cookie"); if (cookies != NULL) { req->jar = apr_table_make(handle->pool, APREQ_DEFAULT_NELTS); req->jar_status = apreq_parse_cookie_header(handle->pool, req->jar, cookies); } else req->jar_status = APREQ_ERROR_NODATA; } *t = req->jar; return req->jar_status; } static apr_status_t apache2_args(apreq_handle_t *handle, const apr_table_t **t) { struct apache2_handle *req = (struct apache2_handle*)handle; request_rec *r = req->r; if (req->args_status == APR_EINIT) { if (r->args != NULL) { req->args = apr_table_make(handle->pool, APREQ_DEFAULT_NELTS); req->args_status = apreq_parse_query_string(handle->pool, req->args, r->args); } else req->args_status = APREQ_ERROR_NODATA; } *t = req->args; return req->args_status; } static apreq_cookie_t *apache2_jar_get(apreq_handle_t *handle, const char *name) { struct apache2_handle *req = (struct apache2_handle *)handle; const apr_table_t *t; const char *val; if (req->jar_status == APR_EINIT) apache2_jar(handle, &t); else t = req->jar; if (t == NULL) return NULL; val = apr_table_get(t, name); if (val == NULL) return NULL; return apreq_value_to_cookie(val); } static apreq_param_t *apache2_args_get(apreq_handle_t *handle, const char *name) { struct apache2_handle *req = (struct apache2_handle *)handle; const apr_table_t *t; const char *val; if (req->args_status == APR_EINIT) apache2_args(handle, &t); else t = req->args; if (t == NULL) return NULL; val = apr_table_get(t, name); if (val == NULL) return NULL; return apreq_value_to_param(val); } static apr_status_t apache2_body(apreq_handle_t *handle, const apr_table_t **t) { ap_filter_t *f = get_apreq_filter(handle); struct filter_ctx *ctx; if (f->ctx == NULL) apreq_filter_make_context(f); ctx = f->ctx; switch (ctx->body_status) { case APR_EINIT: apreq_filter_init_context(f); if (ctx->body_status != APR_INCOMPLETE) break; case APR_INCOMPLETE: while (apreq_filter_prefetch(f, APREQ_DEFAULT_READ_BLOCK_SIZE) == APR_INCOMPLETE) ; /*loop*/ } *t = ctx->body; return ctx->body_status; } static apreq_param_t *apache2_body_get(apreq_handle_t *handle, const char *name) { ap_filter_t *f = get_apreq_filter(handle); struct filter_ctx *ctx; const char *val; apreq_hook_t *h; apreq_hook_find_param_ctx_t *hook_ctx; if (f->ctx == NULL) apreq_filter_make_context(f); ctx = f->ctx; switch (ctx->body_status) { case APR_SUCCESS: val = apr_table_get(ctx->body, name); if (val != NULL) return apreq_value_to_param(val); return NULL; case APR_EINIT: apreq_filter_init_context(f); if (ctx->body_status != APR_INCOMPLETE) return NULL; apreq_filter_prefetch(f, APREQ_DEFAULT_READ_BLOCK_SIZE); case APR_INCOMPLETE: val = apr_table_get(ctx->body, name); if (val != NULL) return apreq_value_to_param(val); /* Not seen yet, so we need to scan for param while prefetching the body */ hook_ctx = apr_palloc(handle->pool, sizeof *hook_ctx); if (ctx->find_param == NULL) ctx->find_param = apreq_hook_make(handle->pool, apreq_hook_find_param, NULL, NULL); h = ctx->find_param; h->next = ctx->parser->hook; h->ctx = hook_ctx; ctx->parser->hook = h; h->ctx = hook_ctx; hook_ctx->name = name; hook_ctx->param = NULL; hook_ctx->prev = ctx->parser->hook; do { apreq_filter_prefetch(f, APREQ_DEFAULT_READ_BLOCK_SIZE); if (hook_ctx->param != NULL) return hook_ctx->param; } while (ctx->body_status == APR_INCOMPLETE); ctx->parser->hook = h->next; return NULL; default: if (ctx->body == NULL) return NULL; val = apr_table_get(ctx->body, name); if (val != NULL) return apreq_value_to_param(val); return NULL; } /* not reached */ return NULL; } static apr_status_t apache2_parser_get(apreq_handle_t *handle, const apreq_parser_t **parser) { ap_filter_t *f = get_apreq_filter(handle); struct filter_ctx *ctx = f->ctx; if (ctx == NULL) { *parser = NULL; return APR_EINIT; } *parser = ctx->parser; return APR_SUCCESS; } static apr_status_t apache2_parser_set(apreq_handle_t *handle, apreq_parser_t *parser) { ap_filter_t *f = get_apreq_filter(handle); struct filter_ctx *ctx; if (f->ctx == NULL) apreq_filter_make_context(f); ctx = f->ctx; if (ctx->parser == NULL) { ctx->parser = parser; return APR_SUCCESS; } else return APREQ_ERROR_NOTEMPTY; } static apr_status_t apache2_hook_add(apreq_handle_t *handle, apreq_hook_t *hook) { ap_filter_t *f = get_apreq_filter(handle); struct filter_ctx *ctx; if (f->ctx == NULL) apreq_filter_make_context(f); ctx = f->ctx; if (ctx->parser != NULL) { return apreq_parser_add_hook(ctx->parser, hook); } else if (ctx->hook_queue != NULL) { apreq_hook_t *h = ctx->hook_queue; while (h->next != NULL) h = h->next; h->next = hook; } else { ctx->hook_queue = hook; } return APR_SUCCESS; } static apr_status_t apache2_brigade_limit_set(apreq_handle_t *handle, apr_size_t bytes) { ap_filter_t *f = get_apreq_filter(handle); struct filter_ctx *ctx; if (f->ctx == NULL) apreq_filter_make_context(f); ctx = f->ctx; if (ctx->body_status == APR_EINIT || ctx->brigade_limit > bytes) { ctx->brigade_limit = bytes; return APR_SUCCESS; } return APREQ_ERROR_MISMATCH; } static apr_status_t apache2_brigade_limit_get(apreq_handle_t *handle, apr_size_t *bytes) { ap_filter_t *f = get_apreq_filter(handle); struct filter_ctx *ctx; if (f->ctx == NULL) apreq_filter_make_context(f); ctx = f->ctx; *bytes = ctx->brigade_limit; return APR_SUCCESS; } static apr_status_t apache2_read_limit_set(apreq_handle_t *handle, apr_uint64_t bytes) { ap_filter_t *f = get_apreq_filter(handle); struct filter_ctx *ctx; if (f->ctx == NULL) apreq_filter_make_context(f); ctx = f->ctx; if (ctx->read_limit > bytes && ctx->bytes_read < bytes) { ctx->read_limit = bytes; return APR_SUCCESS; } return APREQ_ERROR_MISMATCH; } static apr_status_t apache2_read_limit_get(apreq_handle_t *handle, apr_uint64_t *bytes) { ap_filter_t *f = get_apreq_filter(handle); struct filter_ctx *ctx; if (f->ctx == NULL) apreq_filter_make_context(f); ctx = f->ctx; *bytes = ctx->read_limit; return APR_SUCCESS; } static apr_status_t apache2_temp_dir_set(apreq_handle_t *handle, const char *path) { ap_filter_t *f = get_apreq_filter(handle); struct filter_ctx *ctx; if (f->ctx == NULL) apreq_filter_make_context(f); ctx = f->ctx; // init vs incomplete state? if (ctx->temp_dir == NULL && ctx->bytes_read == 0) { if (path != NULL) ctx->temp_dir = apr_pstrdup(handle->pool, path); return APR_SUCCESS; } return APREQ_ERROR_NOTEMPTY; } static apr_status_t apache2_temp_dir_get(apreq_handle_t *handle, const char **path) { ap_filter_t *f = get_apreq_filter(handle); struct filter_ctx *ctx; if (f->ctx == NULL) apreq_filter_make_context(f); ctx = f->ctx; *path = ctx->parser ? ctx->parser->temp_dir : ctx->temp_dir; return APR_SUCCESS; } static APREQ_MODULE(apache2, APREQ_APACHE2_MMN); APREQ_DECLARE(apreq_handle_t *) apreq_handle_apache2(request_rec *r) { struct apache2_handle *req = ap_get_module_config(r->request_config, &apreq_module); if (req != NULL) { get_apreq_filter(&req->handle); return &req->handle; } req = apr_palloc(r->pool, sizeof *req); ap_set_module_config(r->request_config, &apreq_module, req); req->handle.module = &apache2_module; req->handle.pool = r->pool; req->handle.bucket_alloc = r->connection->bucket_alloc; req->r = r; req->args_status = req->jar_status = APR_EINIT; req->args = req->jar = NULL; req->f = NULL; get_apreq_filter(&req->handle); return &req->handle; } libapreq2-2.13/module/apache2/Makefile.am0000644000076400017500000000251411473532337017150 0ustar issacissacTEST_CONFIG_SCRIPT = package Apache::TestMM; filter_args(); generate_script("t/TEST") mod_apreq2_la_LDFLAGS = -export-dynamic -module -avoid-version \ `@APREQ_CONFIG@ --link-libtool --libs` @APR_LTFLAGS@ mod_apreq2_la_SOURCES = apreq_private_apache2.h handle.c filter.c pkgcfgdir = `@APACHE2_APXS@ -q SYSCONFDIR` pkgincludedir = `@APACHE2_APXS@ -q INCLUDEDIR`/@APREQ_LIBNAME@ pkglibdir = `@APACHE2_APXS@ -q LIBEXECDIR` AM_CPPFLAGS = @APACHE2_INCLUDES@ @APR_INCLUDES@ if BUILD_HTTPD # XXX FIXME: static builds don't work anymore # mod_apreq2 needs to be built from httpd-2.X, e.g. # # % cd ../httpd-2.X; # % ./configure --with-module=filters:../httpd-apreq-2/module/apache2/mod_apreq2.c ... # # See the INSTALL file for details. @APACHE2_HTTPD@: cd @APACHE2_SRC@ && $(MAKE) all-local: @APACHE2_HTTPD@ else pkginclude_HEADERS = apreq_module_apache2.h pkglib_LTLIBRARIES = mod_apreq2.la install-exec-local : @echo "----------------------------------------------------------------------" @echo "Before you can use mod_apreq2, you must ensure that an appropriate" @echo "\"LoadModule\" line appears in your webserver's config file:" @echo "$(pkgcfgdir)/httpd.conf" @echo @echo "LoadModule apreq_module $(pkglibdir)/mod_apreq2.so" @echo "----------------------------------------------------------------------" endif libapreq2-2.13/module/apache2/Makefile.in0000644000076400017500000004360711473533247017172 0ustar issacissac# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = module/apache2 DIST_COMMON = $(am__pkginclude_HEADERS_DIST) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/apreq_config.h CONFIG_CLEAN_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(pkglibdir)" \ "$(DESTDIR)$(pkgincludedir)" pkglibLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(pkglib_LTLIBRARIES) mod_apreq2_la_LIBADD = am_mod_apreq2_la_OBJECTS = handle.lo filter.lo mod_apreq2_la_OBJECTS = $(am_mod_apreq2_la_OBJECTS) mod_apreq2_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(mod_apreq2_la_LDFLAGS) $(LDFLAGS) -o $@ @BUILD_HTTPD_FALSE@am_mod_apreq2_la_rpath = -rpath $(pkglibdir) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(mod_apreq2_la_SOURCES) DIST_SOURCES = $(mod_apreq2_la_SOURCES) am__pkginclude_HEADERS_DIST = apreq_module_apache2.h pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) HEADERS = $(pkginclude_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkglibdir = `@APACHE2_APXS@ -q LIBEXECDIR` pkgincludedir = `@APACHE2_APXS@ -q INCLUDEDIR`/@APREQ_LIBNAME@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ APACHE1_APXS = @APACHE1_APXS@ APACHE2_APXS = @APACHE2_APXS@ APACHE2_HTTPD = @APACHE2_HTTPD@ APACHE2_INCLUDES = @APACHE2_INCLUDES@ APACHE2_SRC = @APACHE2_SRC@ APREQ_CONFIG = @APREQ_CONFIG@ APREQ_DOTTED_VERSION = @APREQ_DOTTED_VERSION@ APREQ_LIBNAME = @APREQ_LIBNAME@ APREQ_LIBTOOL_VERSION = @APREQ_LIBTOOL_VERSION@ APREQ_MAJOR_VERSION = @APREQ_MAJOR_VERSION@ APR_CONFIG = @APR_CONFIG@ APR_DOC_VERSION = @APR_DOC_VERSION@ APR_INCLUDES = @APR_INCLUDES@ APR_LA = @APR_LA@ APR_LDFLAGS = @APR_LDFLAGS@ APR_LIBS = @APR_LIBS@ APR_LTFLAGS = @APR_LTFLAGS@ APU_CONFIG = @APU_CONFIG@ APU_DOC_VERSION = @APU_DOC_VERSION@ APU_LA = @APU_LA@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MM_OPTS = @MM_OPTS@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PERL_OPTS = @PERL_OPTS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TAR = @TAR@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ TEST_CONFIG_SCRIPT = package Apache::TestMM; filter_args(); generate_script("t/TEST") mod_apreq2_la_LDFLAGS = -export-dynamic -module -avoid-version \ `@APREQ_CONFIG@ --link-libtool --libs` @APR_LTFLAGS@ mod_apreq2_la_SOURCES = apreq_private_apache2.h handle.c filter.c pkgcfgdir = `@APACHE2_APXS@ -q SYSCONFDIR` AM_CPPFLAGS = @APACHE2_INCLUDES@ @APR_INCLUDES@ @BUILD_HTTPD_FALSE@pkginclude_HEADERS = apreq_module_apache2.h @BUILD_HTTPD_FALSE@pkglib_LTLIBRARIES = mod_apreq2.la all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu module/apache2/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu module/apache2/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ f=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(pkglibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(pkglibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(pkglibdir)/$$f"; \ else :; fi; \ done uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \ p=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$p'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$p"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done mod_apreq2.la: $(mod_apreq2_la_OBJECTS) $(mod_apreq2_la_DEPENDENCIES) $(mod_apreq2_la_LINK) $(am_mod_apreq2_la_rpath) $(mod_apreq2_la_OBJECTS) $(mod_apreq2_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/handle.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" @list='$(pkginclude_HEADERS)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(pkgincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgincludedir)/$$f'"; \ $(pkgincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgincludedir)/$$f"; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pkgincludedir)/$$f'"; \ rm -f "$(DESTDIR)$(pkgincludedir)/$$f"; \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am @BUILD_HTTPD_FALSE@all-local: all-am: Makefile $(LTLIBRARIES) $(HEADERS) all-local installdirs: for dir in "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(pkgincludedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." @BUILD_HTTPD_TRUE@install-exec-local: clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-pkgincludeHEADERS install-dvi: install-dvi-am install-exec-am: install-exec-local install-pkglibLTLIBRARIES install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgincludeHEADERS uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am all-local check check-am clean \ clean-generic clean-libtool clean-pkglibLTLIBRARIES ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-exec-local install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgincludeHEADERS \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkgincludeHEADERS uninstall-pkglibLTLIBRARIES # XXX FIXME: static builds don't work anymore # mod_apreq2 needs to be built from httpd-2.X, e.g. # # % cd ../httpd-2.X; # % ./configure --with-module=filters:../httpd-apreq-2/module/apache2/mod_apreq2.c ... # # See the INSTALL file for details. @BUILD_HTTPD_TRUE@@APACHE2_HTTPD@: @BUILD_HTTPD_TRUE@ cd @APACHE2_SRC@ && $(MAKE) @BUILD_HTTPD_TRUE@all-local: @APACHE2_HTTPD@ @BUILD_HTTPD_FALSE@install-exec-local : @BUILD_HTTPD_FALSE@ @echo "----------------------------------------------------------------------" @BUILD_HTTPD_FALSE@ @echo "Before you can use mod_apreq2, you must ensure that an appropriate" @BUILD_HTTPD_FALSE@ @echo "\"LoadModule\" line appears in your webserver's config file:" @BUILD_HTTPD_FALSE@ @echo "$(pkgcfgdir)/httpd.conf" @BUILD_HTTPD_FALSE@ @echo @BUILD_HTTPD_FALSE@ @echo "LoadModule apreq_module $(pkglibdir)/mod_apreq2.so" @BUILD_HTTPD_FALSE@ @echo "----------------------------------------------------------------------" # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libapreq2-2.13/module/Makefile.am0000644000076400017500000000162211473532337015644 0ustar issacissacAM_CPPFLAGS = @APR_INCLUDES@ SUBDIRS = apache2 TEST_CONFIG_SCRIPT = package Apache::TestMM; filter_args(); generate_script("t/TEST") EXTRA_DIST = t noinst_PROGRAMS = test_cgi test_cgi_LDFLAGS = `@APREQ_CONFIG@ --link-libtool` @APR_LDFLAGS@ run_tests : t/TEST if [ ! -d t/cgi-bin ]; then mkdir t/cgi-bin; fi -cp -f test_cgi t/cgi-bin -cp -Rp .libs t/cgi-bin MAKE=$(MAKE) @PERL@ t/TEST t/TEST : Makefile.am t/TEST.PL @PERL@ -MApache::TestMM -e '$(TEST_CONFIG_SCRIPT)' -- -apxs @APACHE2_APXS@ test :: all check run_tests test_clean : cmodules_clean -MAKE=$(MAKE) @PERL@ t/TEST -clean -rm -rf t/htdocs t/logs t/modules t/TEST t/core t/core.* t/cgi-bin/test_cgi t/cgi-bin/.libs t/.libs t/conf/extra.conf t/conf/ssl/ca t/conf/ssl/httpd-passphrase.pl cmodules_clean: -cd t/c-modules && $(MAKE) clean -rm t/c-modules/Makefile t/c-modules/*/Makefile t/c-modules/apache_httpd_test.h clean-local: test_clean libapreq2-2.13/module/Makefile.in0000644000076400017500000004445011473533247015664 0ustar issacissac# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = test_cgi$(EXEEXT) subdir = module DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/apreq_config.h CONFIG_CLEAN_FILES = PROGRAMS = $(noinst_PROGRAMS) test_cgi_SOURCES = test_cgi.c test_cgi_OBJECTS = test_cgi.$(OBJEXT) test_cgi_LDADD = $(LDADD) test_cgi_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(test_cgi_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = test_cgi.c DIST_SOURCES = test_cgi.c RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ APACHE1_APXS = @APACHE1_APXS@ APACHE2_APXS = @APACHE2_APXS@ APACHE2_HTTPD = @APACHE2_HTTPD@ APACHE2_INCLUDES = @APACHE2_INCLUDES@ APACHE2_SRC = @APACHE2_SRC@ APREQ_CONFIG = @APREQ_CONFIG@ APREQ_DOTTED_VERSION = @APREQ_DOTTED_VERSION@ APREQ_LIBNAME = @APREQ_LIBNAME@ APREQ_LIBTOOL_VERSION = @APREQ_LIBTOOL_VERSION@ APREQ_MAJOR_VERSION = @APREQ_MAJOR_VERSION@ APR_CONFIG = @APR_CONFIG@ APR_DOC_VERSION = @APR_DOC_VERSION@ APR_INCLUDES = @APR_INCLUDES@ APR_LA = @APR_LA@ APR_LDFLAGS = @APR_LDFLAGS@ APR_LIBS = @APR_LIBS@ APR_LTFLAGS = @APR_LTFLAGS@ APU_CONFIG = @APU_CONFIG@ APU_DOC_VERSION = @APU_DOC_VERSION@ APU_LA = @APU_LA@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MM_OPTS = @MM_OPTS@ NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ PERL_OPTS = @PERL_OPTS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TAR = @TAR@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = @APR_INCLUDES@ SUBDIRS = apache2 TEST_CONFIG_SCRIPT = package Apache::TestMM; filter_args(); generate_script("t/TEST") EXTRA_DIST = t test_cgi_LDFLAGS = `@APREQ_CONFIG@ --link-libtool` @APR_LDFLAGS@ all: all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu module/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu module/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; for p in $$list; do \ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ echo " rm -f $$p $$f"; \ rm -f $$p $$f ; \ done test_cgi$(EXEEXT): $(test_cgi_OBJECTS) $(test_cgi_DEPENDENCIES) @rm -f test_cgi$(EXEEXT) $(test_cgi_LINK) $(test_cgi_OBJECTS) $(test_cgi_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_cgi.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(PROGRAMS) installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-local clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-exec-am: install-html: install-html-recursive install-info: install-info-recursive install-man: install-pdf: install-pdf-recursive install-ps: install-ps-recursive installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ clean-local clean-noinstPROGRAMS ctags ctags-recursive \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am run_tests : t/TEST if [ ! -d t/cgi-bin ]; then mkdir t/cgi-bin; fi -cp -f test_cgi t/cgi-bin -cp -Rp .libs t/cgi-bin MAKE=$(MAKE) @PERL@ t/TEST t/TEST : Makefile.am t/TEST.PL @PERL@ -MApache::TestMM -e '$(TEST_CONFIG_SCRIPT)' -- -apxs @APACHE2_APXS@ test :: all check run_tests test_clean : cmodules_clean -MAKE=$(MAKE) @PERL@ t/TEST -clean -rm -rf t/htdocs t/logs t/modules t/TEST t/core t/core.* t/cgi-bin/test_cgi t/cgi-bin/.libs t/.libs t/conf/extra.conf t/conf/ssl/ca t/conf/ssl/httpd-passphrase.pl cmodules_clean: -cd t/c-modules && $(MAKE) clean -rm t/c-modules/Makefile t/c-modules/*/Makefile t/c-modules/apache_httpd_test.h clean-local: test_clean # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libapreq2-2.13/module/t/big_request.t0000644000076400017500000000344411473532337016555 0ustar issacissacuse strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use Apache::TestConfig; use Apache::TestRequest qw(GET_BODY POST_BODY); my @key_len = (5, 100, 305); my @key_num = (5, 15, 26); my @keys = ('a'..'z'); my @big_key_len = (100, 500, 5000, 10000); my @big_key_num = (5, 15, 25); my @big_keys = ('a'..'z'); my $num_tests = @key_len * @key_num + @big_key_len * @big_key_num; $num_tests *= 2 if Apache::Test::have_ssl(); plan tests => $num_tests, need_lwp; my $location = "/apreq_big_request_test"; my $scheme = 'http'; START_TESTS: Apache::TestRequest::scheme($scheme); # GET for my $key_len (@key_len) { for my $key_num (@key_num) { my @query = (); my $len = 0; for my $key (@keys[0..($key_num-1)]) { my $pair = "$key=" . 'd' x $key_len; $len += length($pair) - 1; push @query, $pair; } my $query = join ";", @query; t_debug "# of keys : $key_num, key_len $key_len"; my $body = GET_BODY "$location?$query"; ok t_cmp($body, $len, "GET long query"); } } # POST for my $big_key_len (@big_key_len) { for my $big_key_num (@big_key_num) { my @query = (); my $len = 0; for my $big_key (@big_keys[0..($big_key_num-1)]) { my $pair = "$big_key=" . 'd' x $big_key_len; $len += length($pair) - 1; push @query, $pair; } my $query = join ";", @query; t_debug "# of keys : $big_key_num, big_key_len $big_key_len"; my $body = POST_BODY($location, content => $query); ok t_cmp($body, $len, "POST big data"); } } if (Apache::Test::have_ssl() and $scheme ne 'https') { $scheme = 'https'; goto START_TESTS; } libapreq2-2.13/module/t/c-modules/apreq_access_test/mod_apreq_access_test.c0000644000076400017500000000622611473532337026133 0ustar issacissac/* ** 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. */ #ifdef CONFIG_FOR_HTTPD_TEST #if CONFIG_FOR_HTTPD_TEST TestAccess test SetHandler apreq_request_test #endif #endif #define APACHE_HTTPD_TEST_ACCESS_CHECKER apreq_access_checker #define APACHE_HTTPD_TEST_COMMANDS access_cmds #define APACHE_HTTPD_TEST_PER_DIR_CREATE create_access_config #include "apache_httpd_test.h" #include "apreq_module_apache2.h" #include "httpd.h" #include "apr_strings.h" extern module AP_MODULE_DECLARE_DATA apreq_access_test_module; struct access_test_cfg { apr_pool_t *pool; const char *param; }; static const char *access_config(cmd_parms *cmd, void *dv, const char *arg) { struct access_test_cfg *cfg = (struct access_test_cfg *)dv; cfg->param = apr_pstrdup(cfg->pool, arg); return NULL; } static const command_rec access_cmds[] = { AP_INIT_TAKE1("TestAccess", access_config, NULL, OR_LIMIT, "'param'"), { NULL } }; static void *create_access_config(apr_pool_t *p, char *dummy) { struct access_test_cfg *cfg = apr_palloc(p, sizeof *cfg); cfg->pool = p; cfg->param = dummy; return cfg; } static int apreq_access_checker(request_rec *r) { apreq_handle_t *handle; apreq_param_t *param; struct access_test_cfg *cfg = (struct access_test_cfg *) ap_get_module_config(r->per_dir_config, &apreq_access_test_module); APR_OPTIONAL_FN_TYPE(apreq_handle_apache2) *fcn = APR_RETRIEVE_OPTIONAL_FN(apreq_handle_apache2); if (!cfg || !cfg->param || !fcn) return DECLINED; handle = fcn(r); param = apreq_param(handle, cfg->param); if (param != NULL) { ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r, "ACCESS GRANTED: %s => %s", cfg->param, param->v.data); return OK; } else { const apr_table_t *t = apreq_params(handle, r->pool); if (t != NULL) { ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_EGENERAL, r, "%s not found: parsing error detected (%d params)", cfg->param, apr_table_elts(t)->nelts); } else { ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_EGENERAL, r, "%s not found: paring error detected (no param table)", cfg->param); } return HTTP_FORBIDDEN; } } APACHE_HTTPD_TEST_MODULE(apreq_access_test); libapreq2-2.13/module/t/c-modules/apreq_big_request_test/mod_apreq_big_request_test.c0000644000076400017500000000334311473532337030250 0ustar issacissac/* ** 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. */ #ifdef CONFIG_FOR_HTTPD_TEST #if CONFIG_FOR_HTTPD_TEST SetHandler apreq_big_request_test #endif #endif #define APACHE_HTTPD_TEST_HANDLER apreq_big_request_test_handler #include "apache_httpd_test.h" #include "apreq_module_apache2.h" #include "httpd.h" static int dump_table(void *count, const char *key, const char *value) { int *c = (int *) count; *c = *c + strlen(key) + strlen(value); return 1; } static int apreq_big_request_test_handler(request_rec *r) { apreq_handle_t *req; apr_table_t *params; int count = 0; if (strcmp(r->handler, "apreq_big_request_test") != 0) return DECLINED; req = apreq_handle_apache2(r); params = apreq_params(req, r->pool); apr_table_do(dump_table, &count, params, NULL); ap_set_content_type(r, "text/plain"); ap_rprintf(r, "%d", count); return OK; } APACHE_HTTPD_TEST_MODULE(apreq_big_request_test); libapreq2-2.13/module/t/c-modules/apreq_cookie_test/mod_apreq_cookie_test.c0000644000076400017500000000547411473532337026157 0ustar issacissac/* ** 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. */ #ifdef CONFIG_FOR_HTTPD_TEST #if CONFIG_FOR_HTTPD_TEST SetHandler apreq_cookie_test #endif #endif #define APACHE_HTTPD_TEST_HANDLER apreq_cookie_test_handler #include "apache_httpd_test.h" #include "apreq_module_apache2.h" #include "apreq_util.h" #include "httpd.h" #include static int dump_table(void *ctx, const char *key, const char *value) { request_rec *r = ctx; ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r, "[%s] => [%s]", key, value); return 1; } static int apreq_cookie_test_handler(request_rec *r) { apreq_handle_t *req; apr_status_t s; const char *test, *key; apreq_cookie_t *cookie; apr_size_t size; char *dest; const apr_table_t *args; if (strcmp(r->handler, "apreq_cookie_test") != 0) return DECLINED; req = apreq_handle_apache2(r); ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r, "starting cookie tests"); apreq_args(req, &args); apr_table_do(dump_table, r, args, NULL); test = apr_table_get(args, "test"); key = apr_table_get(args, "key"); cookie = apreq_cookie(req, key); ap_set_content_type(r, "text/plain"); if (strcmp(test, "bake") == 0) { apr_table_add(r->headers_out, "Set-Cookie", apreq_cookie_as_string(cookie, r->pool)); } else if (strcmp(test, "bake2") == 0) { apr_table_add(r->headers_out, "Set-Cookie2", apreq_cookie_as_string(cookie, r->pool)); } else if (strcmp(test, "httponly") == 0) { apreq_cookie_httponly_on(cookie); apr_table_add(r->headers_out, "Set-Cookie", apreq_cookie_as_string(cookie, r->pool)); } else { size = strlen(cookie->v.data); dest = apr_palloc(r->pool, size + 1); s = apreq_decode(dest, &size, cookie->v.data, size); if (s == APR_SUCCESS) ap_rprintf(r, "%s", dest); } return OK; } APACHE_HTTPD_TEST_MODULE(apreq_cookie_test); libapreq2-2.13/module/t/c-modules/apreq_output_filter_test/mod_apreq_output_filter_test.c0000644000076400017500000000602011473532337031233 0ustar issacissac/* ** 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. */ #ifdef CONFIG_FOR_HTTPD_TEST #if CONFIG_FOR_HTTPD_TEST AddOutputFilter APREQ_OUTPUT_FILTER html #endif #endif #include "apache_httpd_test.h" #include "apreq_module_apache2.h" #include "httpd.h" #include "util_filter.h" static const char filter_name[] = "APREQ_OUTPUT_FILTER"; extern module AP_MODULE_DECLARE_DATA apreq_output_filter_test_module; static apr_status_t apreq_output_filter_test_init(ap_filter_t *f) { apreq_handle_t *handle; handle = apreq_handle_apache2(f->r); return APR_SUCCESS; } struct ctx_t { request_rec *r; apr_bucket_brigade *bb; }; static int dump_table(void *data, const char *key, const char *value) { struct ctx_t *ctx = (struct ctx_t *)data; ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, ctx->r, "%s => %s", key, value); apr_brigade_printf(ctx->bb,NULL,NULL,"\t%s => %s\n", key, value); return 1; } static apr_status_t apreq_output_filter_test(ap_filter_t *f, apr_bucket_brigade *bb) { request_rec *r = f->r; apreq_handle_t *handle; apr_bucket_brigade *eos; struct ctx_t ctx = {r, bb}; const apr_table_t *t; if (!APR_BUCKET_IS_EOS(APR_BRIGADE_LAST(bb))) return ap_pass_brigade(f->next,bb); eos = apr_brigade_split(bb, APR_BRIGADE_LAST(bb)); handle = apreq_handle_apache2(r); ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r, "appending parsed data"); apr_brigade_puts(bb, NULL, NULL, "\n--APREQ OUTPUT FILTER--\nARGS:\n"); apreq_args(handle, &t); if (t != NULL) apr_table_do(dump_table, &ctx, t, NULL); apreq_body(handle, &t); if (t != NULL) { apr_brigade_puts(bb,NULL,NULL,"BODY:\n"); apr_table_do(dump_table, &ctx, t, NULL); } APR_BRIGADE_CONCAT(bb,eos); return ap_pass_brigade(f->next,bb); } static void register_hooks (apr_pool_t *p) { (void)p; ap_register_output_filter(filter_name, apreq_output_filter_test, apreq_output_filter_test_init, AP_FTYPE_CONTENT_SET); } module AP_MODULE_DECLARE_DATA apreq_output_filter_test_module = { STANDARD20_MODULE_STUFF, NULL, NULL, NULL, NULL, NULL, register_hooks, /* callback for registering hooks */ }; libapreq2-2.13/module/t/c-modules/apreq_redirect_test/mod_apreq_redirect_test.c0000644000076400017500000000334111473532337027026 0ustar issacissac/* ** 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. */ #ifdef CONFIG_FOR_HTTPD_TEST #if CONFIG_FOR_HTTPD_TEST TestAccess test SetHandler apreq_redirect_test #endif #endif #define APACHE_HTTPD_TEST_HANDLER apreq_redirect_test_handler #include "apache_httpd_test.h" #include "apreq_module_apache2.h" #include "httpd.h" static int apreq_redirect_test_handler(request_rec *r) { apreq_handle_t *req; const apreq_param_t *loc; if (strcmp(r->handler, "apreq_redirect_test") != 0) return DECLINED; req = apreq_handle_apache2(r); ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r, "looking for new location"); loc = apreq_param(req, "location"); if (!loc) return DECLINED; ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r, "redirecting to %s", loc->v.data); ap_internal_redirect(loc->v.data, r); return OK; } APACHE_HTTPD_TEST_MODULE(apreq_redirect_test); libapreq2-2.13/module/t/c-modules/apreq_request_test/mod_apreq_request_test.c0000644000076400017500000000444511473532337026612 0ustar issacissac/* ** 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. */ #ifdef CONFIG_FOR_HTTPD_TEST #if CONFIG_FOR_HTTPD_TEST APREQ2_ReadLimit 500K SetHandler apreq_request_test #endif #endif #define APACHE_HTTPD_TEST_HANDLER apreq_request_test_handler #include "apache_httpd_test.h" #include "apreq_module_apache2.h" #include "httpd.h" static int dump_table(void *ctx, const char *key, const char *value) { request_rec *r = ctx; ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r, "%s => %s", key, value); ap_rprintf(r, "\t%s => %s\n", key, value); return 1; } static int apreq_request_test_handler(request_rec *r) { apreq_handle_t *req; const apr_table_t *t; apr_status_t s; if (strcmp(r->handler, "apreq_request_test") != 0) return DECLINED; req = apreq_handle_apache2(r); ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r, "starting apreq_request_test"); s = ap_discard_request_body(r); ap_log_rerror(APLOG_MARK, APLOG_DEBUG, s, r, "discard request body"); ap_set_content_type(r, "text/plain"); ap_rputs("ARGS:\n",r); if (apreq_args(req, &t) == APR_SUCCESS) apr_table_do(dump_table, r, t, NULL); if (apreq_body(req, &t) == APR_SUCCESS) { ap_rputs("BODY:\n",r); apr_table_do(dump_table, r, t, NULL); } ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r, "finished apreq_request_test"); return OK; } APACHE_HTTPD_TEST_MODULE(apreq_request_test); libapreq2-2.13/module/t/c-modules/apreq_upload_test/10k0000644000076400017500000002400011473532337021767 0ustar issacissaclibapreq2-2.13/module/t/c-modules/apreq_upload_test/128k0000644000076400017500000040000011473532337022057 0ustar issacissaclibapreq2-2.13/module/t/c-modules/apreq_upload_test/1b0000644000076400017500000000000111473532337021671 0ustar issacissaclibapreq2-2.13/module/t/c-modules/apreq_upload_test/1k0000644000076400017500000000200011473532337021703 0ustar issacissaclibapreq2-2.13/module/t/c-modules/apreq_upload_test/63k0000644000076400017500000017600011473532337022007 0ustar issacissaclibapreq2-2.13/module/t/c-modules/apreq_upload_test/64k0000644000076400017500000020000011473532337021774 0ustar issacissaclibapreq2-2.13/module/t/c-modules/apreq_upload_test/65k0000644000076400017500000020200011473532337021777 0ustar issacissaclibapreq2-2.13/module/t/c-modules/apreq_upload_test/mod_apreq_upload_test.c0000644000076400017500000000536611473532337026205 0ustar issacissac/* ** 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. */ #ifdef CONFIG_FOR_HTTPD_TEST #if CONFIG_FOR_HTTPD_TEST SetHandler apreq_upload_test #endif #endif #define APACHE_HTTPD_TEST_HANDLER apreq_upload_test_handler #include "apache_httpd_test.h" #include "apreq_module.h" #include "apreq_param.h" #include "apreq_module_apache2.h" #include "apreq_util.h" #include "httpd.h" static int apreq_upload_test_handler(request_rec *r) { apreq_handle_t *req; const apreq_param_t *param; if (strcmp(r->handler, "apreq_upload_test") != 0) { return DECLINED; } req = apreq_handle_apache2(r) ; ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r, "starting apreq_upload_test"); ap_set_content_type(r, "text/plain"); param = apreq_body_get(req, "filename"); if (param == NULL) { ap_rputs("missing upload field", r); } else if (param->upload == NULL) { ap_rputs("not an upload field", r); } else { apr_table_t *info; /* upload headers */ apr_bucket_brigade *bb; /* upload contents */ apr_bucket *e; apr_size_t total = 0; info = param->info; bb = apr_brigade_create(r->pool, r->connection->bucket_alloc); apreq_brigade_copy(bb, param->upload); while ((e = APR_BRIGADE_FIRST(bb)) != APR_BRIGADE_SENTINEL(bb)) { apr_size_t dlen; const char *data; /* apr_bucket_read() has side effects on spool buckets, which * is why we read from a copy of the brigade - to conserve memory */ if (apr_bucket_read(e, &data, &dlen, APR_BLOCK_READ)) { ap_rprintf(r, "bad bucket read"); break; } else { total += dlen; } apr_bucket_delete(e); } ap_rprintf(r, "%d", total); } ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r, "finished apreq_upload_test"); return OK; } APACHE_HTTPD_TEST_MODULE(apreq_upload_test); libapreq2-2.13/module/t/cgi.t0000644000076400017500000000765511473532337015016 0ustar issacissacuse strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use Apache::TestConfig; use Apache::TestRequest qw(GET_BODY UPLOAD_BODY POST_BODY GET_RC GET_HEAD); use constant WIN32 => Apache::TestConfig::WIN32; my @key_len = (5, 100, 305); my @key_num = (5, 15, 26); my @keys = ('a'..'z'); my @big_key_len = (100, 500, 5000, 10000); my @big_key_num = (5, 15, 25); my @big_keys = ('a'..'z'); plan tests => 10 + @key_len * @key_num + @big_key_len * @big_key_num, need_lwp && need_cgi; require HTTP::Cookies; my $location = '/cgi-bin'; my $script = $location . (WIN32 ? '/test_cgi.exe' : '/test_cgi'); my $line_end = "\n"; my $filler = "0123456789" x 20; # < 64K # GET for my $key_len (@key_len) { for my $key_num (@key_num) { my @query = (); my $len = 0; for my $key (@keys[0..($key_num-1)]) { my $pair = "$key=" . 'd' x $key_len; $len += length($pair) - 1; push @query, $pair; } my $query = join ";", @query; t_debug "# of keys : $key_num, key_len $key_len"; my $body = GET_BODY "$script?$query"; ok t_cmp($body, $len, "GET long query"); } } # POST for my $big_key_len (@big_key_len) { for my $big_key_num (@big_key_num) { my @query = (); my $len = 0; for my $big_key (@big_keys[0..($big_key_num-1)]) { my $pair = "$big_key=" . 'd' x $big_key_len; $len += length($pair) - 1; push @query, $pair; } my $query = join ";", @query; t_debug "# of keys : $big_key_num, big_key_len $big_key_len"; my $body = POST_BODY($script, content => $query); ok t_cmp($body, $len, "POST big data"); } } ok t_cmp(POST_BODY("$script?foo=1", Content => $filler), "\tfoo => 1$line_end", "simple post"); ok t_cmp(GET_BODY("$script?foo=%3F&bar=hello+world"), "\tfoo => ?$line_end\tbar => hello world$line_end", "simple get"); my $body = POST_BODY($script, content => "aaa=$filler;foo=1;bar=2;filler=$filler"); ok t_cmp($body, "\tfoo => 1$line_end\tbar => 2$line_end", "simple post"); $body = POST_BODY("$script?foo=1", content => "intro=$filler&bar=2&conclusion=$filler"); ok t_cmp($body, "\tfoo => 1$line_end\tbar => 2$line_end", "simple post"); $body = UPLOAD_BODY("$script?foo=0", content => $filler); ok t_cmp($body, "\tfoo => 0$line_end", "simple upload"); { my $test = 'netscape'; my $key = 'apache'; my $value = 'ok'; my $cookie = qq{$key=$value}; ok t_cmp($value, GET_BODY("$script?test=$test&key=$key", Cookie => $cookie), $test); } { my $test = 'rfc'; my $key = 'apache'; my $value = 'ok'; my $cookie = qq{\$Version="1"; $key="$value"; \$Path="$location"}; ok t_cmp(qq{"$value"}, GET_BODY("$script?test=$test&key=$key", Cookie => $cookie), $test); } { my $test = 'encoded value with space'; my $key = 'apache'; my $value = 'okie dokie'; my $cookie = "$key=" . join '', map {/ / ? '+' : sprintf '%%%.2X', ord} split //, $value; ok t_cmp($value, GET_BODY("$script?test=$test&key=$key", Cookie => $cookie), $test); } { my $test = 'bake'; my $key = 'apache'; my $value = 'ok'; my $cookie = "$key=$value"; my ($header) = GET_HEAD("$script?test=$test&key=$key", Cookie => $cookie) =~ /^#Set-Cookie:\s+(.+)/m; ok t_cmp($cookie, $header, $test); } { my $test = 'bake2'; my $key = 'apache'; my $value = 'ok'; my $cookie = qq{\$Version="1"; $key="$value"; \$Path="$location"}; my ($header) = GET_HEAD("$script?test=$test&key=$key", Cookie => $cookie) =~ /^#Set-Cookie2:\s+(.+)/m; ok t_cmp(qq{$key="$value"; Version=1; path="$location"}, $header, $test); } libapreq2-2.13/module/t/conf/extra.conf.in0000644000076400017500000000037411473532337017402 0ustar issacissac ScriptAlias /cgi-bin/ "@ServerRoot@/cgi-bin/" LockFile @ServerRoot@/logs/accept.lock AllowOverride None Options None libapreq2-2.13/module/t/conf/ssl/ca-bundle-duplicates.crt0000644000076400017500000001411511473532337022301 0ustar issacissac#some duplicates of certs found in mod_ssl-2.x.x-1.3.xx/pkg.sslcfg/ca-bundle.crt #to make sure mod_ssl can handle duplicates ABAecom (sub., Am. Bankers Assn.) Root CA ========================================= MD5 Fingerprint: 82:12:F7:89:E1:0B:91:60:A4:B6:22:9F:94:68:11:92 PEM Data: -----BEGIN CERTIFICATE----- MIID+DCCAuCgAwIBAgIRANAeQJAAACdLAAAAAQAAAAQwDQYJKoZIhvcNAQEFBQAw gYwxCzAJBgNVBAYTAlVTMQ0wCwYDVQQIEwRVdGFoMRcwFQYDVQQHEw5TYWx0IExh a2UgQ2l0eTEYMBYGA1UEChMPWGNlcnQgRVogYnkgRFNUMRgwFgYDVQQDEw9YY2Vy dCBFWiBieSBEU1QxITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAe Fw05OTA3MTQxNjE0MThaFw0wOTA3MTExNjE0MThaMIGMMQswCQYDVQQGEwJVUzEN MAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxGDAWBgNVBAoT D1hjZXJ0IEVaIGJ5IERTVDEYMBYGA1UEAxMPWGNlcnQgRVogYnkgRFNUMSEwHwYJ KoZIhvcNAQkBFhJjYUBkaWdzaWd0cnVzdC5jb20wggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQCtVBjetL/3reh0qu2LfI/C1HUa1YS5tmL8ie/kl2GS+x24 4VpHNJ6eBiL70+o4y7iLB/caoBd3B1owHNQpOCDXJ0DYUJNDv9IYoil2BXKqa7Zp mKt5Hhxl9WqL/MUWqqJy2mDtTm4ZJXoKHTDjUJtCPETrobAgHtsCfv49H7/QAIrb QHamGKUVp1e2UsIBF5h3j4qBxhq0airmr6nWAKzP2BVJfNsbof6B+of505DBAsD5 0ELpkWglX8a/hznplQBgKL+DLMDnXrbXNhbnYId26OcnsiUNi3rlqh3lWc3OCw5v xsic4xDZhTnTt5v6xrp8dNJddVardKSiUb9SfO5xAgMBAAGjUzBRMA8GA1UdEwEB /wQFMAMBAf8wHwYDVR0jBBgwFoAUCCBsZuuBCmxc1bWmPEHdHJaRJ3cwHQYDVR0O BBYEFAggbGbrgQpsXNW1pjxB3RyWkSd3MA0GCSqGSIb3DQEBBQUAA4IBAQBah1iP Lat2IWtUDNnxQfZOzSue4x+boy1/2St9WMhnpCn16ezVvZY/o3P4xFs2fNBjLDQ5 m0i4PW/2FMWeY+anNG7T6DOzxzwYbiOuQ5KZP5jFaTDxNjutuTCC1rZZFpYCCykS YbQRifcML5SQhZgonFNsfmPdc/QZ/0qB0bJSI/08SjTOWhvgUIrtT4GV2GDn5MQN u1g+WPdOaG8+Z8nLepcWJ+xCYRR2uwDF6wg9FX9LtiJdhzuQ9PPA/jez6dliDMDD Wa9gvR8N26E0HzDEPYutsB0Ek+1f1eS/IDAE9EjpMwHRLpAnUrOb3jocq6mXf5vr wo3CbezcE9NGxXl8 -----END CERTIFICATE----- Certificate Ingredients: Data: Version: 3 (0x2) Serial Number: d0:1e:40:90:00:00:27:4b:00:00:00:01:00:00:00:04 Signature Algorithm: sha1WithRSAEncryption Issuer: C=US, ST=Utah, L=Salt Lake City, O=Xcert EZ by DST, CN=Xcert EZ by DST/Email=ca@digsigtrust.com Validity Not Before: Jul 14 16:14:18 1999 GMT Not After : Jul 11 16:14:18 2009 GMT Subject: C=US, ST=Utah, L=Salt Lake City, O=Xcert EZ by DST, CN=Xcert EZ by DST/Email=ca@digsigtrust.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (2048 bit) Modulus (2048 bit): 00:ad:54:18:de:b4:bf:f7:ad:e8:74:aa:ed:8b:7c: 8f:c2:d4:75:1a:d5:84:b9:b6:62:fc:89:ef:e4:97: 61:92:fb:1d:b8:e1:5a:47:34:9e:9e:06:22:fb:d3: ea:38:cb:b8:8b:07:f7:1a:a0:17:77:07:5a:30:1c: d4:29:38:20:d7:27:40:d8:50:93:43:bf:d2:18:a2: 29:76:05:72:aa:6b:b6:69:98:ab:79:1e:1c:65:f5: 6a:8b:fc:c5:16:aa:a2:72:da:60:ed:4e:6e:19:25: 7a:0a:1d:30:e3:50:9b:42:3c:44:eb:a1:b0:20:1e: db:02:7e:fe:3d:1f:bf:d0:00:8a:db:40:76:a6:18: a5:15:a7:57:b6:52:c2:01:17:98:77:8f:8a:81:c6: 1a:b4:6a:2a:e6:af:a9:d6:00:ac:cf:d8:15:49:7c: db:1b:a1:fe:81:fa:87:f9:d3:90:c1:02:c0:f9:d0: 42:e9:91:68:25:5f:c6:bf:87:39:e9:95:00:60:28: bf:83:2c:c0:e7:5e:b6:d7:36:16:e7:60:87:76:e8: e7:27:b2:25:0d:8b:7a:e5:aa:1d:e5:59:cd:ce:0b: 0e:6f:c6:c8:9c:e3:10:d9:85:39:d3:b7:9b:fa:c6: ba:7c:74:d2:5d:75:56:ab:74:a4:a2:51:bf:52:7c: ee:71 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: critical CA:TRUE X509v3 Authority Key Identifier: keyid:08:20:6C:66:EB:81:0A:6C:5C:D5:B5:A6:3C:41:DD:1C:96:91:27:77 X509v3 Subject Key Identifier: 08:20:6C:66:EB:81:0A:6C:5C:D5:B5:A6:3C:41:DD:1C:96:91:27:77 Signature Algorithm: sha1WithRSAEncryption 5a:87:58:8f:2d:ab:76:21:6b:54:0c:d9:f1:41:f6:4e:cd:2b: 9e:e3:1f:9b:a3:2d:7f:d9:2b:7d:58:c8:67:a4:29:f5:e9:ec: d5:bd:96:3f:a3:73:f8:c4:5b:36:7c:d0:63:2c:34:39:9b:48: b8:3d:6f:f6:14:c5:9e:63:e6:a7:34:6e:d3:e8:33:b3:c7:3c: 18:6e:23:ae:43:92:99:3f:98:c5:69:30:f1:36:3b:ad:b9:30: 82:d6:b6:59:16:96:02:0b:29:12:61:b4:11:89:f7:0c:2f:94: 90:85:98:28:9c:53:6c:7e:63:dd:73:f4:19:ff:4a:81:d1:b2: 52:23:fd:3c:4a:34:ce:5a:1b:e0:50:8a:ed:4f:81:95:d8:60: e7:e4:c4:0d:bb:58:3e:58:f7:4e:68:6f:3e:67:c9:cb:7a:97: 16:27:ec:42:61:14:76:bb:00:c5:eb:08:3d:15:7f:4b:b6:22: 5d:87:3b:90:f4:f3:c0:fe:37:b3:e9:d9:62:0c:c0:c3:59:af: 60:bd:1f:0d:db:a1:34:1f:30:c4:3d:8b:ad:b0:1d:04:93:ed: 5f:d5:e4:bf:20:30:04:f4:48:e9:33:01:d1:2e:90:27:52:b3: 9b:de:3a:1c:ab:a9:97:7f:9b:eb:c2:8d:c2:6d:ec:dc:13:d3: 46:c5:79:7c ANX Network CA by DST ===================== MD5 Fingerprint: A8:ED:DE:EB:93:88:66:D8:2F:C3:BD:1D:BE:45:BE:4D PEM Data: -----BEGIN CERTIFICATE----- MIIDTTCCAragAwIBAgIENm6ibzANBgkqhkiG9w0BAQUFADBSMQswCQYDVQQGEwJV UzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMR0wGwYDVQQL ExREU1QgKEFOWCBOZXR3b3JrKSBDQTAeFw05ODEyMDkxNTQ2NDhaFw0xODEyMDkx NjE2NDhaMFIxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVy ZSBUcnVzdCBDby4xHTAbBgNVBAsTFERTVCAoQU5YIE5ldHdvcmspIENBMIGdMA0G CSqGSIb3DQEBAQUAA4GLADCBhwKBgQC0SBGAWKDVpZkP9jcsRLZu0XzzKmueEbaI IwRccSWeahJ3EW6/aDllqPay9qIYsokVoGe3eowiSGv2hDQftsr3G3LL8ltI04ce InYTBLSsbJZ/5w4IyTJRMC3VgOghZ7rzXggkLAdZnZAa7kbJtaQelrRBkdR/0o04 JrBvQ24JfQIBA6OCATAwggEsMBEGCWCGSAGG+EIBAQQEAwIABzB0BgNVHR8EbTBr MGmgZ6BlpGMwYTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0 dXJlIFRydXN0IENvLjEdMBsGA1UECxMURFNUIChBTlggTmV0d29yaykgQ0ExDTAL BgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMDkxNTQ2NDhagQ8yMDE4MTIw OTE1NDY0OFowCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFIwWVXDMFgpTZMKlhKqz ZBdDP4I2MB0GA1UdDgQWBBSMFlVwzBYKU2TCpYSqs2QXQz+CNjAMBgNVHRMEBTAD AQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB AEklyWCxDF+pORDTxTRVfc95wynr3vnCQPnoVsXwL+z02exIUbhjOF6TbhiWhbnK UJykuOpmJmiThW9vTHHQvnoLPDG5975pnhDX0UDorBZxq66rOOFwscqSFuBdhaYY gAYAnOGmGEJRp2hoWe8mlF+tMQz+KR4XAYQ3W+gSMqNd -----END CERTIFICATE----- libapreq2-2.13/module/t/conf/ssl/ca-bundle-sample.crt0000644000076400017500000005057711473532337021441 0ustar issacissac#pkg.sslcfg/ca-bundle.crt is ~250k, so it is not checked into cvs #for better test results, copy that file into this directory #and leave this one in place ABAecom (sub., Am. Bankers Assn.) Root CA ========================================= MD5 Fingerprint: 82:12:F7:89:E1:0B:91:60:A4:B6:22:9F:94:68:11:92 PEM Data: -----BEGIN CERTIFICATE----- MIID+DCCAuCgAwIBAgIRANAeQJAAACdLAAAAAQAAAAQwDQYJKoZIhvcNAQEFBQAw gYwxCzAJBgNVBAYTAlVTMQ0wCwYDVQQIEwRVdGFoMRcwFQYDVQQHEw5TYWx0IExh a2UgQ2l0eTEYMBYGA1UEChMPWGNlcnQgRVogYnkgRFNUMRgwFgYDVQQDEw9YY2Vy dCBFWiBieSBEU1QxITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAe Fw05OTA3MTQxNjE0MThaFw0wOTA3MTExNjE0MThaMIGMMQswCQYDVQQGEwJVUzEN MAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxGDAWBgNVBAoT D1hjZXJ0IEVaIGJ5IERTVDEYMBYGA1UEAxMPWGNlcnQgRVogYnkgRFNUMSEwHwYJ KoZIhvcNAQkBFhJjYUBkaWdzaWd0cnVzdC5jb20wggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQCtVBjetL/3reh0qu2LfI/C1HUa1YS5tmL8ie/kl2GS+x24 4VpHNJ6eBiL70+o4y7iLB/caoBd3B1owHNQpOCDXJ0DYUJNDv9IYoil2BXKqa7Zp mKt5Hhxl9WqL/MUWqqJy2mDtTm4ZJXoKHTDjUJtCPETrobAgHtsCfv49H7/QAIrb QHamGKUVp1e2UsIBF5h3j4qBxhq0airmr6nWAKzP2BVJfNsbof6B+of505DBAsD5 0ELpkWglX8a/hznplQBgKL+DLMDnXrbXNhbnYId26OcnsiUNi3rlqh3lWc3OCw5v xsic4xDZhTnTt5v6xrp8dNJddVardKSiUb9SfO5xAgMBAAGjUzBRMA8GA1UdEwEB /wQFMAMBAf8wHwYDVR0jBBgwFoAUCCBsZuuBCmxc1bWmPEHdHJaRJ3cwHQYDVR0O BBYEFAggbGbrgQpsXNW1pjxB3RyWkSd3MA0GCSqGSIb3DQEBBQUAA4IBAQBah1iP Lat2IWtUDNnxQfZOzSue4x+boy1/2St9WMhnpCn16ezVvZY/o3P4xFs2fNBjLDQ5 m0i4PW/2FMWeY+anNG7T6DOzxzwYbiOuQ5KZP5jFaTDxNjutuTCC1rZZFpYCCykS YbQRifcML5SQhZgonFNsfmPdc/QZ/0qB0bJSI/08SjTOWhvgUIrtT4GV2GDn5MQN u1g+WPdOaG8+Z8nLepcWJ+xCYRR2uwDF6wg9FX9LtiJdhzuQ9PPA/jez6dliDMDD Wa9gvR8N26E0HzDEPYutsB0Ek+1f1eS/IDAE9EjpMwHRLpAnUrOb3jocq6mXf5vr wo3CbezcE9NGxXl8 -----END CERTIFICATE----- Certificate Ingredients: Data: Version: 3 (0x2) Serial Number: d0:1e:40:90:00:00:27:4b:00:00:00:01:00:00:00:04 Signature Algorithm: sha1WithRSAEncryption Issuer: C=US, ST=Utah, L=Salt Lake City, O=Xcert EZ by DST, CN=Xcert EZ by DST/Email=ca@digsigtrust.com Validity Not Before: Jul 14 16:14:18 1999 GMT Not After : Jul 11 16:14:18 2009 GMT Subject: C=US, ST=Utah, L=Salt Lake City, O=Xcert EZ by DST, CN=Xcert EZ by DST/Email=ca@digsigtrust.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (2048 bit) Modulus (2048 bit): 00:ad:54:18:de:b4:bf:f7:ad:e8:74:aa:ed:8b:7c: 8f:c2:d4:75:1a:d5:84:b9:b6:62:fc:89:ef:e4:97: 61:92:fb:1d:b8:e1:5a:47:34:9e:9e:06:22:fb:d3: ea:38:cb:b8:8b:07:f7:1a:a0:17:77:07:5a:30:1c: d4:29:38:20:d7:27:40:d8:50:93:43:bf:d2:18:a2: 29:76:05:72:aa:6b:b6:69:98:ab:79:1e:1c:65:f5: 6a:8b:fc:c5:16:aa:a2:72:da:60:ed:4e:6e:19:25: 7a:0a:1d:30:e3:50:9b:42:3c:44:eb:a1:b0:20:1e: db:02:7e:fe:3d:1f:bf:d0:00:8a:db:40:76:a6:18: a5:15:a7:57:b6:52:c2:01:17:98:77:8f:8a:81:c6: 1a:b4:6a:2a:e6:af:a9:d6:00:ac:cf:d8:15:49:7c: db:1b:a1:fe:81:fa:87:f9:d3:90:c1:02:c0:f9:d0: 42:e9:91:68:25:5f:c6:bf:87:39:e9:95:00:60:28: bf:83:2c:c0:e7:5e:b6:d7:36:16:e7:60:87:76:e8: e7:27:b2:25:0d:8b:7a:e5:aa:1d:e5:59:cd:ce:0b: 0e:6f:c6:c8:9c:e3:10:d9:85:39:d3:b7:9b:fa:c6: ba:7c:74:d2:5d:75:56:ab:74:a4:a2:51:bf:52:7c: ee:71 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: critical CA:TRUE X509v3 Authority Key Identifier: keyid:08:20:6C:66:EB:81:0A:6C:5C:D5:B5:A6:3C:41:DD:1C:96:91:27:77 X509v3 Subject Key Identifier: 08:20:6C:66:EB:81:0A:6C:5C:D5:B5:A6:3C:41:DD:1C:96:91:27:77 Signature Algorithm: sha1WithRSAEncryption 5a:87:58:8f:2d:ab:76:21:6b:54:0c:d9:f1:41:f6:4e:cd:2b: 9e:e3:1f:9b:a3:2d:7f:d9:2b:7d:58:c8:67:a4:29:f5:e9:ec: d5:bd:96:3f:a3:73:f8:c4:5b:36:7c:d0:63:2c:34:39:9b:48: b8:3d:6f:f6:14:c5:9e:63:e6:a7:34:6e:d3:e8:33:b3:c7:3c: 18:6e:23:ae:43:92:99:3f:98:c5:69:30:f1:36:3b:ad:b9:30: 82:d6:b6:59:16:96:02:0b:29:12:61:b4:11:89:f7:0c:2f:94: 90:85:98:28:9c:53:6c:7e:63:dd:73:f4:19:ff:4a:81:d1:b2: 52:23:fd:3c:4a:34:ce:5a:1b:e0:50:8a:ed:4f:81:95:d8:60: e7:e4:c4:0d:bb:58:3e:58:f7:4e:68:6f:3e:67:c9:cb:7a:97: 16:27:ec:42:61:14:76:bb:00:c5:eb:08:3d:15:7f:4b:b6:22: 5d:87:3b:90:f4:f3:c0:fe:37:b3:e9:d9:62:0c:c0:c3:59:af: 60:bd:1f:0d:db:a1:34:1f:30:c4:3d:8b:ad:b0:1d:04:93:ed: 5f:d5:e4:bf:20:30:04:f4:48:e9:33:01:d1:2e:90:27:52:b3: 9b:de:3a:1c:ab:a9:97:7f:9b:eb:c2:8d:c2:6d:ec:dc:13:d3: 46:c5:79:7c ANX Network CA by DST ===================== MD5 Fingerprint: A8:ED:DE:EB:93:88:66:D8:2F:C3:BD:1D:BE:45:BE:4D PEM Data: -----BEGIN CERTIFICATE----- MIIDTTCCAragAwIBAgIENm6ibzANBgkqhkiG9w0BAQUFADBSMQswCQYDVQQGEwJV UzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMR0wGwYDVQQL ExREU1QgKEFOWCBOZXR3b3JrKSBDQTAeFw05ODEyMDkxNTQ2NDhaFw0xODEyMDkx NjE2NDhaMFIxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVy ZSBUcnVzdCBDby4xHTAbBgNVBAsTFERTVCAoQU5YIE5ldHdvcmspIENBMIGdMA0G CSqGSIb3DQEBAQUAA4GLADCBhwKBgQC0SBGAWKDVpZkP9jcsRLZu0XzzKmueEbaI IwRccSWeahJ3EW6/aDllqPay9qIYsokVoGe3eowiSGv2hDQftsr3G3LL8ltI04ce InYTBLSsbJZ/5w4IyTJRMC3VgOghZ7rzXggkLAdZnZAa7kbJtaQelrRBkdR/0o04 JrBvQ24JfQIBA6OCATAwggEsMBEGCWCGSAGG+EIBAQQEAwIABzB0BgNVHR8EbTBr MGmgZ6BlpGMwYTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0 dXJlIFRydXN0IENvLjEdMBsGA1UECxMURFNUIChBTlggTmV0d29yaykgQ0ExDTAL BgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMDkxNTQ2NDhagQ8yMDE4MTIw OTE1NDY0OFowCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFIwWVXDMFgpTZMKlhKqz ZBdDP4I2MB0GA1UdDgQWBBSMFlVwzBYKU2TCpYSqs2QXQz+CNjAMBgNVHRMEBTAD AQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB AEklyWCxDF+pORDTxTRVfc95wynr3vnCQPnoVsXwL+z02exIUbhjOF6TbhiWhbnK UJykuOpmJmiThW9vTHHQvnoLPDG5975pnhDX0UDorBZxq66rOOFwscqSFuBdhaYY gAYAnOGmGEJRp2hoWe8mlF+tMQz+KR4XAYQ3W+gSMqNd -----END CERTIFICATE----- Certificate Ingredients: Data: Version: 3 (0x2) Serial Number: 913220207 (0x366ea26f) Signature Algorithm: sha1WithRSAEncryption Issuer: C=US, O=Digital Signature Trust Co., OU=DST (ANX Network) CA Validity Not Before: Dec 9 15:46:48 1998 GMT Not After : Dec 9 16:16:48 2018 GMT Subject: C=US, O=Digital Signature Trust Co., OU=DST (ANX Network) CA Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:b4:48:11:80:58:a0:d5:a5:99:0f:f6:37:2c:44: b6:6e:d1:7c:f3:2a:6b:9e:11:b6:88:23:04:5c:71: 25:9e:6a:12:77:11:6e:bf:68:39:65:a8:f6:b2:f6: a2:18:b2:89:15:a0:67:b7:7a:8c:22:48:6b:f6:84: 34:1f:b6:ca:f7:1b:72:cb:f2:5b:48:d3:87:1e:22: 76:13:04:b4:ac:6c:96:7f:e7:0e:08:c9:32:51:30: 2d:d5:80:e8:21:67:ba:f3:5e:08:24:2c:07:59:9d: 90:1a:ee:46:c9:b5:a4:1e:96:b4:41:91:d4:7f:d2: 8d:38:26:b0:6f:43:6e:09:7d Exponent: 3 (0x3) X509v3 extensions: Netscape Cert Type: SSL CA, S/MIME CA, Object Signing CA X509v3 CRL Distribution Points: DirName:/C=US/O=Digital Signature Trust Co./OU=DST (ANX Network) CA/CN=CRL1 X509v3 Private Key Usage Period: Not Before: Dec 9 15:46:48 1998 GMT, Not After: Dec 9 15:46:48 2018 GMT X509v3 Key Usage: Certificate Sign, CRL Sign X509v3 Authority Key Identifier: keyid:8C:16:55:70:CC:16:0A:53:64:C2:A5:84:AA:B3:64:17:43:3F:82:36 X509v3 Subject Key Identifier: 8C:16:55:70:CC:16:0A:53:64:C2:A5:84:AA:B3:64:17:43:3F:82:36 X509v3 Basic Constraints: CA:TRUE 1.2.840.113533.7.65.0: 0 ..V4.0.... Signature Algorithm: sha1WithRSAEncryption 49:25:c9:60:b1:0c:5f:a9:39:10:d3:c5:34:55:7d:cf:79:c3: 29:eb:de:f9:c2:40:f9:e8:56:c5:f0:2f:ec:f4:d9:ec:48:51: b8:63:38:5e:93:6e:18:96:85:b9:ca:50:9c:a4:b8:ea:66:26: 68:93:85:6f:6f:4c:71:d0:be:7a:0b:3c:31:b9:f7:be:69:9e: 10:d7:d1:40:e8:ac:16:71:ab:ae:ab:38:e1:70:b1:ca:92:16: e0:5d:85:a6:18:80:06:00:9c:e1:a6:18:42:51:a7:68:68:59: ef:26:94:5f:ad:31:0c:fe:29:1e:17:01:84:37:5b:e8:12:32: a3:5d American Express CA =================== MD5 Fingerprint: 1C:D5:8E:82:BE:70:55:8E:39:61:DF:AD:51:DB:6B:A0 PEM Data: -----BEGIN CERTIFICATE----- MIICkDCCAfkCAgCNMA0GCSqGSIb3DQEBBAUAMIGPMQswCQYDVQQGEwJVUzEnMCUG A1UEChMeQW1lcmljYW4gRXhwcmVzcyBDb21wYW55LCBJbmMuMSYwJAYDVQQLEx1B bWVyaWNhbiBFeHByZXNzIFRlY2hub2xvZ2llczEvMC0GA1UEAxMmQW1lcmljYW4g RXhwcmVzcyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNOTgwODE0MjIwMTAwWhcN MDYwODE0MjM1OTAwWjCBjzELMAkGA1UEBhMCVVMxJzAlBgNVBAoTHkFtZXJpY2Fu IEV4cHJlc3MgQ29tcGFueSwgSW5jLjEmMCQGA1UECxMdQW1lcmljYW4gRXhwcmVz cyBUZWNobm9sb2dpZXMxLzAtBgNVBAMTJkFtZXJpY2FuIEV4cHJlc3MgQ2VydGlm aWNhdGUgQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJ8kmS hcr9FSm1BrZE7PyIo/KGzv8UTyQckvnCI8HOQ99dNMi4FOzVKnCRSZXXVs2U8amT 0Ggi3E19oApyKkfqJfCFAF82VGHPC/k3Wmed6R/pZD9wlWGn0DAC3iYopGYDBOkw +48zB/lvYYeictvzaHhjZlmpybdm4RWySDYs+QIDAQABMA0GCSqGSIb3DQEBBAUA A4GBAGgXYrhzi0xs60qlPqvlnS7SzYoHV/PGWZd2Fxf4Uo4nk9hY2Chs9KIEeorC diSxArTfKPL386infiNIYYj0EWiuJl32oUtTJWrYKhQCDuCHIG6eGVxzkAsj4jGX Iz/VIqLTBnvaN/XXtUFEF3pFAtmFRWbWjsfwegyZYiJpW+3S -----END CERTIFICATE----- Certificate Ingredients: Data: Version: 1 (0x0) Serial Number: 141 (0x8d) Signature Algorithm: md5WithRSAEncryption Issuer: C=US, O=American Express Company, Inc., OU=American Express Technologies, CN=American Express Certificate Authority Validity Not Before: Aug 14 22:01:00 1998 GMT Not After : Aug 14 23:59:00 2006 GMT Subject: C=US, O=American Express Company, Inc., OU=American Express Technologies, CN=American Express Certificate Authority Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:c9:f2:49:92:85:ca:fd:15:29:b5:06:b6:44:ec: fc:88:a3:f2:86:ce:ff:14:4f:24:1c:92:f9:c2:23: c1:ce:43:df:5d:34:c8:b8:14:ec:d5:2a:70:91:49: 95:d7:56:cd:94:f1:a9:93:d0:68:22:dc:4d:7d:a0: 0a:72:2a:47:ea:25:f0:85:00:5f:36:54:61:cf:0b: f9:37:5a:67:9d:e9:1f:e9:64:3f:70:95:61:a7:d0: 30:02:de:26:28:a4:66:03:04:e9:30:fb:8f:33:07: f9:6f:61:87:a2:72:db:f3:68:78:63:66:59:a9:c9: b7:66:e1:15:b2:48:36:2c:f9 Exponent: 65537 (0x10001) Signature Algorithm: md5WithRSAEncryption 68:17:62:b8:73:8b:4c:6c:eb:4a:a5:3e:ab:e5:9d:2e:d2:cd: 8a:07:57:f3:c6:59:97:76:17:17:f8:52:8e:27:93:d8:58:d8: 28:6c:f4:a2:04:7a:8a:c2:76:24:b1:02:b4:df:28:f2:f7:f3: a8:a7:7e:23:48:61:88:f4:11:68:ae:26:5d:f6:a1:4b:53:25: 6a:d8:2a:14:02:0e:e0:87:20:6e:9e:19:5c:73:90:0b:23:e2: 31:97:23:3f:d5:22:a2:d3:06:7b:da:37:f5:d7:b5:41:44:17: 7a:45:02:d9:85:45:66:d6:8e:c7:f0:7a:0c:99:62:22:69:5b: ed:d2 American Express Global CA ========================== MD5 Fingerprint: 63:1B:66:93:8C:F3:66:CB:3C:79:57:DC:05:49:EA:DB PEM Data: -----BEGIN CERTIFICATE----- MIIEBDCCAuygAwIBAgICAIUwDQYJKoZIhvcNAQEFBQAwgZYxCzAJBgNVBAYTAlVT MScwJQYDVQQKEx5BbWVyaWNhbiBFeHByZXNzIENvbXBhbnksIEluYy4xJjAkBgNV BAsTHUFtZXJpY2FuIEV4cHJlc3MgVGVjaG5vbG9naWVzMTYwNAYDVQQDEy1BbWVy aWNhbiBFeHByZXNzIEdsb2JhbCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNOTgw ODE0MTkwNjAwWhcNMTMwODE0MjM1OTAwWjCBljELMAkGA1UEBhMCVVMxJzAlBgNV BAoTHkFtZXJpY2FuIEV4cHJlc3MgQ29tcGFueSwgSW5jLjEmMCQGA1UECxMdQW1l cmljYW4gRXhwcmVzcyBUZWNobm9sb2dpZXMxNjA0BgNVBAMTLUFtZXJpY2FuIEV4 cHJlc3MgR2xvYmFsIENlcnRpZmljYXRlIEF1dGhvcml0eTCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBAPAkJmYu++tKc3FTiUfLJjxTkpRMysKFtQ34w1e9 Lyofahi3V68MABb6oLaQpvcaoS5mJsdoo4qTaWa1RlYtHYLqkAwKIsKJUI0F89Sr c0HwzxKsKLRvFJSWWUuekHWG3+JH6+HpT0N+h8onGGaetcFAZX38YW+tm3LPqV7Y 8/nabpEQ+ky16n4g3qk5L/WI5IpvNcYgnCuGRjMK/DFVpWusFkDpzTVZbzIEw3u1 D3t3cPNIuypSgs6vKW3xEW9t5gcAAe+a8yYNpnkTZ6/4qxx1rJG1a75AsN6cDLFp hRlxkRNFyt/R/eayypaDedvFuKpbepALeFY+xteflEgR9a0CAwEAAaNaMFgwEgYD VR0TAQH/BAgwBgEB/wIBBTAOBgNVHQ8BAf8EBAMCAQYwFwYDVR0gBBAwDjAMBgoq hkiG+Q8KAQUBMBkGA1UdDgQSBBBXRzV7NicRqAj8L0Yl6yRpMA0GCSqGSIb3DQEB BQUAA4IBAQDHYUWoinG5vjTpIXshzVYTmNUwY+kYqkuSFb8LHbvskmnFLsNhi+gw RcsQRsFzOFyLGdIr80DrfHKzLh4n43WVihybLsSVBYZy0FX0oZJSeVzb9Pjc5dcS sUDHPIbkMWVKyjfG3nZXGWlMRmn8Kq0WN3qTrPchSy3766lQy8HRQAjaA2mHpzde VcHF7cTjjgwml5tcV0ty4/IDBdACOyYDQJCevgtbSQx48dVMVSng9v1MA6lUAjLR V1qFrEPtWzsWX6C/NdtLnnvo/+cNPDuom0lBRvVzTv+SZSGDE1Vx60k8f4gawhIo JaFGS0E3l3/sjvHUoZbCILZerakcHhGg -----END CERTIFICATE----- Certificate Ingredients: Data: Version: 3 (0x2) Serial Number: 133 (0x85) Signature Algorithm: sha1WithRSAEncryption Issuer: C=US, O=American Express Company, Inc., OU=American Express Technologies, CN=American Express Global Certificate Authority Validity Not Before: Aug 14 19:06:00 1998 GMT Not After : Aug 14 23:59:00 2013 GMT Subject: C=US, O=American Express Company, Inc., OU=American Express Technologies, CN=American Express Global Certificate Authority Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (2048 bit) Modulus (2048 bit): 00:f0:24:26:66:2e:fb:eb:4a:73:71:53:89:47:cb: 26:3c:53:92:94:4c:ca:c2:85:b5:0d:f8:c3:57:bd: 2f:2a:1f:6a:18:b7:57:af:0c:00:16:fa:a0:b6:90: a6:f7:1a:a1:2e:66:26:c7:68:a3:8a:93:69:66:b5: 46:56:2d:1d:82:ea:90:0c:0a:22:c2:89:50:8d:05: f3:d4:ab:73:41:f0:cf:12:ac:28:b4:6f:14:94:96: 59:4b:9e:90:75:86:df:e2:47:eb:e1:e9:4f:43:7e: 87:ca:27:18:66:9e:b5:c1:40:65:7d:fc:61:6f:ad: 9b:72:cf:a9:5e:d8:f3:f9:da:6e:91:10:fa:4c:b5: ea:7e:20:de:a9:39:2f:f5:88:e4:8a:6f:35:c6:20: 9c:2b:86:46:33:0a:fc:31:55:a5:6b:ac:16:40:e9: cd:35:59:6f:32:04:c3:7b:b5:0f:7b:77:70:f3:48: bb:2a:52:82:ce:af:29:6d:f1:11:6f:6d:e6:07:00: 01:ef:9a:f3:26:0d:a6:79:13:67:af:f8:ab:1c:75: ac:91:b5:6b:be:40:b0:de:9c:0c:b1:69:85:19:71: 91:13:45:ca:df:d1:fd:e6:b2:ca:96:83:79:db:c5: b8:aa:5b:7a:90:0b:78:56:3e:c6:d7:9f:94:48:11: f5:ad Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: critical CA:TRUE, pathlen:5 X509v3 Key Usage: critical Certificate Sign, CRL Sign X509v3 Certificate Policies: Policy: 1.2.840.113807.10.1.5.1 X509v3 Subject Key Identifier: 57:47:35:7B:36:27:11:A8:08:FC:2F:46:25:EB:24:69 Signature Algorithm: sha1WithRSAEncryption c7:61:45:a8:8a:71:b9:be:34:e9:21:7b:21:cd:56:13:98:d5: 30:63:e9:18:aa:4b:92:15:bf:0b:1d:bb:ec:92:69:c5:2e:c3: 61:8b:e8:30:45:cb:10:46:c1:73:38:5c:8b:19:d2:2b:f3:40: eb:7c:72:b3:2e:1e:27:e3:75:95:8a:1c:9b:2e:c4:95:05:86: 72:d0:55:f4:a1:92:52:79:5c:db:f4:f8:dc:e5:d7:12:b1:40: c7:3c:86:e4:31:65:4a:ca:37:c6:de:76:57:19:69:4c:46:69: fc:2a:ad:16:37:7a:93:ac:f7:21:4b:2d:fb:eb:a9:50:cb:c1: d1:40:08:da:03:69:87:a7:37:5e:55:c1:c5:ed:c4:e3:8e:0c: 26:97:9b:5c:57:4b:72:e3:f2:03:05:d0:02:3b:26:03:40:90: 9e:be:0b:5b:49:0c:78:f1:d5:4c:55:29:e0:f6:fd:4c:03:a9: 54:02:32:d1:57:5a:85:ac:43:ed:5b:3b:16:5f:a0:bf:35:db: 4b:9e:7b:e8:ff:e7:0d:3c:3b:a8:9b:49:41:46:f5:73:4e:ff: 92:65:21:83:13:55:71:eb:49:3c:7f:88:1a:c2:12:28:25:a1: 46:4b:41:37:97:7f:ec:8e:f1:d4:a1:96:c2:20:b6:5e:ad:a9: 1c:1e:11:a0 BelSign Object Publishing CA ============================ MD5 Fingerprint: 8A:02:F8:DF:B8:E1:84:9F:5A:C2:60:24:65:D1:73:FB PEM Data: -----BEGIN CERTIFICATE----- MIIDAzCCAmygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBuzELMAkGA1UEBhMCQkUx ETAPBgNVBAcTCEJydXNzZWxzMRMwEQYDVQQKEwpCZWxTaWduIE5WMTgwNgYDVQQL Ey9CZWxTaWduIE9iamVjdCBQdWJsaXNoaW5nIENlcnRpZmljYXRlIEF1dGhvcml0 eTElMCMGA1UEAxMcQmVsU2lnbiBPYmplY3QgUHVibGlzaGluZyBDQTEjMCEGCSqG SIb3DQEJARYUd2VibWFzdGVyQGJlbHNpZ24uYmUwHhcNOTcwOTE5MjIwMzAwWhcN MDcwOTE5MjIwMzAwWjCBuzELMAkGA1UEBhMCQkUxETAPBgNVBAcTCEJydXNzZWxz MRMwEQYDVQQKEwpCZWxTaWduIE5WMTgwNgYDVQQLEy9CZWxTaWduIE9iamVjdCBQ dWJsaXNoaW5nIENlcnRpZmljYXRlIEF1dGhvcml0eTElMCMGA1UEAxMcQmVsU2ln biBPYmplY3QgUHVibGlzaGluZyBDQTEjMCEGCSqGSIb3DQEJARYUd2VibWFzdGVy QGJlbHNpZ24uYmUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMQuH7a/7oJA 3fm3LkHVngWxWtAmfGJVA5v8y2HeS+/+6Jn+h7mIz5DaDwk8dt8Xl7bLPyVF/bS8 WAC+sFq2FIeP7mdkrR2Ig7tnn2VhAFgIgFCfgMkx9iqQHC33SmwQ9iNDXTgJYIhX As0WbBj8zfuSKnfQnpOjXYhk0Mj4XVRRAgMBAAGjFTATMBEGCWCGSAGG+EIBAQQE AwIABzANBgkqhkiG9w0BAQQFAAOBgQBjdhd8lvBTpV0BHFPOKcJ+daxMDaIIc7Rq Mf0CBhSZ3FQEpL/IloafMUMyJVf2hfYluze+oXkjyVcGJXFrRU/49AJAFoIir1Tq Mij2De6ZuksIUQ9uhiMhTC0liIHELg7xEyw4ipUCJMM6lWPkk45IuwhHcl+u5jpa R9Zxxp6aUg== -----END CERTIFICATE----- Certificate Ingredients: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: md5WithRSAEncryption Issuer: C=BE, L=Brussels, O=BelSign NV, OU=BelSign Object Publishing Certificate Authority, CN=BelSign Object Publishing CA/Email=webmaster@belsign.be Validity Not Before: Sep 19 22:03:00 1997 GMT Not After : Sep 19 22:03:00 2007 GMT Subject: C=BE, L=Brussels, O=BelSign NV, OU=BelSign Object Publishing Certificate Authority, CN=BelSign Object Publishing CA/Email=webmaster@belsign.be Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:c4:2e:1f:b6:bf:ee:82:40:dd:f9:b7:2e:41:d5: 9e:05:b1:5a:d0:26:7c:62:55:03:9b:fc:cb:61:de: 4b:ef:fe:e8:99:fe:87:b9:88:cf:90:da:0f:09:3c: 76:df:17:97:b6:cb:3f:25:45:fd:b4:bc:58:00:be: b0:5a:b6:14:87:8f:ee:67:64:ad:1d:88:83:bb:67: 9f:65:61:00:58:08:80:50:9f:80:c9:31:f6:2a:90: 1c:2d:f7:4a:6c:10:f6:23:43:5d:38:09:60:88:57: 02:cd:16:6c:18:fc:cd:fb:92:2a:77:d0:9e:93:a3: 5d:88:64:d0:c8:f8:5d:54:51 Exponent: 65537 (0x10001) X509v3 extensions: Netscape Cert Type: SSL CA, S/MIME CA, Object Signing CA Signature Algorithm: md5WithRSAEncryption 63:76:17:7c:96:f0:53:a5:5d:01:1c:53:ce:29:c2:7e:75:ac: 4c:0d:a2:08:73:b4:6a:31:fd:02:06:14:99:dc:54:04:a4:bf: c8:96:86:9f:31:43:32:25:57:f6:85:f6:25:bb:37:be:a1:79: 23:c9:57:06:25:71:6b:45:4f:f8:f4:02:40:16:82:22:af:54: ea:32:28:f6:0d:ee:99:ba:4b:08:51:0f:6e:86:23:21:4c:2d: 25:88:81:c4:2e:0e:f1:13:2c:38:8a:95:02:24:c3:3a:95:63: e4:93:8e:48:bb:08:47:72:5f:ae:e6:3a:5a:47:d6:71:c6:9e: 9a:52 BelSign Secure Server CA ======================== MD5 Fingerprint: 3D:5E:82:C6:D9:AD:D9:8B:93:6B:0C:10:B9:49:0A:B1 PEM Data: -----BEGIN CERTIFICATE----- MIIC8zCCAlygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBszELMAkGA1UEBhMCQkUx ETAPBgNVBAcTCEJydXNzZWxzMRMwEQYDVQQKEwpCZWxTaWduIE5WMTQwMgYDVQQL EytCZWxTaWduIFNlY3VyZSBTZXJ2ZXIgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MSEw HwYDVQQDExhCZWxTaWduIFNlY3VyZSBTZXJ2ZXIgQ0ExIzAhBgkqhkiG9w0BCQEW FHdlYm1hc3RlckBiZWxzaWduLmJlMB4XDTk3MDcxNjIyMDA1NFoXDTA3MDcxNjIy MDA1NFowgbMxCzAJBgNVBAYTAkJFMREwDwYDVQQHEwhCcnVzc2VsczETMBEGA1UE ChMKQmVsU2lnbiBOVjE0MDIGA1UECxMrQmVsU2lnbiBTZWN1cmUgU2VydmVyIENl cnRpZmljYXRlIEF1dGhvcml0eTEhMB8GA1UEAxMYQmVsU2lnbiBTZWN1cmUgU2Vy dmVyIENBMSMwIQYJKoZIhvcNAQkBFhR3ZWJtYXN0ZXJAYmVsc2lnbi5iZTCBnzAN BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1gESeJL4BEJ/yccig/x8R3AwK0kLPjZA kCjaIXODU/LE0RZAwFP/rqbGJLMnbaWzPTl3XagG9ubpvGMRTgZlcAqdk/miQIt/ SoQOjRax1swIZBIM4ChLyKWEkBf7EUYu1qeFGMsYrmOasFgG9ADP+MQJGjUMofnu Sv1t3v4mpTsCAwEAAaMVMBMwEQYJYIZIAYb4QgEBBAQDAgCgMA0GCSqGSIb3DQEB BAUAA4GBAGw9mcMF4h3K5S2qaIWLQDEgZhNo5lg6idCNdbLFYth9go/32TKBd/Y1 W4UpzmeyubwrGXjP84f9RvGVdbIJVwMwwXrNckdxgMp9ncllPEcRIn36BwsoeKGT 6AVFSOIyMko96FMcELfHc4wHUOH5yStTQfWDjeUJOUqOA2KqQGOL -----END CERTIFICATE----- libapreq2-2.13/module/t/conf/ssl/httpd-passphrase.pl.PL0000644000076400017500000000014211473532337021736 0ustar issacissac#for testing SSLPassPhraseDialog exec:@ServerRoot@/conf/ssl/httpd-passphrase.pl print "httpd\n"; libapreq2-2.13/module/t/conf/ssl/proxyssl.conf.in0000644000076400017500000000351011473532337020756 0ustar issacissac #here we can test http <-> https #these are not on by default in the 1.x based mod_ssl SSLProxyEngine On SSLProxyProtocol +SSLv2 +SSLv3 +TLSv1 SSLProxyCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLProxyMachineCertificateFile @SSLCA@/asf/proxy/client_ok.pem #SSLProxyMachineCertificatePath @SSLCA@/asf/proxy SSLProxyCACertificateFile @SSLCA@/asf/certs/ca.crt SSLProxyCACertificatePath @ServerRoot@/conf/ssl SSLProxyCARevocationFile @SSLCA@/asf/crl/ca-bundle.crl SSLProxyVerify on SSLProxyVerifyDepth 10 ProxyPass / https://@proxyssl_url@/ ProxyPassReverse / https://@proxyssl_url@/ #here we can test https <-> https SSLEngine on #these are not on by default in the 1.x based mod_ssl SSLProxyEngine On # ensure that client_ok.pem is picked first: SSLProxyMachineCertificateFile @SSLCA@/asf/proxy/client_ok.pem SSLProxyMachineCertificatePath @SSLCA@/asf/proxy SSLProxyCACertificateFile @SSLCA@/asf/certs/ca.crt SSLProxyVerify on SSLProxyCARevocationPath @SSLCA@/asf/crl ProxyPass / https://@proxyssl_url@/ ProxyPassReverse / https://@proxyssl_url@/ #here we can test https <-> http SSLEngine on ProxyPass / http://@servername@:@port@/ ProxyPassReverse / http://@servername@:@port@/ libapreq2-2.13/module/t/conf/ssl/ssl.conf.in0000644000076400017500000001006311473532337017655 0ustar issacissac#test config derived from httpd-2.0/docs/conf/ssl-std.conf #base config that can be used by any SSL enabled VirtualHosts AddType application/x-x509-ca-cert .crt AddType application/x-pkcs7-crl .crl SSLSessionCache none #XXX: would be nice to test these #SSLSessionCache shm:@ServerRoot@/logs/ssl_scache(512000) #SSLSessionCache dbm:@ServerRoot@/logs/ssl_scache #SSLSessionCacheTimeout 300 #SSLMutex file:@ServerRoot@/logs/ssl_mutex SSLRandomSeed startup builtin SSLRandomSeed connect builtin #SSLRandomSeed startup file:/dev/random 512 #SSLRandomSeed startup file:/dev/urandom 512 #SSLRandomSeed connect file:/dev/random 512 #SSLRandomSeed connect file:/dev/urandom 512 LogFormat "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %>s %b" ssl CustomLog logs/ssl_request_log ssl SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLPassPhraseDialog exec:@ServerRoot@/conf/ssl/httpd-passphrase.pl #else the default is builtin SSLPassPhraseDialog builtin SSLCertificateFile @SSLCA@/asf/certs/server_des3.crt SSLCertificateKeyFile @SSLCA@/asf/keys/server_des3.pem # SSLCertificateFile @SSLCA@/asf/certs/server_des3_dsa.crt # SSLCertificateKeyFile @SSLCA@/asf/keys/server_des3_dsa.pem #else the default is an unencrypted key SSLCertificateFile @SSLCA@/asf/certs/server.crt SSLCertificateKeyFile @SSLCA@/asf/keys/server.pem # SSLCertificateFile @SSLCA@/asf/certs/server_dsa.crt # SSLCertificateKeyFile @SSLCA@/asf/keys/server_dsa.pem #SSLCertificateChainFile @SSLCA@/asf/certs/cachain.crt SSLCACertificateFile @SSLCA@/asf/certs/ca.crt SSLCACertificatePath @ServerRoot@/conf/ssl SSLCARevocationFile @SSLCA@/asf/crl/ca-bundle.crl SSLEngine on #t/ssl/verify.t Alias /verify @DocumentRoot@ SSLVerifyClient require SSLVerifyDepth 10 #t/ssl/require.t Alias /require/asf @DocumentRoot@ Alias /require/snakeoil @DocumentRoot@ Alias /ssl-fakebasicauth @DocumentRoot@ Alias /ssl-cgi @DocumentRoot@/modules/cgi Alias /require-ssl-cgi @DocumentRoot@/modules/cgi SSLVerifyClient require SSLVerifyDepth 10 SSLRequire (%{SSL_CIPHER} !~ m/^(EXP|NULL)-/ \ and %{SSL_CLIENT_S_DN_O} eq "ASF" \ and %{SSL_CLIENT_S_DN_OU} in \ {"httpd-test", "httpd", "modperl"} ) SSLVerifyClient require SSLVerifyDepth 10 SSLRequire (%{SSL_CIPHER} !~ m/^(EXP|NULL)-/ \ and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \ and %{SSL_CLIENT_S_DN_OU} in \ {"Staff", "CA", "Dev"} ) SSLOptions +StdEnvVars SSLOptions +StdEnvVars SSLVerifyClient require SSLVerifyDepth 10 SSLVerifyClient require SSLVerifyDepth 5 SSLOptions +FakeBasicAuth AuthName "Snake Oil Authentication" AuthType Basic AuthUserFile @SSLCA@/asf/ssl.htpasswd require valid-user libapreq2-2.13/module/t/cookie.t0000644000076400017500000000370311473532337015513 0ustar issacissacuse strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use Apache::TestRequest qw(GET_BODY GET_HEAD); plan tests => 6, need_lwp; require HTTP::Cookies; my $location = "/apreq_cookie_test"; { my $test = 'netscape'; my $key = 'apache'; my $value = 'ok'; my $cookie = qq{$key=$value}; ok t_cmp(GET_BODY("$location?test=$test&key=$key", Cookie => $cookie), $value, $test); } { my $test = 'rfc'; my $key = 'apache'; my $value = 'ok'; my $cookie = qq{\$Version="1"; $key="$value"; \$Path="$location"}; ok t_cmp(GET_BODY("$location?test=$test&key=$key", Cookie => $cookie), qq{"$value"}, $test); } { my $test = 'encoded value with space'; my $key = 'apache'; my $value = 'okie dokie'; my $cookie = "$key=" . join '', map {/ / ? '+' : sprintf '%%%.2X', ord} split //, $value; ok t_cmp(GET_BODY("$location?test=$test&key=$key", Cookie => $cookie), $value, $test); } { my $test = 'bake'; my $key = 'apache'; my $value = 'ok'; my $cookie = "$key=$value"; my ($header) = GET_HEAD("$location?test=$test&key=$key", Cookie => $cookie) =~ /^#Set-Cookie:\s+(.+)/m; ok t_cmp($header, $cookie, $test); } { my $test = 'bake2'; my $key = 'apache'; my $value = 'ok'; my $cookie = qq{\$Version="1"; $key="$value"; \$Path="$location"}; my ($header) = GET_HEAD("$location?test=$test&key=$key", Cookie => $cookie) =~ /^#Set-Cookie2:\s+(.+)/m; ok t_cmp($header, qq{$key="$value"; Version=1; path="$location"}, $test); } { my $test = 'httponly'; my $key = 'apache'; my $value = 'ok'; my $cookie = "$key=$value; HttpOnly"; my ($header) = GET_HEAD("$location?test=$test&key=$key", Cookie => $cookie) =~ /^#Set-Cookie:\s+(.+)/m; ok t_cmp($header, $cookie, $test); } libapreq2-2.13/module/t/request.t0000644000076400017500000000725311473532337015736 0ustar issacissacuse strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use Apache::TestRequest qw(GET_BODY UPLOAD_BODY POST_BODY GET_RC); require File::Copy; my $num_tests = 18; $num_tests *= 2 if Apache::Test::have_ssl(); plan tests => $num_tests, need_lwp; my $scheme = "http"; START_TESTS: Apache::TestRequest::scheme($scheme); foreach my $location ('/apreq_request_test', '/apreq_access_test') { ok t_cmp(GET_BODY("$location?test=1"), "ARGS:\n\ttest => 1\n", "simple get"); ok t_cmp(UPLOAD_BODY("$location?test=2", content => "unused"), "ARGS:\n\ttest => 2\nBODY:\n\tHTTPUPLOAD => b\n", "simple upload"); } ok t_cmp(GET_RC("/apreq_access_test"), 403, "access denied"); my $filler = "0123456789" x 25_000; # length($filler) must be < 500K / 2 my $body = POST_BODY("/apreq_access_test?foo=1;", content => "bar=2&quux=$filler;test=6&more=$filler"); ok t_cmp($body, < 1 BODY: \tbar => 2 \tquux => $filler \ttest => 6 \tmore => $filler EOT ok t_cmp(GET_RC("/apreq_redirect_test"), 403, "missing 'test' authorization"); foreach my $location ('/apreq_request_test', '/apreq_access_test') { ok t_cmp(GET_BODY("/apreq_redirect_test?test=ok&location=$location%3Ftest=redirect"), "ARGS:\n\ttest => redirect\n", "redirect GET"); $body = POST_BODY("/apreq_redirect_test?location=$location%3Ffoo=bar", content => "quux=$filler;test=redirect+with+prefetch;more=$filler"); ok t_cmp($body, < bar BODY: \tquux => $filler \ttest => redirect with prefetch \tmore => $filler EOT } # internal redirect to plain text files (which are non-apreq requests) my $index_html = do {local (@ARGV,$/) = "t/htdocs/index.html"; <> }; my $orig = 't/htdocs/index.html'; my $copy = 't/htdocs/index.txt'; unlink $copy if -f $copy; File::Copy::copy($orig, $copy) or die "Cannot copy $orig to $copy: $!"; $body = GET_BODY("/apreq_redirect_test?test=redirect_index_txt_GET&location=/index.txt"); $body =~ s{\r}{}g; ok t_cmp($body, $index_html, "redirect /index.txt (GET)"); $body = POST_BODY("/apreq_redirect_test?test=redirect_index_txt_POST", content => "quux=$filler;location=/index.txt;foo=$filler"); $body =~ s{\r}{}g; ok t_cmp($body, $index_html, "redirect /index.txt (POST)"); # output filter tests sub filter_content ($) { my $body = shift; $body =~ s/^.*--APREQ OUTPUT FILTER--\s+//s; return $body; } ok t_cmp(GET_RC("/index.html"), 200, "/index.html"); ok t_cmp(filter_content GET_BODY("/index.html?test=15"), "ARGS:\n\ttest => 15\n", "output filter GET"); ok t_cmp(filter_content POST_BODY("/index.html?test=16", content => "post+data=foo;more=$filler;test=output+filter+POST"), < 16 BODY: \tpost data => foo \tmore => $filler \ttest => output filter POST EOT "output filter POST"); # internal redirect to html files which are filtered as above $body = GET_BODY("/apreq_redirect_test?test=redirect_index_html_GET&location=/index.html?foo=bar"); $body =~ s{\r}{}g; ok t_cmp($body, $index_html . < bar EOT $body = POST_BODY("/apreq_redirect_test?test=redirect_index_html_POST", content => "quux=$filler;location=/index.html?foo=quux;foo=$filler"); $body =~ s{\r}{}g; ok t_cmp($body, $index_html . < quux BODY: \tquux => $filler \tlocation => /index.html?foo=quux \tfoo => $filler EOT if (Apache::Test::have_ssl() and $scheme ne 'https') { $scheme = 'https'; goto START_TESTS; } libapreq2-2.13/module/t/TEST.PL0000644000076400017500000000624311473532337015073 0ustar issacissacuse strict; use warnings FATAL => 'all'; use constant WIN32 => $^O eq 'MSWin32'; use Cwd; my $cwd = WIN32 ? Win32::GetLongPathName(cwd) : cwd; $cwd =~ m{^(.+)/module$} or die "Can't find base directory"; my $base_dir = $1; my $module_dir = "$base_dir/module"; my $mod_apreq2_dir = WIN32 ? "$base_dir/win32/libs" : "$module_dir/apache2/.libs"; use base 'Apache::TestRun'; $Apache::TestTrace::Level = 'debug'; main::->new->run(@ARGV); sub pre_configure { my $self = shift; # Don't load an installed mod_apreq* Apache::TestConfig::autoconfig_skip_module_add('mod_apreq.c'); Apache::TestConfig::autoconfig_skip_module_add('mod_apreq2.c'); } sub configure { my $self = shift; my $cfg = $self->{test_config}; # make sure Win32 uses the just-built libapreq2.dll if (WIN32) { $cfg->preamble(qq{LoadFile "$mod_apreq2_dir/libapreq2.dll"\n}); } $cfg->preamble(IfModule => '!mod_apreq2.c', qq(LoadModule apreq_module "$mod_apreq2_dir/mod_apreq2.so"\n)); bless $cfg, "My::TestConfig"; $self->SUPER::configure(); } package My::TestConfig; use Apache::TestTrace; use Apache::TestConfigC; use Config; use File::Spec; use constant WIN32 => $^O eq 'MSWin32'; use base 'Apache::TestConfig'; sub cmodules_configure { my $self = shift; my $dir = File::Spec->catdir($module_dir, 't', 'c-modules'); $self->SUPER::cmodules_configure($dir); } sub cmodules_httpd_conf { my $self = shift; debug "WRITING httpd.conf with " . join", ",map $_->{name}, @{$self->{cmodules}}; $self->SUPER::cmodules_httpd_conf(@_); } sub cmodules_write_makefile { my($self, $mod) = @_; my $dversion = $self->server->dversion; my $name = $mod->{name}; my $makefile = "$mod->{dir}/Makefile"; debug "WRITING $makefile for $name"; my $lib = $self->cmodules_build_so($name); my $fh = Symbol::gensym(); open $fh, ">$makefile" or die "open $makefile: $!"; if (WIN32) { require File::Spec; my @goners = map {$name . '.' . $_} qw(exp ilk lib pdb so lo so.manifest); my $libs = join ' ', (map {'-l' . File::Spec->catfile($mod_apreq2_dir, $_)} qw(libapreq2.lib mod_apreq2.lib)); print $fh <{APXS} all: $lib $lib: $name.c \$(APXS) -I../../../apache2 -I../../../../include $libs -llibhttpd $dversion -p -I$self->{cmodules_dir} -c $name.c clean: -erase @goners vc60.pdb EOF } else { print $fh <{APXS} all: $lib $lib: $name.c \$(APXS) -L../../../../library -I../../../apache2 -I../../../../include -lapreq2 $dversion -I$self->{cmodules_dir} -c $name.c clean: -rm -rf $name.o $name.lo $name.slo $name.la .libs EOF } close $fh or die "close $makefile: $!"; } sub cmodules_makefile_vars { my $make = $ENV{MAKE} || $Config{make}; return < 'all'; use Apache::Test; use Apache::TestUtil; use Apache::TestConfig; use Apache::TestRequest qw(UPLOAD_BODY); plan tests => 7, need_lwp; my $location = "/apreq_upload_test"; my %files = ( '1b' => 1, '1k' => 1024, '10k' => 10240, '63k' => 64512, '64k' => 65536, '65k' => 66560, '128k' => 131072, ); my $server_root = Apache::Test::config()->{vars}->{serverroot}; my $dir = "$server_root/c-modules/apreq_upload_test"; foreach my $file (sort { $files{$a} <=> $files{$b} } keys %files) { my $size = $files{$file}; my $result = UPLOAD_BODY($location, filename => "$dir/$file"); ok t_cmp( $result, $size, "UPLOAD a file size $size btyes" ); } libapreq2-2.13/module/test_cgi.c0000644000076400017500000000716011473532337015560 0ustar issacissac/* ** 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. */ #include "apreq_module.h" #include "apreq_util.h" #include "apr_strings.h" #include "apr_lib.h" #include "apr_tables.h" #include static int dump_table(void *count, const char *key, const char *value) { int *c = (int *) count; int value_len = key - value - 1; /* == strlen(value) by construction */ if (value_len) *c += strlen(key) + value_len; return 1; } #define cookie_bake(c) apr_file_printf(out, "Set-Cookie: %s\n", \ apreq_cookie_as_string(c, pool)) #define cookie_bake2(c) apr_file_printf(out, "Set-Cookie2: %s\n", \ apreq_cookie_as_string(c, pool)) int main(int argc, char const * const * argv) { apr_pool_t *pool; apreq_handle_t *req; const apreq_param_t *foo, *bar, *test, *key; apr_file_t *out; atexit(apr_terminate); if (apr_app_initialize(&argc, &argv, NULL) != APR_SUCCESS) { fprintf(stderr, "apr_app_initialize failed\n"); exit(-1); } if (apr_pool_create(&pool, NULL) != APR_SUCCESS) { fprintf(stderr, "apr_pool_create failed\n"); exit(-1); } if (apreq_initialize(pool) != APR_SUCCESS) { fprintf(stderr, "apreq_initialize failed\n"); exit(-1); } req = apreq_handle_cgi(pool); apr_file_open_stdout(&out, pool); foo = apreq_param(req, "foo"); bar = apreq_param(req, "bar"); test = apreq_param(req, "test"); key = apreq_param(req, "key"); if (foo || bar) { apr_file_printf(out, "%s", "Content-Type: text/plain\n\n"); if (foo) { apr_file_printf(out, "\t%s => %s\n", "foo", foo->v.data); } if (bar) { apr_file_printf(out, "\t%s => %s\n", "bar", bar->v.data); } } else if (test && key) { apreq_cookie_t *cookie; char *dest; apr_size_t dlen; cookie = apreq_cookie(req, key->v.data); if (cookie == NULL) { exit(-1); } if (strcmp(test->v.data, "bake") == 0) { cookie_bake(cookie); } else if (strcmp(test->v.data, "bake2") == 0) { cookie_bake2(cookie); } apr_file_printf(out, "%s", "Content-Type: text/plain\n\n"); dest = apr_pcalloc(pool, cookie->v.dlen + 1); if (apreq_decode(dest, &dlen, cookie->v.data, cookie->v.dlen) == APR_SUCCESS) apr_file_printf(out, "%s", dest); else { exit(-1); } } else { const apr_table_t *params = apreq_params(req, pool); int count = 0; apr_file_printf(out, "%s", "Content-Type: text/plain\n\n"); if (params == NULL) { exit(-1); } apr_table_do(dump_table, &count, params, NULL); apr_file_printf(out, "%d", count); } return 0; } libapreq2-2.13/NOTICE0000644000076400017500000000014511473532340013220 0ustar issacissacThis product includes software developed by The Apache Software Foundation (http://www.apache.org/). libapreq2-2.13/PREREQUISITES0000644000076400017500000000175711473533325014321 0ustar issacissac================================================== Build system (core C API) prerequisites apache2: 2.0.48 apr: 0.9.4 (bundled with apache2 2.0.48) apu: 0.9.4 (bundled with apache2 2.0.48) perl: 5.6.1 ================================================== Perl glue (Apache2::Request) prerequisites Apache::Test: 1.04 (Win32 requires version 1.06) ExtUtils::MakeMaker: 6.15 ExtUtils::XSBuilder: 0.23 Test::More: 0.47 mod_perl2: 1.999022 perl: 5.6.1 ================================================== Additional prerequisites for apreq subversion builds ExtUtils::XSBuilder: 0.23 autoconf: 2.53 automake: 1.6.1 doxygen: 1.2 libtool: 1.4.3 perl: 5.6.1 libapreq2-2.13/README0000644000076400017500000000640211473532340013176 0ustar issacissac Apache HTTP Server Request Library What is it? ----------- httpd-apreq is subproject of the Apache HTTP Server Project whose committers develop and maintain the libapreq C library and its language bindings for Perl (contributions for additional language bindings are most welcome). libapreq is a safe, standards-compliant, high-performance library used for parsing HTTP cookies, query-strings and POST data. The original version (libapreq-1.X) was designed by Lincoln Stein and Doug MacEachern. The perl APIs Apache::Request and Apache::Cookie are the lightweight mod_perl analogs of the CGI and CGI::Cookie perl modules. Version 2 of libapreq is an improved codebase designed around APR and Apache-2's input filter API. The C codebase is separated into two independent components: 1) libapreq2, a shared library which is based on libapr and libaprutil. 2) A collection of modules: - mod_apreq2, a filter module for the Apache 2.X webserver, - a CGI module included in libapreq2 itself, - a custom module for general applications. Version 2 also includes the perl APIs for libapreq2- Apache2::Request, Apache2::Upload and Apache2::Cookie. The corresponding XS modules are generated by ExtUtils::XSBuilder, which is based on the new build system created specifically for mod_perl2. The Latest Version ------------------ Details of the latest version can be found on the libapreq project page at http://httpd.apache.org/apreq Documentation ------------- The documentation is in the docs/ directory. It is based on Doxygen, and can be regenerated by typing % make docs in the main directory. Installation ------------ For full details please consult the INSTALL file. Briefly, to install just the C API (libapreq2 + environment modules) on a Unix-like system: % ./configure --with-apache2-apxs=/path/to/apache2/bin/apxs % make % make test % make install To build and install the perl API as well, either add the "--enable-perl-glue" configure option, or let Makefile.PL enable it for you: % perl Makefile.PL --with-apache2-apxs=/path/to/apache2/bin/apxs % make % make test % make install Licensing --------- Please see the file called LICENSE. Contacts -------- o Project homepage: http://httpd.apache.org/apreq/ o Mailing Lists: user lists: C/C++ API - modules-dev@httpd.apache.org Perl API - modperl@perl.apache.org Tcl API - XXX Java API - XXX Python API - XXX developer list (bugs, patches, code contributions, etc.): apreq-dev@httpd.apache.org Acknowledgments ---------------- We wish to acknowledge the following copyrighted works that make up portions of the Apache software: libapreq2 relies heavily on the use of the GNU auto-tools to provide a build environment. The tests are based on the Apache::Test, Test::Harness and Test::Inline. Doxygen generates the documentation for libapreq2. The perl glue and pods are generated by ExtUtils::XSBuilder. libapreq2-2.13/STATUS0000644000076400017500000000627711473532340013276 0ustar issacissac/** @page apreq_status STATUS 2.13 Released on December 3, 2010 Contributors looking for a mission: - just do an egrep on "TODO" or "XXX" and see what's there CURRENT RELEASE NOTES: RELEASE SHOWSTOPPERS: CURRENT VOTES: - Should we switch to EU::MM for determining the full path to perl? The problem is that some folks move their perl binary post-installation, but never adjust Config.pm. EU::MM is smart, by accepting a full path in $^X or by searching the user's $PATH for $^X, before resorting to Config.pm. However, if we change apreq2, we should also lobby test-dev to adopt the same solution for Apache::Test. Otherwise our test suite will likely fail, even though the rest of the perl build system will presumably still work. +1: joes 0: -1: - Drop ExtUtils::XSBuilder as the C API is fairly stable now. The header parsing + xs generation stuff may be too difficult for the community to maintain over ordinary .xs files. +1: pgollucci TODO: - Get -libmodperl to work like it does in mod_perl land. - Get static builds working again. - Implement (some of) RFC 2184 in the multipart parser. - Dump automake, preferably replacing that with more stuff from httpd/apr's build system. - Move module/t to module/apache2/t. - Figure out how and where the apreq_xs_ headers, and typemap file, should be installed. - Write tests for the apache 1.3.x module. - Fix the broken make dependencies, especially in the module and glue subdirs. The libtool workaround (for OSX IIRC) that copies module/.libs to module/t is especially bogus. - Round out the unit tests in library/t. Ideally each API function should have its own tests, and each possible error status should be both tested & documented. Also upgrade these tests to use the Apache::Test framework. - in glue/perl/t/apreq/cgi.t on Win32, printing to the error log hangs if the strings involved are about 10000 in size. This doesn't occur in the env/cgi tests - why? - Why must fprintf(stderr, ...), rather than apr_file_printf(err, ...), be used on Win32 in cgi_log() of src/apreq_env.c? - Get env/ (Apache::Test) tests to work for --with-apache2-src option. Also add a test to configure that prevents simultaneous use of --with-apache2-src and --with-apache2-apxs. - symbol exports files: -# aix needs .exp files - Install the html dox during "make install". Should we do this for the doxy manpages also? - Rework glue/perl build system to use apreq2-config instead of relying on paths like "../../src". OPEN ISSUES: - Should we bundle an apr-based "application/xml" parser? If so, how should we parse the xml data into an apr_table? BUGS: - Fix build automake/libtool/autoconf build system so it works properly on OSX & AIX. WISH LIST: - I [joes] wish folks would contribute some glue code for one of these: - php, - Rivet, - mod_dtcl, - mod_python, - mod_jk, - tomcat, - mod_ruby, - mod_parrot. */ libapreq2-2.13/win32/apreq2_test.mak0000644000076400017500000001621411473532340016205 0ustar issacissac# Microsoft Developer Studio Generated NMAKE File, Based on apreq2_test.dsp !IF "$(APACHE)" == "" !MESSAGE No Apache directory was specified. !MESSAGE This makefile is not to be run directly. !MESSAGE Please use Perl Makefile.PL, and then $(MAKE) on Makefile. !ERROR !ENDIF !IF "$(APR_LIB)" == "" !MESSAGE No apr lib was specified. !MESSAGE This makefile is not to be run directly. !MESSAGE Please use Perl Makefile.PL, and then $(MAKE) on Makefile. !ERROR !ENDIF !IF "$(APU_LIB)" == "" !MESSAGE No aprutil lib was specified. !MESSAGE This makefile is not to be run directly. !MESSAGE Please use Perl Makefile.PL, and then $(MAKE) on Makefile. !ERROR !ENDIF !IF "$(CFG)" == "" CFG=apreq2_test - Win32 Release !MESSAGE No configuration specified. Defaulting to apreq2_test - Win32 Debug. !ENDIF !IF "$(CFG)" != "apreq2_test - Win32 Release" && "$(CFG)" != "apreq2_test - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "apreq2_test.mak" CFG="apreq2_test - Win32 Release" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "apreq2_test - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "apreq2_test - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe CFG_HOME=$(APREQ_HOME)\win32 LIBTDIR=$(APREQ_HOME)\library\t OUTDIR=$(LIBTDIR) INTDIR=$(LIBTDIR) LIBDIR=$(CFG_HOME)\libs PROGRAMS="$(LIBTDIR)\params.exe" "$(LIBTDIR)\version.exe" \ "$(LIBTDIR)\parsers.exe" "$(LIBTDIR)\cookie.exe" !IF "$(CFG)" == "apreq2_test - Win32 Release" ALL : "$(LIBDIR)\apreq2_test.lib" $(PROGRAMS) CLEAN : -@erase "$(INTDIR)\at.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\apreq2_test.lib" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /I"$(APACHE)\include" /I"$(APREQ_HOME)\include" /YX /FD /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(LIBDIR)\apreq2_test.bsc" LIB32=link.exe -lib LIB32_FLAGS=/nologo /out:"$(LIBDIR)\apreq2_test.lib" LIB32_OBJS= \ "$(LIBDIR)\at.obj" \ "$(APR_LIB)" \ "$(APU_LIB)" "$(LIBDIR)\apreq2_test.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) $(LIB32) @<< $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) << LINK32=link.exe LINK32_FLAGS=kernel32.lib wsock32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /debug /machine:I386 /pdbtype:sept LINK32_OBJS= \ "$(LIBDIR)\libapreq2.lib" \ "$(LIBDIR)\apreq2_test.lib" \ "$(APR_LIB)" \ "$(APU_LIB)" \ "$(APACHE)\lib\libhttpd.lib" "$(LIBTDIR)\cookie.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) "$(OUTDIR)\cookie.obj" $(LINK32) /pdb:"$(LIBTDIR)\cookie.pdb" /out:"$(LIBTDIR)\cookie.exe" @<< $(LINK32_FLAGS) $(LINK32_OBJS) "$(OUTDIR)\cookie.obj" << "$(LIBTDIR)\params.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) "$(OUTDIR)\params.obj" $(LINK32) /pdb:"$(LIBTDIR)\params.pdb" /out:"$(LIBTDIR)\params.exe" @<< $(LINK32_FLAGS) $(LINK32_OBJS) "$(OUTDIR)\params.obj" << "$(LIBTDIR)\parsers.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) "$(OUTDIR)\parsers.obj" $(LINK32) /pdb:"$(LIBTDIR)\parsers.pdb" /out:"$(LIBTDIR)\parsers.exe" @<< $(LINK32_FLAGS) $(LINK32_OBJS) "$(OUTDIR)\parsers.obj" << "$(LIBTDIR)\version.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) "$(OUTDIR)\version.obj" $(LINK32) /pdb:"$(LIBTDIR)\version.pdb" /out:"$(LIBTDIR)\version.exe" @<< $(LINK32_FLAGS) $(LINK32_OBJS) "$(OUTDIR)\version.obj" << !ELSEIF "$(CFG)" == "apreq2_test - Win32 Debug" ALL : "$(LIBDIR)\apreq2_test.lib" $(PROGRAMS) CLEAN : -@erase "$(INTDIR)\at.obj" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\apreq2_test.lib" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /I"$(APACHE)\include" /I"$(APREQ_HOME)\include" /FD /GZ /c BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(LIBDIR)\apreq2_test.bsc" LIB32=link.exe -lib LIB32_FLAGS=/nologo /out:"$(LIBDIR)\apreq2_test.lib" LIB32_OBJS= \ "$(LIBDIR)\at.obj" \ "$(APR_LIB)" \ "$(APU_LIB)" LINK32=link.exe LINK32_FLAGS=kernel32.lib wsock32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /debug /machine:I386 /pdbtype:sept LINK32_OBJS= \ "$(LIBDIR)\libapreq2.lib" \ "$(LIBDIR)\apreq2_test.lib" \ "$(APR_LIB)" \ "$(APU_LIB)" \ "$(APACHE)\lib\libhttpd.lib" "$(LIBDIR)\apreq2_test.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) $(LIB32) @<< $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS) << "$(LIBTDIR)\cookie.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) "$(OUTDIR)\cookie.obj" $(LINK32) /pdb:"$(LIBTDIR)\cookie.pdb" /out:"$(LIBTDIR)\cookie.exe" @<< $(LINK32_FLAGS) $(LINK32_OBJS) "$(OUTDIR)\cookie.obj" << "$(LIBTDIR)\params.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) "$(OUTDIR)\params.obj" $(LINK32) /pdb:"$(LIBTDIR)\params.pdb" /out:"$(LIBTDIR)\params.exe" @<< $(LINK32_FLAGS) $(LINK32_OBJS) "$(OUTDIR)\params.obj" << "$(LIBTDIR)\parsers.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) "$(OUTDIR)\parsers.obj" $(LINK32) /pdb:"$(TESTFILE)\parsers.pdb" /out:"$(LIBTDIR)\parsers.exe" @<< $(LINK32_FLAGS) $(LINK32_OBJS) "$(OUTDIR)\parsers.obj" << "$(LIBTDIR)\version.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) "$(OUTDIR)\version.obj" $(LINK32) /pdb:"$(LIBTDIR)\version.pdb" /out:"$(LIBTDIR)\version.exe" @<< $(LINK32_FLAGS) $(LINK32_OBJS) "$(OUTDIR)\version.obj" << !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(CFG)" == "apreq2_test - Win32 Release" || "$(CFG)" == "apreq2_test - Win32 Debug" SOURCE=$(LIBTDIR)\at.c "$(LIBDIR)\at.obj" : $(SOURCE) "$(INTDIR)" $(CPP) /Fo"$(LIBDIR)\at.obj" $(CPP_PROJ) $(SOURCE) SOURCE=$(LIBTDIR)\cookie.c "$(OUTDIR)\cookie.obj" : $(SOURCE) "$(INTDIR)" $(CPP) /Fo"$(OUTDIR)\cookie.obj" $(CPP_PROJ) $(SOURCE) SOURCE=$(LIBTDIR)\params.c "$(OUTDIR)\params.obj" : $(SOURCE) "$(INTDIR)" $(CPP) /Fo"$(OUTDIR)\params.obj" $(CPP_PROJ) $(SOURCE) SOURCE=$(LIBTDIR)\parsers.c "$(OUTDIR)\parsers.obj" : $(SOURCE) "$(INTDIR)" $(CPP) /Fo"$(OUTDIR)\parsers.obj" $(CPP_PROJ) $(SOURCE) SOURCE=$(LIBTDIR)\version.c "$(OUTDIR)\version.obj" : $(SOURCE) "$(INTDIR)" $(CPP) /Fo"$(OUTDIR)\version.obj" $(CPP_PROJ) $(SOURCE) !ENDIF libapreq2-2.13/win32/apreq2_win32.pl0000755000076400017500000001722711473532340016043 0ustar issacissac#!perl use strict; use Config; use Getopt::Long; require Win32; use ExtUtils::MakeMaker; use File::Spec::Functions qw(catfile catdir); use warnings; use FindBin; BEGIN { die 'This script is intended for Win32' unless $^O =~ /Win32/i; } my $license = <<'END'; # ==================================================================== # # Copyright 2003-2006 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. # apreq2 script designed to allow easy command line access to apreq2 # configuration parameters. END my $file = 'apreq2-config.pl'; my $apreq_home = Win32::GetShortPathName($FindBin::Bin); $apreq_home =~ s!/?win32$!!; $apreq_home =~ s!/!\\!g; require "$apreq_home/win32/util.pl"; my ($prefix, $help); GetOptions('with-apache2=s' => \$prefix, 'help' => \$help) or usage($0); usage($0) if $help; unless (defined $prefix and -d $prefix) { $prefix = prompt("Please give the path to your Apache2 installation:", $prefix); } die "Can't find a suitable Apache2 installation!" unless (-d $prefix and check($prefix)); $prefix = Win32::GetShortPathName($prefix); my %ap_dir; foreach (qw(bin lib include build)) { $ap_dir{$_} = catdir $prefix, $_; } my $src_version = catfile $apreq_home, 'include', 'apreq_version.h'; my $apache_version = catfile $ap_dir{include}, 'apreq_version.h'; my $apreq_version = -e $src_version ? $src_version : $apache_version; open(my $inc, $apreq_version) or die "Cannot open $apreq_version: $!"; my %vers; while (<$inc>) { if (/define\s+APREQ_(MAJOR|MINOR|PATCH)_VERSION\s+(\d+)/) { $vers{$1} = $2; } } close $inc; my $dotted = "$vers{MAJOR}.$vers{MINOR}.$vers{PATCH}"; my $src_dir = -d $apreq_home ? $apreq_home : ''; my %apreq_args = (APREQ_MAJOR_VERSION => $vers{MAJOR}, APREQ_DOTTED_VERSION => $dotted, APREQ_LIBNAME => 'libapreq2.lib', prefix => $prefix, exec_prefix => $prefix, bindir => $ap_dir{bin}, libdir => $ap_dir{lib}, datadir => $prefix, installbuilddir => $ap_dir{build}, includedir => $ap_dir{include}, CC => $Config{cc}, CPP => $Config{cpp}, LD => $Config{ld}, SHELL => $ENV{comspec}, CPPFLAGS => '', CFLAGS => q{ /nologo /MD /W3 /O2 /D "WIN32" /D "_WINDOWS" /D "NDEBUG" }, LDFLAGS => q{ kernel32.lib /nologo /subsystem:windows /dll /machine:I386 }, LIBS => '', EXTRA_INCLUDES => '', APREQ_SOURCE_DIR => $src_dir, APREQ_SO_EXT => $Config{dlext}, APREQ_LIB_TARGET => '', ); my $apreq_usage = << 'EOF'; Usage: apreq2-config [OPTION] Known values for OPTION are: --prefix[=DIR] change prefix to DIR --bindir print location where binaries are installed --includedir print location where headers are installed --libdir print location where libraries are installed --cc print C compiler name --cpp print C preprocessor name and any required options --ld print C linker name --cflags print C compiler flags --cppflags print cpp flags --includes print include information --ldflags print linker flags --libs print additional libraries to link against --srcdir print APR-util source directory --installbuilddir print APR-util build helper directory --link-ld print link switch(es) for linking to APREQ --apreq-so-ext print the extensions of shared objects on this platform --apreq-lib-file print the name of the apreq lib file --version print the APR-util version as a dotted triple --help print this help When linking, an application should do something like: APREQ_LIBS="\`apreq2-config --link-ld --libs\`" An application should use the results of --cflags, --cppflags, --includes, and --ldflags in their build process. EOF my $full = catfile $ap_dir{bin}, $file; open(my $fh, '>', $full) or die "Cannot open $full: $!"; print $fh <<"END"; #!$^X use strict; use warnings; use Getopt::Long; use File::Spec::Functions qw(catfile catdir); $license sub usage { print << 'EOU'; $apreq_usage EOU exit(1); } END foreach my $var (keys %apreq_args) { print $fh qq{my \${$var} = q[$apreq_args{$var}];\n}; } print $fh $_ while ; close $fh; my @args = ('pl2bat', $full); system(@args) == 0 or die "system @args failed: $?"; print qq{apreq2-config.bat has been created under $prefix/bin.\n\n}; __DATA__ my %opts = (); GetOptions(\%opts, 'prefix:s', 'bindir', 'includedir', 'libdir', 'cc', 'cpp', 'ld', 'cflags', 'cppflags', 'includes', 'ldflags', 'libs', 'srcdir', 'installbuilddir', 'link-ld', 'apreq-so-ext', 'apreq-lib-file', 'version', 'help' ) or usage(); usage() if ($opts{help} or not %opts); if (exists $opts{prefix} and $opts{prefix} eq "") { print qq{$prefix\n}; exit(0); } my $user_prefix = defined $opts{prefix} ? $opts{prefix} : ''; my %user_dir; if ($user_prefix) { foreach (qw(lib bin include build)) { $user_dir{$_} = catdir $user_prefix, $_; } } my $flags = ''; SWITCH : { local $\ = "\n"; $opts{bindir} and do { print $user_prefix ? $user_dir{bin} : $bindir; last SWITCH; }; $opts{includedir} and do { print $user_prefix ? $user_dir{include} : $includedir; last SWITCH; }; $opts{libdir} and do { print $user_prefix ? $user_dir{lib} : $libdir; last SWITCH; }; $opts{installbuilddir} and do { print $user_prefix ? $user_dir{build} : $installbuilddir; last SWITCH; }; $opts{srcdir} and do { print $APREQ_SOURCE_DIR; last SWITCH; }; $opts{cc} and do { print $CC; last SWITCH; }; $opts{cpp} and do { print $CPP; last SWITCH; }; $opts{ld} and do { print $LD; last SWITCH; }; $opts{cflags} and $flags .= " $CFLAGS "; $opts{cppflags} and $flags .= " $CPPFLAGS "; $opts{includes} and do { my $inc = $user_prefix ? $user_dir{include} : $includedir; $flags .= qq{ /I"$inc" $EXTRA_INCLUDES }; }; $opts{ldflags} and $flags .= " $LDFLAGS "; $opts{libs} and $flags .= " $LIBS "; $opts{'link-ld'} and do { my $libpath = $user_prefix ? $user_dir{lib} : $libdir; $flags .= qq{ /libpath:"$libpath" $APREQ_LIBNAME }; }; $opts{'apreq-so-ext'} and do { print $APREQ_SO_EXT; last SWITCH; }; $opts{'apreq-lib-file'} and do { my $full_apreqlib = $user_prefix ? (catfile $user_dir{lib}, $APREQ_LIBNAME) : (catfile $libdir, $APREQ_LIBNAME); print $full_apreqlib; last SWITCH; }; $opts{version} and do { print $APREQ_DOTTED_VERSION; last SWITCH; }; print $flags if $flags; } exit(0); libapreq2-2.13/win32/Configure.pl0000644000076400017500000003517211473532340015544 0ustar issacissac#!C:/Perl/bin/perl use strict; use warnings; use FindBin; use Getopt::Long; use File::Spec::Functions qw(devnull catfile catdir path); use Cwd; require Win32; use ExtUtils::MakeMaker; use File::Basename; use File::Path; my ($apache, $apxs, $debug, $help, $no_perl, $perl, $with_perl); my $VERSION = "2.09"; my $result = GetOptions( 'with-apache2=s' => \$apache, 'with-apache2-apxs=s' => \$apxs, 'debug' => \$debug, 'help' => \$help, 'with-perl=s' => \$perl, 'disable-perl-glue' => \$no_perl, 'enable-perl-glue' => \$with_perl, ); usage() if $help; my @path_ext; path_ext(); $apache ||= search(); my $apreq_home = Win32::GetShortPathName($FindBin::Bin); $apreq_home =~ s!/?win32$!!; $apreq_home =~ s!/!\\!g; my $doxygen = which('doxygen'); my $doxysearch = which('doxysearch'); my $cfg = $debug ? 'Debug' : 'Release'; my @tests = qw(cookie parsers params version); my @test_files = map {catfile('library', 't', "$_.t")} @tests; generate_tests($apreq_home, \@tests); my %apr_libs; my $prog = apache_prog_name($apache); my @httpd_ver = httpd_version($prog); my $devnull = devnull(); my %map = ( apr => $httpd_ver[1] == 2 ? 'libapr-1.lib' : 'libapr.lib', apu => $httpd_ver[1] == 2 ? 'libaprutil-1.lib' : 'libaprutil.lib' ); foreach my $what (qw(apr apu)) { my $ap = ($httpd_ver[1] == 2) ? "$what-1-config.bat" : "$what-config.bat"; my $cfg = catfile $apache, 'bin', $ap; my $lib; eval {$lib = qx{"$cfg" --$what-lib-file 2>$devnull;}}; if ($@ or not $lib or $lib =~ /usage/i) { $apr_libs{$what} = catfile $apache, 'lib', $map{$what}; } else { chomp $lib; $apr_libs{$what} = $lib; } } my $version_check = catfile $apreq_home, 'build', 'version_check.pl'; my $cmd = join ' ', ($^X, $version_check, 'perl_prereqs'); chomp(my $prereq_string = qx{$cmd}); open(my $make, '>Makefile') or die qq{Cannot open Makefile: $!}; print $make <<"END"; # Microsoft Developer Studio Generated NMAKE File. # The following is a trick to get CPAN clients to follow prerequisites: # # $prereq_string # # --- MakeMaker post_initialize section: APREQ_HOME=$apreq_home APR_LIB=$apr_libs{apr} APU_LIB=$apr_libs{apu} CFG=$cfg APACHE=$apache PERL=$^X RM_F=\$(PERL) -MExtUtils::Command -e rm_f DOXYGEN_CONF=\$(APREQ_HOME)\\build\\doxygen.conf.win32 TEST_FILES = @test_files END print $make $_ while (); unless (-x $apxs) { my $apxs_trial = catfile $apache, 'bin', 'apxs.bat'; $apxs = (-e $apxs_trial) ? $apxs_trial : which('apxs'); unless ($apxs) { $apxs = fetch_apxs() ? which('apxs') : ''; } } my $test = << 'END'; TEST : TEST_APREQ2 PERL_TEST TEST_APREQ2: $(LIBAPREQ) $(MOD) $(MAKE) /nologo /f $(CFG_HOME)\$(APREQ2_TEST).mak CFG="$(APREQ2_TEST) - Win32 $(CFG)" APACHE="$(APACHE)" APREQ_HOME="$(APREQ_HOME)" APR_LIB="$(APR_LIB)" APU_LIB="$(APU_LIB)" set PATH=$(APREQ_HOME)\win32\libs;$(APACHE)\bin;$(PATH) $(PERL) "-MExtUtils::Command::MM" "-e" "test_harness()" $(TEST_FILES) cd $(APREQ_HOME) $(MAKE) /nologo /f $(CFG_HOME)\$(CGITEST).mak CFG="$(CGITEST) - Win32 $(CFG)" APACHE="$(APACHE)" APREQ_HOME="$(APREQ_HOME)" APR_LIB="$(APR_LIB)" APU_LIB="$(APU_LIB)" cd $(APREQ_HOME) END my $clean = << 'END'; CLEAN: cd $(LIBDIR) $(RM_F) *.pch *.exe *.exp *.lib *.pdb *.ilk *.idb *.so *.dll *.obj *.manifest cd $(TDIR) $(RM_F) *.pch *.exe *.exp *.lib *.pdb *.ilk *.idb *.so *.dll *.obj *.manifest cd $(APREQ_HOME)\module\t\c-modules $(MAKE) clean cd $(APREQ_HOME) !IF EXIST("$(PERLGLUE)\Makefile") cd $(PERLGLUE) $(MAKE) /nologo clean cd $(APREQ_HOME) !ENDIF END if ($apxs) { $test .= << "END"; cd \$(APREQ_MODULE) \$(PERL) t\\TEST.PL -apxs $apxs cd \$(APREQ_HOME) END $clean .= << 'END'; cd $(APREQ_MODULE) $(PERL) t\TEST.PL -clean cd $(APREQ_HOME) END } print $make "\n", $test, "\n"; print $make "\n", $clean, "\n"; if ($doxygen and $doxysearch) { print $make <<"END"; docs: \$(DOXYGEN_CONF) cd \$(APREQ_HOME) "$doxygen" \$(DOXYGEN_CONF) cd \$(APREQ_HOME) END my $bin_abspath = Win32::GetShortPathName(dirname($doxysearch)); open(my $conf, "$apreq_home/build/doxygen.conf.in") or die "Cannot read $apreq_home/build/doxygen.conf.in: $!"; open(my $win32_conf, ">$apreq_home/build/doxygen.conf.win32") or die "Cannot write to $apreq_home/build/doxygen.conf.win32: $!"; while (<$conf>) { s/\@PERL\@/"$^X"/; s/\@PACKAGE\@/libapreq2/; s/\@VERSION\@/$VERSION/; print $win32_conf $_; } close $conf; close $win32_conf; } close $make; # generate_defs(); if (not $no_perl and $] >= 5.008) { my @args = ($^X, "$apreq_home/build/xsbuilder.pl", 'run', 'run'); chdir "$apreq_home/glue/perl"; system(@args) == 0 or die "system @args failed: $?"; chdir $apreq_home; } print << "END"; A Makefile has been generated in $apreq_home. You can now run nmake - build the libapreq2 library and perl glue nmake test - run the supplied tests nmake install - install the C libraries and perl glue modules nmake clean - remove intermediate files nmake docs - build documents (requires doxygen) nmake help - list the nmake targets END if ($doxygen) { print << 'END'; nmake docs - builds documents END } my @args = ($^X, "$apreq_home/win32/apreq2_win32.pl", "--with-apache2=$apache"); system(@args) == 0 or warn "system @args failed: $?"; sub usage { print <<'END'; Usage: perl Configure.pl [--with-apache2=C:\Path\to\Apache2] [--debug] perl Configure.pl --help Options: --with-apache2=C:\Path\to\Apache2 : specify the top-level Apache2 directory --debug : build a debug version --disable-perl-glue : skip building the perl glue --help : print this help message With no options specified, an attempt will be made to find a suitable Apache2 directory, and if found, a non-debug version will be built. END exit; } sub search { my $apache; if (my $bin = which('Apache')) { (my $candidate = dirname($bin)) =~ s!bin$!!; if (-d $candidate and check($candidate)) { $apache = $candidate; } } unless ($apache and -d $apache) { $apache = prompt("Please give the path to your Apache2 installation:", $apache); } die "Can't find a suitable Apache2 installation!" unless ($apache and -d $apache and check($apache)); $apache = Win32::GetShortPathName($apache); $apache =~ s!\\!/!g; $apache =~ s!/$!!; my $ans = prompt(qq{\nUse "$apache" for your Apache2 directory?}, 'yes'); unless ($ans =~ /^y/i) { die <<'END'; Please run this configuration script again, and give the --with-apache2=C:\Path\to\Apache2 option to specify the desired top-level Apache2 directory. END } return $apache; } sub drives { my @drives = (); eval{require Win32API::File;}; return map {"$_:\\"} ('C' .. 'Z') if $@; my @r = Win32API::File::getLogicalDrives(); return unless @r > 0; for (@r) { my $t = Win32API::File::GetDriveType($_); push @drives, $_ if ($t == 3 or $t == 4); } return @drives > 0 ? @drives : undef; } sub check { my $apache = shift; die qq{No libhttpd library found under $apache/lib} unless -e qq{$apache/lib/libhttpd.lib}; die qq{No httpd header found under $apache/include} unless -e qq{$apache/include/httpd.h}; my $prog = apache_prog_name($apache); my $vers = qx{$prog -v}; die qq{"$apache" does not appear to be version 2.x} unless $vers =~ m!Apache/2.\d!; return 1; } sub path_ext { if ($ENV{PATHEXT}) { push @path_ext, split ';', $ENV{PATHEXT}; for my $ext (@path_ext) { $ext =~ s/^\.*(.+)$/$1/; } } else { #Win9X: doesn't have PATHEXT push @path_ext, qw(com exe bat); } } sub which { my $program = shift; return unless $program; my @extras = (); my @drives = drives(); (my $program_files = $ENV{ProgramFiles}) =~ s!^\w+:\\!!; if (@drives > 0) { for my $drive (@drives) { for ('Apache2', "$program_files/Apache2", "$program_files/Apache Group/Apache2") { my $bin = catdir $drive, $_, 'bin'; push @extras, $bin if (-d $bin); } } } my @a = map {catfile $_, $program} (path(), @extras); for my $base(@a) { return $base if -x $base; for my $ext (@path_ext) { return "$base.$ext" if -x "$base.$ext"; } } return; } sub httpd_version { my $prog = shift; my $vers = qx{$prog -v}; die qq{Could not parse "$apache" version} unless $vers =~ m!Apache/2.(\d).(\d)!; return (2, $1, $2); } sub generate_defs { my $preamble =<<'END'; LIBRARY EXPORTS END chdir "$apreq_home/env"; my $match = qr{^apreq_env}; my %fns = (); open my $fh, ") { next unless /^APREQ_DECLARE\([^\)]+\)\s*(\w+)/; my $fn = $1; $fns{$fn}++ if $fn =~ /$match/; } close $fh; open my $def, ">../win32/mod_apreq.def" or die "Cannot open win32/mod_apreq.def: $!"; print $def $preamble; print $def $_, "\n" for (sort keys %fns); close $def; } sub generate_tests { my ($top, $test_files) = @_; my $t = catdir $top, 'library', 't'; foreach my $test(@$test_files) { my $file = catfile $t, $test; open my $fh, '>', "$file.t" || die "Cannot open $file.t: $!"; print $fh <<"EOT"; #!$^X exec '$file'; EOT close $fh; } } sub fetch_apxs { eval {require Archive::Tar;}; if ($@) { die "Need Archive::Tar installed in order to install apxs."; } eval {require LWP::Simple; import LWP::Simple qw(getstore is_success)}; if ($@) { die "Need LWP::Simple installed in order to install apxs."; } print << 'END'; I could not find an apxs utility on your system, which is needed to run tests in the env/ subdirectory. The apxs utiltity (and apr-config and apu-config utilties) have not yet been ported to Apache2 on Win32, but a development port is available, which I can install for you, if you like. END my $ans = prompt('Install apxs?', 'yes'); return unless $ans =~ /^y/i; my $file = 'apxs_win32.tar.gz'; my $remote = 'http://perl.apache.org/dist/win32-bin/' . $file; print "Fetching $remote ... "; unless (is_success(getstore($remote, $file))) { warn "Download of $remote failed"; return; } print " done!\n"; my $arc = Archive::Tar->new($file, 1); $arc->extract($arc->list_files()); my $dir = 'apxs'; unless (-d $dir) { warn "Unpacking $file failed"; return; } print "chdir $dir\n"; chdir $dir or do { warn "chdir to $dir failed: $!"; return; }; my $prog = apache_prog_name($apache); my @args = ($^X, 'Configure.pl', "-with-apache2=$apache", "--with-apache-prog=$prog"); print "@args\n\n"; system(@args) == 0 or do { warn "system @args failed: $?"; return; }; chdir '..'; rmtree($dir, 1, 1) or warn "rmtree of $dir failed: $!"; print "unlink $file\n"; unlink $file or warn "unlink of $file failed: $!"; return 1; } sub apache_prog_name { my $apache = shift; my $prog; for my $trial(qw(Apache.exe httpd.exe)) { my $path = catfile($apache, 'bin', $trial); next unless -e $path; $prog = $path; last; } die "Could not determine the Apache2 binary name" unless $prog; return $prog; } __DATA__ LIBAPREQ=libapreq2 APREQ2_TEST=apreq2_test CGITEST=test_cgi MOD=mod_apreq2 !IF "$(CFG)" != "Release" && "$(CFG)" != "Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE CFG="Release" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "Release" (based on "Win32 (x86) Console Application") !MESSAGE "Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(APACHE)" == "" !MESSAGE No Apache directory was specified. !MESSAGE Please run Configure.bat to specify a valid Apache directory. !ERROR !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CFG_HOME=$(APREQ_HOME)\win32 LIBDIR=$(CFG_HOME)\libs PERLGLUE=$(APREQ_HOME)\glue\perl APACHE_LIB=$(APACHE)\lib TDIR=$(APREQ_HOME)\library\t APREQ_MODULE=$(APREQ_HOME)\module ALL : MAKE_ALL MAKE_ALL : $(LIBAPREQ) $(MOD) PERL_GLUE $(LIBAPREQ): $(MAKE) /nologo /f $(CFG_HOME)\$(LIBAPREQ).mak CFG="$(LIBAPREQ) - Win32 $(CFG)" APACHE="$(APACHE)" APREQ_HOME="$(APREQ_HOME)" APR_LIB="$(APR_LIB)" APU_LIB="$(APU_LIB)" $(MOD): $(LIBAPREQ) $(MAKE) /nologo /f $(CFG_HOME)\$(MOD).mak CFG="$(MOD) - Win32 $(CFG)" APACHE="$(APACHE)" APREQ_HOME="$(APREQ_HOME)" APR_LIB="$(APR_LIB)" APU_LIB="$(APU_LIB)" PERL_GLUE: $(MOD) cd $(PERLGLUE) $(PERL) Makefile.PL $(MAKE) /nologo cd $(APREQ_HOME) PERL_TEST: $(MOD) cd $(PERLGLUE) !IF !EXIST("$(PERLGLUE)\Makefile") $(PERL) Makefile.PL !ENDIF set PATH=$(APREQ_HOME)\win32\libs;$(APACHE)\bin;$(PATH) $(MAKE) /nologo test cd $(APREQ_HOME) INSTALL : INSTALL_LIBAPREQ2 PERL_INSTALL INSTALL_LIBAPREQ2: $(LIBAPREQ) cd $(LIBDIR) !IF EXIST("$(LIBDIR)\$(MOD).so") copy "$(MOD).so" "$(APACHE)\modules\$(MOD).so" copy "$(MOD).lib" "$(APACHE_LIB)\$(MOD).lib" !ENDIF !IF EXIST("$(LIBDIR)\$(MOD).pdb") copy "$(MOD).pdb" "$(APACHE)\modules\$(MOD).pdb" !ENDIF !IF EXIST("$(LIBDIR)\$(LIBAPREQ).lib") copy "$(LIBAPREQ).lib" "$(APACHE_LIB)\$(LIBAPREQ).lib" !ENDIF !IF EXIST("$(LIBDIR)\$(LIBAPREQ).dll") copy "$(LIBAPREQ).dll" "$(APACHE)\bin\$(LIBAPREQ).dll" !ENDIF !IF EXIST("$(LIBDIR)\$(LIBAPREQ).pdb") copy "$(LIBAPREQ).pdb" "$(APACHE)\bin\$(LIBAPREQ).pdb" !ENDIF cd $(APREQ_HOME) PERL_INSTALL: $(MOD) cd $(PERLGLUE) !IF !EXIST("$(PERLGLUE)\Makefile") $(PERL) Makefile.PL !ENDIF $(MAKE) /nologo install cd $(APREQ_HOME) HELP: @echo nmake - build the libapreq2 library and perl glue @echo nmake test - run the supplied tests @echo nmake clean - clean @echo nmake install - install the C libraries and perl modules @echo nmake docs - build documents (requires doxygen) libapreq2-2.13/win32/libapreq2.mak0000644000076400017500000001462311473532340015637 0ustar issacissac# Microsoft Developer Studio Generated NMAKE File, Based on libapreq.dsp !IF "$(APACHE)" == "" !MESSAGE No Apache directory was specified. !MESSAGE This makefile is not to be run directly. !MESSAGE Please use Perl Makefile.PL, and then $(MAKE) on Makefile. !ERROR !ENDIF !IF "$(APR_LIB)" == "" !MESSAGE No apr lib was specified. !MESSAGE This makefile is not to be run directly. !MESSAGE Please use Perl Makefile.PL, and then $(MAKE) on Makefile. !ERROR !ENDIF !IF "$(APU_LIB)" == "" !MESSAGE No aprutil lib was specified. !MESSAGE This makefile is not to be run directly. !MESSAGE Please use Perl Makefile.PL, and then $(MAKE) on Makefile. !ERROR !ENDIF !IF "$(CFG)" == "" CFG=libapreq2 - Win32 Release !MESSAGE No configuration specified. Defaulting to libapreq2 - Win32 Release. !ENDIF !IF "$(CFG)" != "libapreq2 - Win32 Release" && "$(CFG)" != "libapreq2 - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "libapreq2.mak" CFG="libapreq2 - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "libapreq2 - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "libapreq2 - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe RSC=rc.exe CFG_HOME=$(APREQ_HOME)\win32 OUTDIR=$(CFG_HOME)\libs INTDIR=$(CFG_HOME)\libs LIBDIR=$(APREQ_HOME)\library LINK32_OBJS= \ "$(INTDIR)\cookie.obj" \ "$(INTDIR)\param.obj" \ "$(INTDIR)\parser.obj" \ "$(INTDIR)\parser_header.obj" \ "$(INTDIR)\parser_multipart.obj" \ "$(INTDIR)\parser_urlencoded.obj" \ "$(INTDIR)\util.obj" \ "$(INTDIR)\version.obj" \ "$(INTDIR)\module.obj" \ "$(INTDIR)\module_custom.obj" \ "$(INTDIR)\module_cgi.obj" \ "$(INTDIR)\error.obj" \ "$(INTDIR)\libapreq.res" !IF "$(CFG)" == "libapreq2 - Win32 Release" ALL : "$(OUTDIR)\libapreq2.dll" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APREQ_DECLARE_EXPORT" /I"$(APACHE)\include" /I"$(APREQ_HOME)\include" /YX /FD /c MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 RSC=rc.exe RSC_PROJ=/l 0x409 /i "$(APACHE)\include" /d "NDEBUG" /i "$(APREQ_HOME)\include" BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\libapreq2.bsc" LINK32=link.exe MANIFEST=$(OUTDIR)\libapreq2.dll.manifest LINK32_FLAGS="$(APR_LIB)" "$(APU_LIB)" kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /machine:I386 /out:"$(OUTDIR)\libapreq2.dll" /implib:"$(OUTDIR)\libapreq2.lib" "$(OUTDIR)\libapreq2.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(DEF_FLAGS) $(LINK32_OBJS) << if exist $(MANIFEST) mt /nologo /manifest $(MANIFEST) /outputresource:$(OUTDIR)\libapreq2.dll;2 !ELSEIF "$(CFG)" == "libapreq2 - Win32 Debug" ALL : "$(OUTDIR)\libapreq2.dll" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APREQ_DECLARE_EXPORT" /I"$(APACHE)\include" /I"$(APREQ_HOME)\include" /YX /FD /GZ /c MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32 RSC=rc.exe RSC_PROJ=/l 0x409 /i "$(APACHE)\include" /d "_DEBUG /i "$(APREQ_HOME)\include" BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\libapreq2.bsc" LINK32=link.exe MANIFEST=$(OUTDIR)\libapreq2.dll.manifest LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\libapreq2.pdb" /debug /machine:I386 /out:"$(OUTDIR)\libapreq2.dll" /implib:"$(OUTDIR)\libapreq2.lib" /pdbtype:sept "$(OUTDIR)\libapreq2.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(DEF_FLAGS) $(LINK32_OBJS) << if exist $(MANIFEST) mt /nologo /manifest $(MANIFEST) /outputresource:$(OUTDIR)\libapreq2.dll;2 !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(CFG)" == "libapreq2 - Win32 Release" || "$(CFG)" == "libapreq2 - Win32 Debug" SOURCE=$(LIBDIR)\cookie.c "$(INTDIR)\cookie.obj" : $(SOURCE) "$(INTDIR)" $(CPP) /Fo"$(INTDIR)\cookie.obj" $(CPP_PROJ) $(SOURCE) SOURCE=$(LIBDIR)\param.c "$(INTDIR)\param.obj" : $(SOURCE) "$(INTDIR)" $(CPP) /Fo"$(INTDIR)\param.obj" $(CPP_PROJ) $(SOURCE) SOURCE=$(LIBDIR)\parser.c "$(INTDIR)\parser.obj" : $(SOURCE) "$(INTDIR)" $(CPP) /Fo"$(INTDIR)\parser.obj" $(CPP_PROJ) $(SOURCE) SOURCE=$(LIBDIR)\parser_header.c "$(INTDIR)\parser_header.obj" : $(SOURCE) "$(INTDIR)" $(CPP) /Fo"$(INTDIR)\parser_header.obj" $(CPP_PROJ) $(SOURCE) SOURCE=$(LIBDIR)\parser_multipart.c "$(INTDIR)\parser_multipart.obj" : $(SOURCE) "$(INTDIR)" $(CPP) /Fo"$(INTDIR)\parser_multipart.obj" $(CPP_PROJ) $(SOURCE) SOURCE=$(LIBDIR)\parser_urlencoded.c "$(INTDIR)\parser_urlencoded.obj" : $(SOURCE) "$(INTDIR)" $(CPP) /Fo"$(INTDIR)\parser_urlencoded.obj" $(CPP_PROJ) $(SOURCE) SOURCE=$(LIBDIR)\version.c "$(INTDIR)\version.obj" : $(SOURCE) "$(INTDIR)" $(CPP) /Fo"$(INTDIR)\version.obj" $(CPP_PROJ) $(SOURCE) SOURCE=$(LIBDIR)\module.c "$(INTDIR)\module.obj" : $(SOURCE) "$(INTDIR)" $(CPP) /Fo"$(INTDIR)\module.obj" $(CPP_PROJ) $(SOURCE) SOURCE=$(LIBDIR)\module_custom.c "$(INTDIR)\module_custom.obj" : $(SOURCE) "$(INTDIR)" $(CPP) /Fo"$(INTDIR)\module_custom.obj" $(CPP_PROJ) $(SOURCE) SOURCE=$(LIBDIR)\module_cgi.c "$(INTDIR)\module_cgi.obj" : $(SOURCE) "$(INTDIR)" $(CPP) /Fo"$(INTDIR)\module_cgi.obj" $(CPP_PROJ) $(SOURCE) SOURCE=$(LIBDIR)\util.c "$(INTDIR)\util.obj" : $(SOURCE) "$(INTDIR)" $(CPP) /Fo"$(INTDIR)\util.obj" $(CPP_PROJ) $(SOURCE) SOURCE=$(LIBDIR)\error.c "$(INTDIR)\error.obj" : $(SOURCE) "$(INTDIR)" $(CPP) /Fo"$(INTDIR)\error.obj" $(CPP_PROJ) $(SOURCE) SOURCE=.\libapreq.rc "$(INTDIR)\libapreq.res" : $(SOURCE) "$(INTDIR)" $(RSC) /fo"$(INTDIR)\libapreq.res" $(RSC_PROJ) $(SOURCE) !ENDIF libapreq2-2.13/win32/mod_apreq2.mak0000644000076400017500000001100011473532340015771 0ustar issacissac# Microsoft Developer Studio Generated NMAKE File, Based on mod_apreq.dsp !IF "$(APACHE)" == "" !MESSAGE No Apache directory was specified. !MESSAGE This makefile is not to be run directly. !MESSAGE Please use Perl Makefile.PL, and then $(MAKE) on Makefile. !ERROR !ENDIF !IF "$(APR_LIB)" == "" !MESSAGE No apr lib was specified. !MESSAGE This makefile is not to be run directly. !MESSAGE Please use Perl Makefile.PL, and then $(MAKE) on Makefile. !ERROR !ENDIF !IF "$(APU_LIB)" == "" !MESSAGE No aprutil lib was specified. !MESSAGE This makefile is not to be run directly. !MESSAGE Please use Perl Makefile.PL, and then $(MAKE) on Makefile. !ERROR !ENDIF !IF "$(CFG)" == "" CFG=mod_apreq2 - Win32 Release !MESSAGE No configuration specified. Defaulting to mod_apreq2 - Win32 Release. !ENDIF !IF "$(CFG)" != "mod_apreq2 - Win32 Release" && "$(CFG)" != "mod_apreq2 - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "mod_apreq2.mak" CFG="mod_apreq2 - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "mod_apreq2 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "mod_apreq2 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CPP=cl.exe MTL=midl.exe RSC=rc.exe CFG_HOME=$(APREQ_HOME)\win32 OUTDIR=$(CFG_HOME)\libs INTDIR=$(CFG_HOME)\libs MODDIR=$(APREQ_HOME)\module\apache2 LINK32_OBJS= \ "$(INTDIR)\handle.obj" \ "$(INTDIR)\filter.obj" \ "$(APR_LIB)" \ "$(APU_LIB)" \ "$(APACHE)\lib\libhttpd.lib" \ "$(OUTDIR)\libapreq2.lib" !IF "$(CFG)" == "mod_apreq2 - Win32 Release" ALL : "$(OUTDIR)\mod_apreq2.dll" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APREQ_DECLARE_EXPORT" /I"$(APACHE)\include" /I"$(APREQ_HOME)\include" /I"$(MODDIR)" /YX /FD /c MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\mod_apreq2.bsc" LINK32=link.exe MANIFEST=$(OUTDIR)\mod_apreq2.so.manifest LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /machine:I386 /out:"$(OUTDIR)\mod_apreq2.so" /implib:"$(OUTDIR)\mod_apreq2.lib" "$(OUTDIR)\mod_apreq2.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << if exist $(MANIFEST) mt /nologo /manifest $(MANIFEST) /outputresource:$(OUTDIR)\mod_apreq2.so;2 !ELSEIF "$(CFG)" == "mod_apreq2 - Win32 Debug" ALL : "$(OUTDIR)\mod_apreq2.dll" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MOD_APREQ_EXPORTS" /I"$(APACHE)\include" /I"$(APREQ_HOME)\include" /I"$(MODDIR)" /YX /FD /GZ /c MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32 BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\mod_apreq2.bsc" LINK32=link.exe MANIFEST=$(OUTDIR)\mod_apreq2.so.manifest LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\mod_apreq2.pdb" /debug /machine:I386 /out:"$(OUTDIR)\mod_apreq2.so" /implib:"$(OUTDIR)\mod_apreq2.lib" /pdbtype:sept "$(OUTDIR)\mod_apreq2.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << if exist $(MANIFEST) mt /nologo /manifest $(MANIFEST) /outputresource:$(OUTDIR)\mod_apreq2.so;2 !ENDIF .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << !IF "$(CFG)" == "mod_apreq2 - Win32 Release" || "$(CFG)" == "mod_apreq2 - Win32 Debug" SOURCE=$(MODDIR)\filter.c "$(INTDIR)\filter.obj" : $(SOURCE) "$(INTDIR)" $(CPP) /Fo"$(INTDIR)\filter.obj" $(CPP_PROJ) $(SOURCE) SOURCE=$(MODDIR)\handle.c "$(INTDIR)\handle.obj" : $(SOURCE) "$(INTDIR)" $(CPP) /Fo"$(INTDIR)\handle.obj" $(CPP_PROJ) $(SOURCE) !ENDIF libapreq2-2.13/win32/README0000644000076400017500000000275411473532340014146 0ustar issacissacThis directory contains the necessary makefiles to build libapreq and related things on Win32 using VC++ 6. Run, from the httpd-apreq-2 top-level directory, perl Makefile.PL to generate the top-level Makefile. Available options are: --with-apache2=C:\Path\to\Apache2 : specify the top-level Apache2 directory --debug : build a debug version --without-perl : skip initialization of perl glue --help : print a help message With no options specified, an attempt will be made to find a suitable Apache2 directory, and if found, a non-debug version will be built. Assuming the configuration is successful, a Makefile will be generated. This can be used as: nmake - builds the libapreq2 library and perl glue nmake test - runs the supplied tests nmake install - install the C libraries and perl modules nmake clean - clean nmake docs - build documentation nmake help - print a usage message The 'docs' target is only available if a doxygen binary is detected. An experimental apxs tool for Win32 is available at http://perl.apache.org/dist/win32-bin/apxs_win32.tar.gz which will be needed to build the env/c-modules tests. If the apxs bat file isn't found on your system, the configuration script should offer to fetch and install it for you. If this is not done, grab the above archive, unpack it, and run the Configure.pl script within the archive to install. libapreq2-2.13/win32/test_cgi.mak0000644000076400017500000001013011473532340015544 0ustar issacissac# Microsoft Developer Studio Generated NMAKE File, Based on testall.dsp !IF "$(APACHE)" == "" !MESSAGE No Apache directory was specified. !MESSAGE This makefile is not to be run directly. !MESSAGE Please use Perl Makefile.PL, and then $(MAKE) on Makefile. !ERROR !ENDIF !IF "$(APR_LIB)" == "" !MESSAGE No apr lib was specified. !MESSAGE This makefile is not to be run directly. !MESSAGE Please use Perl Makefile.PL, and then $(MAKE) on Makefile. !ERROR !ENDIF !IF "$(APU_LIB)" == "" !MESSAGE No aprutil lib was specified. !MESSAGE This makefile is not to be run directly. !MESSAGE Please use Perl Makefile.PL, and then $(MAKE) on Makefile. !ERROR !ENDIF !IF "$(CFG)" == "" CFG=test_cgi - Win32 Release !MESSAGE No configuration specified. Defaulting to test_cgi - Win32 Release. !ENDIF !IF "$(CFG)" != "test_cgi - Win32 Release" && "$(CFG)" != "test_cgi - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "test_cgi.mak" CFG="test_cgi - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "test_cgi - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "test_cgi - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF CFG_HOME=$(APREQ_HOME)\win32 MODULE=$(APREQ_HOME)\module OUTDIR=$(CFG_HOME)\libs INTDIR=$(CFG_HOME)\libs CGIBIN=$(MODULE)\t\cgi-bin LINK32_OBJS= \ "$(INTDIR)\test_cgi.obj" \ "$(OUTDIR)\libapreq2.lib" \ "$(APR_LIB)" \ "$(APU_LIB)" !IF "$(CFG)" == "test_cgi - Win32 Release" ALL : "$(OUTDIR)\test_cgi.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe CPP_PROJ=/nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /I"$(APACHE)\include" /I"$(APREQ_HOME)\include" /Fp"$(INTDIR)\test_cgi.pch" /YX /FD /c RSC=rc.exe BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\test_cgi.bsc" LINK32=link.exe LINK32_FLAGS=kernel32.lib wsock32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\test_cgi.pdb" /machine:I386 /out:"$(CGIBIN)\test_cgi.exe" !ELSEIF "$(CFG)" == "test_cgi - Win32 Debug" ALL : "$(OUTDIR)\test_cgi.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /I"$(APACHE)\include" /I"$(APREQ_HOME)\include" /YX /FD /GZ /c RSC=rc.exe BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\test_cgi.bsc" LINK32=link.exe LINK32_FLAGS=kernel32.lib wsock32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\test_cgi.pdb" /debug /machine:I386 /out:"$(CGIBIN)\test_cgi.exe" /pdbtype:sept !ENDIF !IF "$(CFG)" == "test_cgi - Win32 Release" || "$(CFG)" == "test_cgi - Win32 Debug" .c{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.obj:: $(CPP) @<< $(CPP_PROJ) $< << .c{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cpp{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << .cxx{$(INTDIR)}.sbr:: $(CPP) @<< $(CPP_PROJ) $< << "$(OUTDIR)\test_cgi.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) if not exist "$(CGIBIN)/$(NULL)" mkdir "$(CGIBIN)" $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << SOURCE=$(MODULE)\test_cgi.c "$(INTDIR)\test_cgi.obj" : $(SOURCE) "$(INTDIR)" $(CPP) /Fo"$(INTDIR)\test_cgi.obj" $(CPP_PROJ) $(SOURCE) !ENDIF libapreq2-2.13/win32/util.pl0000644000076400017500000000172111473532340014571 0ustar issacissacsub usage { my $script = shift; print <<"END"; Usage: perl $script [--with-apache2=C:\Path\to\Apache2] perl $script --help Options: --with-apache2=C:\Path\to\Apache2 : specify the top-level Apache2 directory --help : print this help message With no options specified, an attempt will be made to find a suitable Apache2 directory. END exit; } require File::Spec; sub check { my $apache = shift; die qq{No libhttpd library found under $apache/lib} unless -e qq{$apache/lib/libhttpd.lib}; die qq{No httpd header found under $apache/include} unless -e qq{$apache/include/httpd.h}; for my $b(qw(Apache.exe httpd.exe)) { my $binary = File::Spec->catfile($apache, 'bin', $b); next unless -x $binary; my $vers = qx{$binary -v}; die qq{"$apache" does not appear to be version 2.x} unless $vers =~ m!Apache/2.!; last; } return 1; } 1;