diff -ruN squid-2.6.PRE2/CONTRIBUTORS squid-2.6.RC1/CONTRIBUTORS
--- squid-2.6.PRE2/CONTRIBUTORS Sat Jun 3 20:53:41 2006
+++ squid-2.6.RC1/CONTRIBUTORS Wed Jun 7 18:00:48 2006
@@ -98,5 +98,7 @@
Tim Starling
Reuben Farrelly
Alan Barrett
+ Przemek Czerkas
+ Pawel Worach
Duane Wessels
diff -ruN squid-2.6.PRE2/ChangeLog squid-2.6.RC1/ChangeLog
--- squid-2.6.PRE2/ChangeLog Sat Jun 3 20:27:53 2006
+++ squid-2.6.RC1/ChangeLog Wed Jun 7 18:22:02 2006
@@ -46,6 +46,7 @@
purgeing of cache content
- Optionally follow X-Forwarded-For headers to determine the original
client IP behind sedond level proxies
+ - FreeBSD kqueue support
Changes to squid-2.5.STABLE14 (20 May 2006)
- [Minor] icons not displayed when visible_hostname is a
diff -ruN squid-2.6.PRE2/Makefile.in squid-2.6.RC1/Makefile.in
--- squid-2.6.PRE2/Makefile.in Fri Jun 2 15:35:38 2006
+++ squid-2.6.RC1/Makefile.in Mon Jun 12 00:09:41 2006
@@ -15,7 +15,7 @@
@SET_MAKE@
#
-# $Id: Makefile.in,v 1.41 2006/06/02 21:35:38 hno Exp $
+# $Id: Makefile.in,v 1.45 2006/06/12 06:09:41 hno Exp $
#
srcdir = @srcdir@
top_srcdir = @top_srcdir@
@@ -43,8 +43,8 @@
$(srcdir)/Makefile.in $(top_srcdir)/configure \
$(top_srcdir)/include/autoconf.h.in COPYING ChangeLog INSTALL \
cfgaux/compile cfgaux/config.guess cfgaux/config.sub \
- cfgaux/depcomp cfgaux/install-sh cfgaux/ltmain.sh \
- cfgaux/missing cfgaux/mkinstalldirs
+ cfgaux/depcomp cfgaux/install-sh cfgaux/missing \
+ cfgaux/mkinstalldirs
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
@@ -150,6 +150,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -182,7 +184,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -192,10 +193,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/RELEASENOTES.html squid-2.6.RC1/RELEASENOTES.html
--- squid-2.6.PRE2/RELEASENOTES.html Tue Jun 6 11:46:36 2006
+++ squid-2.6.RC1/RELEASENOTES.html Tue Jun 20 15:01:37 2006
@@ -7,7 +7,7 @@
Squid 2.6.PRE2 release notes
-Squid Developers
$Id: release-2.6.html,v 1.11 2006/06/06 08:20:55 hno Exp $
+Squid Developers
$Id: release-2.6.html,v 1.15 2006/06/12 21:37:42 hno Exp $
This document contains the release notes for version 2.6 of Squid.
Squid is a WWW Cache application developed by the Web Caching community.
@@ -45,11 +45,11 @@
client requests for objects into one request to the server. Of particular
benefit in accelerator setups but also provides some benefits to non accelerator
setups.
-Support for epoll under Linux, which gives Squid the ability to handle
-many many more concurrent requests with lower CPU overhead and lower
-FileDescriptor usage. This feature is of particular benefit to very busy caches
+Support for epoll under Linux and kqueue under FreeBSD, which gives Squid
+the ability to handle many many more concurrent requests with lower CPU
+overhead. This feature is of particular benefit to very busy caches
as the poll() and select() routines do not scale anywhere near as well as epoll
-does under high loads.
+and kqueue does under high loads.
SSL assisted hardware encryption making use of OpenSSL functionality
within Squid.
Logging enhancements to allow even greater customization of the way Squid
@@ -70,6 +70,8 @@
membership check
+HTCP significantly cleaned up and added support for the CLR operation to purge contents from the cache
+Support for parsing X-Forwarded-For headers allowing access controls to be based on the real client IP even if behind secondary proxies
@@ -87,21 +89,26 @@
ssl_engineNew directive for hardware assisted SSL encryption
sslproxy_*New directives defining how to gateway http->https
sslpassword_programNew helper directive to query an external program for SSL key encryption password (if any)
+no_cacheRenamed to cache to better reflect the functionaliy. no_cache still accepted.
+cacheNew name for the old no_cache directive.
cache_varyNew directive to disable caching of Vary:ing responses
+broken_vary_encodingNew directive to work around known broken compression modules which hasn't understood the meaning of the ETag HTTP header.
logformatNew directive for defining custom log formats
cache_access_logRenamed to access_log
access_logSelect what requests to log where any by what format. Support for multiple log files and multiple log formats.
check_hostnamesNew option to disable the hostname validity/sanity checks usually performed by Squid, replacing the similar build time configure option in 2.5.
allow_underscoreNew option to allow _ in hostnames, replacing the similar build time configure option in 2.5 and earlier.
-redirect_*Renamed to url_rewrite_* to better reflect the functionality of this helper
+dns_defnamesAllow for domain searches. Now possible even when using the internal DNS client
+redirect_*Renamed to url_rewrite_* to better reflect the functionality of this helper (rewriting requested URLs)
url_rewrite_concurrencyActivates a new and more efficient helper protocol. Requires changes in the helper.
location_rewrite_*New helper hook for rewriting Location headers
auth_param basic blankpasswordNew option to allow the use of blank passwords.
auth_param ntlm max_challenge_reuse / max_challenge_lifetimeNo longer supported
-auth_param ntlm use_ntlm_negotiateNow defaults to "on"
+auth_param ntlm use_ntlm_negotiateDirective no longer supported. Use of NTLM negotiate packet is always on.
auth_param ntlm keep_aliveNew option to fine-tune the use of HTTP keep-alive in combination with NTLM
auth_param negotiateNew Negotiate authentication scheme, the "next generation" scheme in the family of Microsoft authentication.
external_acl_typeMany new format options %SRCPORT, %MYADDR, %MYPORT, %PATH, %USER_CERT, %ACL, %DATA and a few variants. Helper protocol defaults to the simpler "3.0" protocol, and there is support for a highly efficient protocol via the concurrency= option if supported by the helper.
+refresh_patternSeveral new HTTP override/ignore options
read_ahead_gapNew directive to set the response buffer size.
collapsed_forwardingNew directive to enable an alternative optimized forwarding path when there is very many concurrent requests for the same URL.
refresh_stale_hitNew directive similar to collapsed_forwarding and activates an alternative optimized request processing when there is very many concurrent requests for the same recently expired URL.
@@ -109,14 +116,16 @@
acl user_certNew acl class matching the user SSL certificate (https_port)
acl ca_certNew acl class matching the CA of the user SSL certificate (https_port)
acl ext_user / ext_user_regexNew acl matching usernames returned by external acl
+follow_x_forwarded_forNew option to enable parsing of X-Forwarded-For headers allowing access controls to be based on the real client IP even if behind secondary proxies
http_access2New http_access type directive but evaluated after url rewrites
+htcp_access, htcp_clr_accessAccess control on HTCP requests
log_accessNew directive to limit what gets logged.
httpd_suppress_version_stringEnable hiding of the Squid version
+umaskNew directive to specify the minimum umask Squid should run under
error_mapNew directive to allow dynamic rewrites of error pages
viaNew directive to disable the use of the Via directive
wccp2_*WCCP2 protocol support
linux_tproxy, tproxy_portLinux TPROXY support for masquerading outgoing connections as the original client
-umaskNew directive enforcing a minimum umask
diff -ruN squid-2.6.PRE2/bootstrap.sh squid-2.6.RC1/bootstrap.sh
--- squid-2.6.PRE2/bootstrap.sh Fri Jun 2 04:50:02 2006
+++ squid-2.6.RC1/bootstrap.sh Tue Jun 6 12:57:47 2006
@@ -7,9 +7,8 @@
# Autotool versions preferred. To override either edit the script
# to match the versions you want to use, or set the variables on
# the command line like "env acver=.. amver=... ./bootstrap.sh"
-acversions="${acver:-2.59 2.57 2.53 2.52}"
-amversions="${amver:-1.9 1.7 1.6}"
-ltversions="${ltver:-1.5 1.4}"
+acversions="${acver}" # ${acver:-2.59 2.57 2.53 2.52}"
+amversions="${amver}" # ${amver:-1.9 1.8 1.7 1.6}"
SUBDIRS=""
check_version()
@@ -23,6 +22,9 @@
found="NOT_FOUND"
shift
versions="$*"
+ if [ -z "$versions" ]; then
+ found=""
+ fi
for version in $versions; do
for variant in "" "-${version}" "`echo $version | sed -e 's/\.//g'`"; do
if check_version $tool ${tool}${variant} $version; then
@@ -56,14 +58,12 @@
# Adjust paths of required autool packages
amver=`find_version automake ${amversions}`
acver=`find_version autoconf ${acversions}`
-ltver=`find_version libtool ${ltversions}`
# Set environment variable to tell automake which autoconf to use.
AUTOCONF="autoconf${acver}" ; export AUTOCONF
echo "automake : $amver"
echo "autoconfg: $acver"
-echo "libtool : $ltver"
for dir in "" $SUBDIRS; do
if [ -z "$dir" ] || [ -d $dir ]; then
@@ -79,7 +79,6 @@
# Bootstrap the autotool subsystems
bootstrap aclocal$amver
bootstrap autoheader$acver
- bootstrap libtoolize$ltver --force --copy --automake
bootstrap automake$amver --foreign --add-missing --copy -f
bootstrap autoconf$acver --force
fi ); then
diff -ruN squid-2.6.PRE2/cfgaux/ltmain.sh squid-2.6.RC1/cfgaux/ltmain.sh
--- squid-2.6.PRE2/cfgaux/ltmain.sh Tue May 23 15:38:59 2006
+++ squid-2.6.RC1/cfgaux/ltmain.sh Wed Dec 31 17:00:00 1969
@@ -1,6919 +0,0 @@
-# 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
-# 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.22
-TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
-
-# 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
-
-# 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/"
-
-#####################################
-# 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 ()
-{
- # FreeBSD-specific: where we install compilers with non-standard names
- tag_compilers_CC="*cc cc* *gcc gcc*"
- tag_compilers_CXX="*c++ c++* *g++ g++*"
- base_compiler=`set -- "$@"; echo $1`
-
- # If $tagname isn't set, then try to infer if the default "CC" tag applies
- if test -z "$tagname"; then
- for zp in $tag_compilers_CC; do
- case $base_compiler in
- $zp) tagname="CC"; break;;
- esac
- done
- fi
-
- 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
-
- # FreeBSD-specific: try compilers based on inferred tag
- if test -z "$tagname"; then
- eval "tag_compilers=\$tag_compilers_${z}"
- if test -n "$tag_compilers"; then
- for zp in $tag_compilers; do
- case $base_compiler in
- $zp) tagname=$z; break;;
- esac
- done
- if test -n "$tagname"; then
- break
- fi
- fi
- fi
- 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_xdir="$my_gentop/$my_xlib"
-
- $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"
- $echo
- $echo "Copyright (C) 2005 Free Software Foundation, Inc."
- $echo "This is free software; see the source for copying conditions. There is NO"
- $echo "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 ;;
- *.f90) xform=f90 ;;
- *.for) xform=for ;;
- *.java) xform=java ;;
- 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
- else
- if test -z "$pic_flag" && test -n "$link_static_flag"; then
- dlopen_self=$dlopen_self_static
- fi
- prefer_static_libs=built
- fi
- 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)
- compiler_flags="$compiler_flags $arg"
- compile_command="$compile_command $arg"
- finalize_command="$finalize_command $arg"
- deplibs="$deplibs $arg"
- 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
- # -pg pass through profiling flag for GCC
- # @file GCC response files
- -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
- -t[45]*|-txscale*|@*)
-
- # 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*)
- # The PATH hackery in wrapper scripts is required on Windows
- # 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)
- # 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% $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)
- if test "$linkmode,$pass" = "prog,link"; then
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- else
- compiler_flags="$compiler_flags $deplib"
- fi
-
- case $linkmode in
- lib)
- deplibs="$deplib $deplibs"
- test "$pass" = conv && continue
- newdependency_libs="$deplib $newdependency_libs"
- ;;
- 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
- ;;
- *)
- ;;
- esac # linkmode
-
- 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//'`
- for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; 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 -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`
- if test -n "$deplibrary_names" ; then
- for tmp in $deplibrary_names ; do
- depdepl=$tmp
- done
- if test -f "$path/$depdepl" ; then
- depdepl="$path/$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)
- if test -n "$deplibs"; then
- $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
- fi
-
- 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)
- 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 - 1`
- age="$number_minor"
- revision="$number_minor"
- ;;
- 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`
- verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
- ;;
-
- freebsd-aout)
- major=".$current"
- versuffix=".$current.$revision";
- ;;
-
- freebsd-elf)
- major=".$current"
- versuffix=".$current";
- ;;
-
- irix | nonstopux)
- major=`expr $current - $age + 1`
-
- 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
- eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
- 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)
- if test -n "$deplibs"; then
- $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
- fi
-
- 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
- wl=
-
- if test -n "$convenience"; then
- if test -n "$whole_archive_flag_spec"; then
- eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
- 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" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
- else
- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
- fi
- ;;
- * )
- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
- ;;
- esac
- ;;
- *-*-freebsd*)
- # FreeBSD doesn't need this...
- ;;
- *)
- $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" | $Xsed -e "s% @SYMFILE@%%"`
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
- fi
-
- if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
- # Replace the output file specification.
- compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
- 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" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
- 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" | $Xsed -e "$sed_quote_subst"`
- 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'
-
-# 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 \${1+\"\$@\"}\"
- 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" | $Xsed -e "$sed_quote_subst"`
- 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" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
- else
- relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
- 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" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
-
- $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
- $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
- exit $EXIT_FAILURE
- 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
- if test "${save_LC_ALL+set}" = set; then
- LC_ALL="$save_LC_ALL"; export LC_ALL
- fi
- if test "${save_LANG+set}" = set; then
- LANG="$save_LANG"; export LANG
- fi
-
- # 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 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:
diff -ruN squid-2.6.PRE2/configure squid-2.6.RC1/configure
--- squid-2.6.PRE2/configure Tue Jun 6 11:46:18 2006
+++ squid-2.6.RC1/configure Tue Jun 20 15:01:20 2006
@@ -1,7 +1,7 @@
#! /bin/sh
-# From configure.in Revision: 1.362 .
+# From configure.in Revision: 1.377 .
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for Squid Web Proxy 2.6.PRE2.
+# Generated by GNU Autoconf 2.59 for Squid Web Proxy 2.6.RC1.
#
# Report bugs to .
#
@@ -270,8 +270,8 @@
# Identity of this package.
PACKAGE_NAME='Squid Web Proxy'
PACKAGE_TARNAME='squid'
-PACKAGE_VERSION='2.6.PRE2'
-PACKAGE_STRING='Squid Web Proxy 2.6.PRE2'
+PACKAGE_VERSION='2.6.RC1'
+PACKAGE_STRING='Squid Web Proxy 2.6.RC1'
PACKAGE_BUGREPORT='http://www.squid-cache.org/bugs/'
ac_default_prefix=/usr/local/squid
@@ -312,7 +312,7 @@
# 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 datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT 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 PKGCONFIG CGIEXT ENABLE_WIN32SPECIFIC_TRUE ENABLE_WIN32SPECIFIC_FALSE CACHE_HTTP_PORT CACHE_ICP_PORT LIBDLMALLOC LIB_MALLOC STORE_OBJS STORE_LIBS STORE_MODULES STORE_MODULE_SUBDIRS REPL_POLICIES REPL_OBJS REPL_LIBS ENABLE_PINGER_TRUE ENABLE_PINGER_FALSE USE_DELAY_POOLS_TRUE USE_DELAY_POOLS_FALSE USE_SNMP_TRUE USE_SNMP_FALSE SNMPLIB makesnmplib ENABLE_HTCP_TRUE ENABLE_HTCP_FALSE ENABLE_SSL_TRUE ENABLE_SSL_FALSE NEED_OWN_MD5_TRUE NEED_OWN_MD5_FALSE SSLLIB ERR_DEFAULT_LANGUAGE ERR_LANGUAGES MAKE_LEAKFINDER_TRUE MAKE_LEAKFINDER_FALSE USE_DNSSERVER_TRUE USE_DNSSERVER_FALSE OPT_DEFAULT_HOSTS AUTH_MODULES AUTH_OBJS AUTH_LIBS BASIC_AUTH_HELPERS NTLM_AUTH_HELPERS DIGEST_AUTH_HELPERS NEGOTIATE_AUTH_HELPERS EXTERNAL_ACL_HELPERS CPP EGREP LIBSASL ENABLE_UNLINKD_TRUE ENABLE_UNLINKD_FALSE RANLIB ac_ct_RANLIB LN_S SH FALSE TRUE RM MV MKDIR LN PERL AR AR_R ALLOCA CRYPTLIB LIB_EPOLL LIB_LDAP LIB_LBER LIB_DB EPOLL_LIBS USE_POLL_TRUE USE_POLL_FALSE USE_EPOLL_TRUE USE_EPOLL_FALSE USE_SELECT_TRUE USE_SELECT_FALSE NEED_OWN_SNPRINTF_TRUE NEED_OWN_SNPRINTF_FALSE NEED_OWN_STRSEP_TRUE NEED_OWN_STRSEP_FALSE REGEXLIB LIBREGEX LIBOBJS XTRA_OBJS XTRA_LIBS LTLIBOBJS'
+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 datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT 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 PKGCONFIG CGIEXT ENABLE_WIN32SPECIFIC_TRUE ENABLE_WIN32SPECIFIC_FALSE CACHE_HTTP_PORT CACHE_ICP_PORT LIBDLMALLOC LIB_MALLOC STORE_OBJS STORE_LIBS STORE_MODULES NEED_DISKD_TRUE NEED_DISKD_FALSE REPL_POLICIES REPL_OBJS REPL_LIBS ENABLE_PINGER_TRUE ENABLE_PINGER_FALSE USE_DELAY_POOLS_TRUE USE_DELAY_POOLS_FALSE USE_SNMP_TRUE USE_SNMP_FALSE SNMPLIB makesnmplib ENABLE_HTCP_TRUE ENABLE_HTCP_FALSE ENABLE_SSL_TRUE ENABLE_SSL_FALSE NEED_OWN_MD5_TRUE NEED_OWN_MD5_FALSE SSLLIB ERR_DEFAULT_LANGUAGE ERR_LANGUAGES MAKE_LEAKFINDER_TRUE MAKE_LEAKFINDER_FALSE USE_DNSSERVER_TRUE USE_DNSSERVER_FALSE OPT_DEFAULT_HOSTS AUTH_MODULES AUTH_OBJS AUTH_LIBS BASIC_AUTH_HELPERS NTLM_AUTH_HELPERS DIGEST_AUTH_HELPERS NEGOTIATE_AUTH_HELPERS EXTERNAL_ACL_HELPERS CPP EGREP LIBSASL ENABLE_UNLINKD_TRUE ENABLE_UNLINKD_FALSE RANLIB ac_ct_RANLIB LN_S SH FALSE TRUE RM MV MKDIR LN PERL AR AR_R ALLOCA CRYPTLIB LIB_EPOLL LIB_LDAP LIB_LBER LIB_DB EPOLL_LIBS USE_POLL_TRUE USE_POLL_FALSE USE_EPOLL_TRUE USE_EPOLL_FALSE USE_SELECT_TRUE USE_SELECT_FALSE USE_SELECT_WIN32_TRUE USE_SELECT_WIN32_FALSE USE_KQUEUE_TRUE USE_KQUEUE_FALSE NEED_OWN_SNPRINTF_TRUE NEED_OWN_SNPRINTF_FALSE NEED_OWN_STRSEP_TRUE NEED_OWN_STRSEP_FALSE REGEXLIB LIBREGEX LIBOBJS XTRA_OBJS XTRA_LIBS LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
@@ -781,7 +781,7 @@
# 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 Squid Web Proxy 2.6.PRE2 to adapt to many kinds of systems.
+\`configure' configures Squid Web Proxy 2.6.RC1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -847,7 +847,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of Squid Web Proxy 2.6.PRE2:";;
+ short | recursive ) echo "Configuration of Squid Web Proxy 2.6.RC1:";;
esac
cat <<\_ACEOF
@@ -893,7 +893,7 @@
--enable-useragent-log Enable logging of User-Agent header
--enable-referer-log Enable logging of Referer header
--disable-wccp Disable Web Cache Coordination V1 Protocol
- --enable-wccpv2 Enable Web Cache Coordination V2 Protocol
+ --disable-wccpv2 Disable Web Cache Coordination V2 Protocol
--enable-kill-parent-hack
Kill parent on shutdown
--enable-forward-log Enable experimental forward_log directive
@@ -915,6 +915,7 @@
--enable-err-languages=\"lang1 lang2..\"
Select languages to be installed. (All will be
installed by default)
+ --enable-coss-aio-ops Enable COSS I/O with Posix AIO (default is aufs I/O)
--enable-select Enable select() support.
--disable-select Disable select() support.
--enable-poll Enable poll() instead of select(). Normally poll
@@ -927,6 +928,8 @@
epoll() is best where available, but must be
explicitly set at the moment.
--disable-epoll Disable the use of epoll().
+ --enable-kqueue Enable kqueue support.
+ --disable-kqueue Disable kqueue support.
--disable-http-violations
This allows you to remove code which is known to
violate the HTTP protocol specification.
@@ -1157,7 +1160,7 @@
test -n "$ac_init_help" && exit 0
if $ac_init_version; then
cat <<\_ACEOF
-Squid Web Proxy configure 2.6.PRE2
+Squid Web Proxy configure 2.6.RC1
generated by GNU Autoconf 2.59
Copyright (C) 2003 Free Software Foundation, Inc.
@@ -1171,7 +1174,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by Squid Web Proxy $as_me 2.6.PRE2, which was
+It was created by Squid Web Proxy $as_me 2.6.RC1, which was
generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@
@@ -1507,6 +1510,7 @@
+
ac_config_headers="$ac_config_headers include/autoconf.h"
ac_aux_dir=
@@ -1816,7 +1820,7 @@
# Define the identity of the package.
PACKAGE='squid'
- VERSION='2.6.PRE2'
+ VERSION='2.6.RC1'
cat >>confdefs.h <<_ACEOF
@@ -3689,6 +3693,7 @@
fi;
echo "Store modules built: $STORE_MODULES"
+NEED_DISKD=0
STORE_OBJS="fs/lib`echo $STORE_MODULES|sed -e 's% %.a fs/lib%g'`.a"
STORE_LIBS="`echo $STORE_OBJS|sed -e 's%fs/%%g'`"
@@ -3697,7 +3702,7 @@
for fs in $STORE_MODULES none; do
case "$fs" in
diskd)
- STORE_MODULE_SUBDIRS="$STORE_MODULE_SUBDIRS $fs"
+ NEED_DISKD=1
;;
aufs)
if test -z "$with_pthreads"; then
@@ -3716,6 +3721,15 @@
+if test "$NEED_DISKD" = 1; then
+ NEED_DISKD_TRUE=
+ NEED_DISKD_FALSE='#'
+else
+ NEED_DISKD_TRUE='#'
+ NEED_DISKD_FALSE=
+fi
+
+
# Check whether --enable-heap-replacement or --disable-heap-replacement was given.
if test "${enable_heap_replacement+set}" = set; then
enableval="$enable_heap_replacement"
@@ -3872,7 +3886,7 @@
fi
fi;
-if test USE_WCCP = 1; then
+if test $USE_WCCP = 1; then
cat >>confdefs.h <<\_ACEOF
#define USE_WCCP 1
@@ -3880,20 +3894,23 @@
fi
+USE_WCCPv2=1
# Check whether --enable-wccpv2 or --disable-wccpv2 was given.
if test "${enable_wccpv2+set}" = set; then
enableval="$enable_wccpv2"
- if test "$enableval" = "yes" ; then
- echo "Web Cache Coordination V2 Protocol enabled"
+ if test "$enableval" = "no" ; then
+ echo "Web Cache Coordination V2 Protocol disabled"
+ USE_WCCPv2=0
+ fi
+
+fi;
+if test $USE_WCCPv2 = 1; then
cat >>confdefs.h <<\_ACEOF
#define USE_WCCPv2 1
_ACEOF
- fi
-
-fi;
-
+fi
# Check whether --enable-kill-parent-hack or --disable-kill-parent-hack was given.
@@ -4275,6 +4292,26 @@
fi;
+# Check whether --enable-coss-aio-ops or --disable-coss-aio-ops was given.
+if test "${enable_coss_aio_ops+set}" = set; then
+ enableval="$enable_coss_aio_ops"
+
+fi;
+if test "$enable_coss_aio_ops" = "yes"; then
+ echo "Using Posix AIO method for COSS disk I/O"
+
+cat >>confdefs.h <<\_ACEOF
+#define USE_AUFSOPS 0
+_ACEOF
+
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define USE_AUFSOPS 1
+_ACEOF
+
+fi
+
# Check whether --enable-select or --disable-select was given.
if test "${enable_select+set}" = set; then
enableval="$enable_select"
@@ -4329,6 +4366,24 @@
fi;
+# Check whether --enable-kqueue or --disable-kqueue was given.
+if test "${enable_kqueue+set}" = set; then
+ enableval="$enable_kqueue"
+
+ case "$enableval" in
+ yes)
+ echo "Forcing kqueue to be enabled"
+ SELECT_TYPE="kqueue"
+ ac_cv_func_kqueue='yes'
+ ;;
+ no)
+ echo "Forcing kqueue to be disabled"
+ ac_cv_func_kqueue='no'
+ ;;
+ esac
+
+fi;
+
HTTP_VIOLATIONS=1
# Check whether --enable-http-violations or --disable-http-violations was given.
if test "${enable_http_violations+set}" = set; then
@@ -5598,6 +5653,9 @@
#define PRINT_STACK_TRACE 1
_ACEOF
+ if test "$GCC" = "yes"; then
+ LDFLAGS="$CFLAGS -rdynamic"
+ fi
fi
fi;
@@ -7023,6 +7081,8 @@
+
+
for ac_header in sys/types.h \
stddef.h \
limits.h \
@@ -7076,6 +7136,7 @@
sys/msg.h \
sys/prctl.h \
sys/resource.h \
+ sys/poll.h \
sys/select.h \
sys/stat.h \
sys/statvfs.h \
@@ -7085,6 +7146,7 @@
sys/un.h \
sys/vfs.h \
sys/wait.h \
+ sys/event.h \
syslog.h \
time.h \
unistd.h \
@@ -14208,6 +14270,7 @@
+
for ac_func in \
bcopy \
backtrace_symbols_fd \
@@ -14218,6 +14281,7 @@
getpass \
getrusage \
getspnam \
+ kqueue \
lrand48 \
mallinfo \
mallocblksize \
@@ -14542,13 +14606,21 @@
: # Nothing to do
elif test "$ac_cv_func_epoll_ctl" = "yes" ; then
SELECT_TYPE="epoll"
+elif test "$ac_cv_func_kqueue" = "yes" ; then
+ SELECT_TYPE="kqueue"
elif test "$ac_cv_func_poll" = "yes" ; then
-
SELECT_TYPE="poll"
elif test "$ac_cv_func_select" = "yes" ; then
- SELECT_TYPE="select"
+ case "$host_os" in
+ mingw|mingw32)
+ SELECT_TYPE="select_win32"
+ ;;
+ *)
+ SELECT_TYPE="select"
+ ;;
+ esac
else
- echo "Eep! Can't find poll, epoll, or select!"
+ echo "Eep! Can't find poll, epoll, kqueue or select!"
echo "I'll try select and hope for the best."
SELECT_TYPE="select"
fi
@@ -14644,12 +14716,26 @@
_ACEOF
;;
+select_win32)
+
+cat >>confdefs.h <<\_ACEOF
+#define USE_SELECT_WIN32 1
+_ACEOF
+
+ ;;
+kqueue)
+
+cat >>confdefs.h <<\_ACEOF
+#define USE_KQUEUE 1
+_ACEOF
+
+ ;;
*)
- echo "ERROR: Unknown select loop type '$SELECT_TYPE'"
+ echo "ERROR: Unknown IO loop type '$SELECT_TYPE'"
exit 1
esac
-echo "Using ${SELECT_TYPE} for select loop."
+echo "Using ${SELECT_TYPE} for the IO loop."
if test $SELECT_TYPE = poll; then
@@ -14681,6 +14767,26 @@
fi
+
+if test $SELECT_TYPE = select_win32; then
+ USE_SELECT_WIN32_TRUE=
+ USE_SELECT_WIN32_FALSE='#'
+else
+ USE_SELECT_WIN32_TRUE='#'
+ USE_SELECT_WIN32_FALSE=
+fi
+
+
+
+if test $SELECT_TYPE = kqueue; then
+ USE_KQUEUE_TRUE=
+ USE_KQUEUE_FALSE='#'
+else
+ USE_KQUEUE_TRUE='#'
+ USE_KQUEUE_FALSE=
+fi
+
+
echo "$as_me:$LINENO: checking if setresuid is implemented" >&5
echo $ECHO_N "checking if setresuid is implemented... $ECHO_C" >&6
if test "${ac_cv_func_setresuid+set}" = set; then
@@ -16092,7 +16198,7 @@
- ac_config_files="$ac_config_files Makefile lib/Makefile scripts/Makefile scripts/RunCache scripts/RunAccel src/Makefile src/fs/Makefile src/repl/Makefile src/auth/Makefile contrib/Makefile snmplib/Makefile icons/Makefile errors/Makefile doc/Makefile helpers/Makefile helpers/basic_auth/Makefile helpers/basic_auth/LDAP/Makefile helpers/basic_auth/MSNT/Makefile helpers/basic_auth/NCSA/Makefile helpers/basic_auth/PAM/Makefile helpers/basic_auth/SMB/Makefile helpers/basic_auth/YP/Makefile helpers/basic_auth/getpwnam/Makefile helpers/basic_auth/mswin_sspi/Makefile helpers/basic_auth/multi-domain-NTLM/Makefile helpers/basic_auth/SASL/Makefile helpers/digest_auth/Makefile helpers/digest_auth/password/Makefile helpers/digest_auth/ldap/Makefile helpers/ntlm_auth/Makefile helpers/ntlm_auth/fakeauth/Makefile helpers/ntlm_auth/mswin_sspi/Makefile helpers/ntlm_auth/no_check/Makefile helpers/ntlm_auth/SMB/Makefile helpers/ntlm_auth/SMB/smbval/Makefile helpers/negotiate_auth/Makefile helpers/negotiate_auth/mswin_sspi/Makefile helpers/external_acl/Makefile helpers/external_acl/ip_user/Makefile helpers/external_acl/ldap_group/Makefile helpers/external_acl/mswin_lm_group/Makefile helpers/external_acl/session/Makefile helpers/external_acl/unix_group/Makefile helpers/external_acl/wbinfo_group/Makefile tools/Makefile"
+ ac_config_files="$ac_config_files Makefile lib/Makefile scripts/Makefile scripts/RunCache src/Makefile src/fs/Makefile src/repl/Makefile src/auth/Makefile contrib/Makefile snmplib/Makefile icons/Makefile errors/Makefile doc/Makefile helpers/Makefile helpers/basic_auth/Makefile helpers/basic_auth/LDAP/Makefile helpers/basic_auth/MSNT/Makefile helpers/basic_auth/NCSA/Makefile helpers/basic_auth/PAM/Makefile helpers/basic_auth/SMB/Makefile helpers/basic_auth/YP/Makefile helpers/basic_auth/getpwnam/Makefile helpers/basic_auth/mswin_sspi/Makefile helpers/basic_auth/multi-domain-NTLM/Makefile helpers/basic_auth/SASL/Makefile helpers/digest_auth/Makefile helpers/digest_auth/password/Makefile helpers/digest_auth/ldap/Makefile helpers/ntlm_auth/Makefile helpers/ntlm_auth/fakeauth/Makefile helpers/ntlm_auth/mswin_sspi/Makefile helpers/ntlm_auth/no_check/Makefile helpers/ntlm_auth/SMB/Makefile helpers/ntlm_auth/SMB/smbval/Makefile helpers/negotiate_auth/Makefile helpers/negotiate_auth/mswin_sspi/Makefile helpers/external_acl/Makefile helpers/external_acl/ip_user/Makefile helpers/external_acl/ldap_group/Makefile helpers/external_acl/mswin_lm_group/Makefile helpers/external_acl/session/Makefile helpers/external_acl/unix_group/Makefile helpers/external_acl/wbinfo_group/Makefile tools/Makefile"
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
@@ -16219,6 +16325,13 @@
Usually this means the macro was only invoked conditionally." >&2;}
{ (exit 1); exit 1; }; }
fi
+if test -z "${NEED_DISKD_TRUE}" && test -z "${NEED_DISKD_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"NEED_DISKD\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"NEED_DISKD\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
if test -z "${ENABLE_PINGER_TRUE}" && test -z "${ENABLE_PINGER_FALSE}"; then
{ { echo "$as_me:$LINENO: error: conditional \"ENABLE_PINGER\" was never defined.
Usually this means the macro was only invoked conditionally." >&5
@@ -16366,6 +16479,20 @@
Usually this means the macro was only invoked conditionally." >&2;}
{ (exit 1); exit 1; }; }
fi
+if test -z "${USE_SELECT_WIN32_TRUE}" && test -z "${USE_SELECT_WIN32_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"USE_SELECT_WIN32\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"USE_SELECT_WIN32\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${USE_KQUEUE_TRUE}" && test -z "${USE_KQUEUE_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"USE_KQUEUE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"USE_KQUEUE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
if test -z "${NEED_OWN_SNPRINTF_TRUE}" && test -z "${NEED_OWN_SNPRINTF_FALSE}"; then
{ { echo "$as_me:$LINENO: error: conditional \"NEED_OWN_SNPRINTF\" was never defined.
Usually this means the macro was only invoked conditionally." >&5
@@ -16665,7 +16792,7 @@
} >&5
cat >&5 <<_CSEOF
-This file was extended by Squid Web Proxy $as_me 2.6.PRE2, which was
+This file was extended by Squid Web Proxy $as_me 2.6.RC1, which was
generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -16728,7 +16855,7 @@
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-Squid Web Proxy config.status 2.6.PRE2
+Squid Web Proxy config.status 2.6.RC1
configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
@@ -16842,7 +16969,6 @@
"lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
"scripts/Makefile" ) CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;;
"scripts/RunCache" ) CONFIG_FILES="$CONFIG_FILES scripts/RunCache" ;;
- "scripts/RunAccel" ) CONFIG_FILES="$CONFIG_FILES scripts/RunAccel" ;;
"src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
"src/fs/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/fs/Makefile" ;;
"src/repl/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/repl/Makefile" ;;
@@ -17030,7 +17156,8 @@
s,@STORE_OBJS@,$STORE_OBJS,;t t
s,@STORE_LIBS@,$STORE_LIBS,;t t
s,@STORE_MODULES@,$STORE_MODULES,;t t
-s,@STORE_MODULE_SUBDIRS@,$STORE_MODULE_SUBDIRS,;t t
+s,@NEED_DISKD_TRUE@,$NEED_DISKD_TRUE,;t t
+s,@NEED_DISKD_FALSE@,$NEED_DISKD_FALSE,;t t
s,@REPL_POLICIES@,$REPL_POLICIES,;t t
s,@REPL_OBJS@,$REPL_OBJS,;t t
s,@REPL_LIBS@,$REPL_LIBS,;t t
@@ -17095,6 +17222,10 @@
s,@USE_EPOLL_FALSE@,$USE_EPOLL_FALSE,;t t
s,@USE_SELECT_TRUE@,$USE_SELECT_TRUE,;t t
s,@USE_SELECT_FALSE@,$USE_SELECT_FALSE,;t t
+s,@USE_SELECT_WIN32_TRUE@,$USE_SELECT_WIN32_TRUE,;t t
+s,@USE_SELECT_WIN32_FALSE@,$USE_SELECT_WIN32_FALSE,;t t
+s,@USE_KQUEUE_TRUE@,$USE_KQUEUE_TRUE,;t t
+s,@USE_KQUEUE_FALSE@,$USE_KQUEUE_FALSE,;t t
s,@NEED_OWN_SNPRINTF_TRUE@,$NEED_OWN_SNPRINTF_TRUE,;t t
s,@NEED_OWN_SNPRINTF_FALSE@,$NEED_OWN_SNPRINTF_FALSE,;t t
s,@NEED_OWN_STRSEP_TRUE@,$NEED_OWN_STRSEP_TRUE,;t t
diff -ruN squid-2.6.PRE2/configure.in squid-2.6.RC1/configure.in
--- squid-2.6.PRE2/configure.in Tue Jun 6 11:46:18 2006
+++ squid-2.6.RC1/configure.in Tue Jun 20 15:01:20 2006
@@ -1,17 +1,16 @@
dnl
dnl Configuration input file for Squid
dnl
-dnl Duane Wessels, wessels@nlanr.net, February 1996 (autoconf v2.9)
+dnl $Id: configure.in,v 1.377 2006/06/20 20:51:21 hno Exp $
dnl
-dnl $Id: configure.in,v 1.362 2006/06/06 08:20:55 hno Exp $
dnl
dnl
-dnl
-AC_INIT(Squid Web Proxy, 2.6.PRE2, http://www.squid-cache.org/bugs/, squid)
+AC_INIT(Squid Web Proxy, 2.6.RC1, http://www.squid-cache.org/bugs/, squid)
+AC_PREREQ(2.52)
AM_CONFIG_HEADER(include/autoconf.h)
AC_CONFIG_AUX_DIR(cfgaux)
AM_INIT_AUTOMAKE
-AC_REVISION($Revision: 1.362 $)dnl
+AC_REVISION($Revision: 1.377 $)dnl
AC_PREFIX_DEFAULT(/usr/local/squid)
AM_MAINTAINER_MODE
@@ -394,17 +393,17 @@
fi
])
echo "Store modules built: $STORE_MODULES"
+NEED_DISKD=0
STORE_OBJS="fs/lib`echo $STORE_MODULES|sed -e 's% %.a fs/lib%g'`.a"
AC_SUBST(STORE_OBJS)
STORE_LIBS="`echo $STORE_OBJS|sed -e 's%fs/%%g'`"
AC_SUBST(STORE_LIBS)
-dnl remove all but diskd - its the only module that needs to recurse
-dnl into the sub directory
+dnl some store implementations need additional stuff built like diskd_daemon
STORE_MODULE_SUBDIRS=
for fs in $STORE_MODULES none; do
case "$fs" in
diskd)
- STORE_MODULE_SUBDIRS="$STORE_MODULE_SUBDIRS $fs"
+ NEED_DISKD=1
;;
aufs)
if test -z "$with_pthreads"; then
@@ -421,7 +420,7 @@
esac
done
AC_SUBST(STORE_MODULES)
-AC_SUBST(STORE_MODULE_SUBDIRS)
+AM_CONDITIONAL([NEED_DISKD], [test "$NEED_DISKD" = 1])
dnl --enable-heap-replacement compatibility option
AC_ARG_ENABLE(heap-replacement,
@@ -538,18 +537,21 @@
USE_WCCP=0
fi
])
-if test USE_WCCP = 1; then
+if test $USE_WCCP = 1; then
AC_DEFINE(USE_WCCP, 1, [Define to enable WCCP])
fi
+USE_WCCPv2=1
AC_ARG_ENABLE(wccpv2,
-[ --enable-wccpv2 Enable Web Cache Coordination V2 Protocol],
-[ if test "$enableval" = "yes" ; then
- echo "Web Cache Coordination V2 Protocol enabled"
- AC_DEFINE(USE_WCCPv2, 1, [Define to enable WCCP V2])
+[ --disable-wccpv2 Disable Web Cache Coordination V2 Protocol],
+[ if test "$enableval" = "no" ; then
+ echo "Web Cache Coordination V2 Protocol disabled"
+ USE_WCCPv2=0
fi
])
-
+if test $USE_WCCPv2 = 1; then
+ AC_DEFINE(USE_WCCPv2, 1, [Define to enable WCCP V2])
+fi
AC_ARG_ENABLE(kill-parent-hack,
@@ -790,6 +792,18 @@
fi
])
+dnl COSS I/O method
+AC_ARG_ENABLE(coss-aio-ops,
+[ --enable-coss-aio-ops Enable COSS I/O with Posix AIO (default is aufs I/O) ])
+if test "$enable_coss_aio_ops" = "yes"; then
+ echo "Using Posix AIO method for COSS disk I/O"
+ AC_DEFINE(USE_AUFSOPS, 0, [ Define this if you would like to use the aufs I/O method for
+ disk I/O instead of the POSIX AIO method.])
+else
+ AC_DEFINE(USE_AUFSOPS, 1, [ Define this if you would like to use the aufs I/O method for
+ disk I/O instead of the POSIX AIO method.])
+fi
+
dnl Enable select()
AC_ARG_ENABLE(select,
[ --enable-select Enable select() support.
@@ -851,6 +865,25 @@
esac
])
+dnl Enable kqueue
+AC_ARG_ENABLE(kqueue,
+[ --enable-kqueue Enable kqueue support.
+ --disable-kqueue Disable kqueue support. ],
+
+[
+ case "$enableval" in
+ yes)
+ echo "Forcing kqueue to be enabled"
+ SELECT_TYPE="kqueue"
+ ac_cv_func_kqueue='yes'
+ ;;
+ no)
+ echo "Forcing kqueue to be disabled"
+ ac_cv_func_kqueue='no'
+ ;;
+ esac
+])
+
dnl Disable HTTP violations
HTTP_VIOLATIONS=1
AC_ARG_ENABLE(http-violations,
@@ -1421,6 +1454,9 @@
[ if test "$enableval" = "yes" ; then
echo "Enabling automatic stack backtraces on fatal errors"
AC_DEFINE(PRINT_STACK_TRACE, 1, [Print stacktraces on fatal errors])
+ if test "$GCC" = "yes"; then
+ LDFLAGS="$CFLAGS -rdynamic"
+ fi
fi
])
@@ -1567,6 +1603,7 @@
sys/msg.h \
sys/prctl.h \
sys/resource.h \
+ sys/poll.h \
sys/select.h \
sys/stat.h \
sys/statvfs.h \
@@ -1576,6 +1613,7 @@
sys/un.h \
sys/vfs.h \
sys/wait.h \
+ sys/event.h \
syslog.h \
time.h \
unistd.h \
@@ -2190,6 +2228,7 @@
getpass \
getrusage \
getspnam \
+ kqueue \
lrand48 \
mallinfo \
mallocblksize \
@@ -2275,13 +2314,21 @@
: # Nothing to do
elif test "$ac_cv_func_epoll_ctl" = "yes" ; then
SELECT_TYPE="epoll"
+elif test "$ac_cv_func_kqueue" = "yes" ; then
+ SELECT_TYPE="kqueue"
elif test "$ac_cv_func_poll" = "yes" ; then
-
SELECT_TYPE="poll"
elif test "$ac_cv_func_select" = "yes" ; then
- SELECT_TYPE="select"
+ case "$host_os" in
+ mingw|mingw32)
+ SELECT_TYPE="select_win32"
+ ;;
+ *)
+ SELECT_TYPE="select"
+ ;;
+ esac
else
- echo "Eep! Can't find poll, epoll, or select!"
+ echo "Eep! Can't find poll, epoll, kqueue or select!"
echo "I'll try select and hope for the best."
SELECT_TYPE="select"
fi
@@ -2298,15 +2345,23 @@
select)
AC_DEFINE(USE_SELECT,1,[Use select() for the IO loop])
;;
+select_win32)
+ AC_DEFINE(USE_SELECT_WIN32,1,[Use Winsock select() for the IO loop])
+ ;;
+kqueue)
+ AC_DEFINE(USE_KQUEUE,1,[Use kqueue() for the IO loop])
+ ;;
*)
- echo "ERROR: Unknown select loop type '$SELECT_TYPE'"
+ echo "ERROR: Unknown IO loop type '$SELECT_TYPE'"
exit 1
esac
-echo "Using ${SELECT_TYPE} for select loop."
+echo "Using ${SELECT_TYPE} for the IO loop."
AM_CONDITIONAL([USE_POLL], [test $SELECT_TYPE = poll])
AM_CONDITIONAL([USE_EPOLL], [test $SELECT_TYPE = epoll])
AM_CONDITIONAL([USE_SELECT], [test $SELECT_TYPE = select])
+AM_CONDITIONAL([USE_SELECT_WIN32], [test $SELECT_TYPE = select_win32])
+AM_CONDITIONAL([USE_KQUEUE], [test $SELECT_TYPE = kqueue])
dnl Yay! Another Linux brokenness. Its not good enough
dnl to know that setresuid() exists, because RedHat 5.0 declares
@@ -2941,19 +2996,11 @@
dnl done
-dnl src/fs/aufs/Makefile \
-dnl src/fs/coss/Makefile \
-dnl src/fs/diskd/Makefile \
-dnl src/fs/null/Makefile \
-dnl src/fs/ufs/Makefile \
-dnl src/repl/heap/Makefile \
-dnl src/repl/lru/Makefile \
AC_OUTPUT([\
Makefile \
lib/Makefile \
scripts/Makefile \
scripts/RunCache \
- scripts/RunAccel \
src/Makefile \
src/fs/Makefile \
src/repl/Makefile \
diff -ruN squid-2.6.PRE2/contrib/Makefile.in squid-2.6.RC1/contrib/Makefile.in
--- squid-2.6.PRE2/contrib/Makefile.in Thu May 25 06:42:03 2006
+++ squid-2.6.RC1/contrib/Makefile.in Mon Jun 12 00:09:42 2006
@@ -127,6 +127,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -159,7 +161,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -169,10 +170,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/doc/Makefile.in squid-2.6.RC1/doc/Makefile.in
--- squid-2.6.PRE2/doc/Makefile.in Tue May 30 17:52:10 2006
+++ squid-2.6.RC1/doc/Makefile.in Mon Jun 12 00:09:42 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.23 2006/05/30 23:52:10 hno Exp $
+# $Id: Makefile.in,v 1.26 2006/06/12 06:09:42 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -134,6 +134,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -166,7 +168,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -176,10 +177,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/errors/Makefile.in squid-2.6.RC1/errors/Makefile.in
--- squid-2.6.PRE2/errors/Makefile.in Thu May 25 06:42:03 2006
+++ squid-2.6.RC1/errors/Makefile.in Mon Jun 12 00:09:43 2006
@@ -15,7 +15,7 @@
@SET_MAKE@
#
-# $Id: Makefile.in,v 1.39 2006/05/25 12:42:03 hno Exp $
+# $Id: Makefile.in,v 1.42 2006/06/12 06:09:43 hno Exp $
#
srcdir = @srcdir@
top_srcdir = @top_srcdir@
@@ -126,6 +126,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -158,7 +160,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -168,10 +169,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/Makefile.in squid-2.6.RC1/helpers/Makefile.in
--- squid-2.6.PRE2/helpers/Makefile.in Thu May 25 06:42:05 2006
+++ squid-2.6.RC1/helpers/Makefile.in Mon Jun 12 00:09:43 2006
@@ -131,6 +131,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -163,7 +165,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -173,10 +174,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/basic_auth/LDAP/Makefile.in squid-2.6.RC1/helpers/basic_auth/LDAP/Makefile.in
--- squid-2.6.PRE2/helpers/basic_auth/LDAP/Makefile.in Thu May 25 06:42:06 2006
+++ squid-2.6.RC1/helpers/basic_auth/LDAP/Makefile.in Mon Jun 12 00:09:44 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid LDAP authentication helper
#
-# $Id: Makefile.in,v 1.31 2006/05/25 12:42:06 hno Exp $
+# $Id: Makefile.in,v 1.34 2006/06/12 06:09:44 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -153,6 +153,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -185,7 +187,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -195,10 +196,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/basic_auth/MSNT/Makefile.in squid-2.6.RC1/helpers/basic_auth/MSNT/Makefile.in
--- squid-2.6.PRE2/helpers/basic_auth/MSNT/Makefile.in Thu May 25 06:42:07 2006
+++ squid-2.6.RC1/helpers/basic_auth/MSNT/Makefile.in Mon Jun 12 00:09:45 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.34 2006/05/25 12:42:07 hno Exp $
+# $Id: Makefile.in,v 1.37 2006/06/12 06:09:45 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -162,6 +162,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -194,7 +196,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -204,10 +205,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/basic_auth/Makefile.in squid-2.6.RC1/helpers/basic_auth/Makefile.in
--- squid-2.6.PRE2/helpers/basic_auth/Makefile.in Sat May 27 02:59:42 2006
+++ squid-2.6.RC1/helpers/basic_auth/Makefile.in Mon Jun 12 00:09:43 2006
@@ -16,7 +16,7 @@
# Makefile for storage modules in the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.30 2006/05/27 08:59:42 serassio Exp $
+# $Id: Makefile.in,v 1.33 2006/06/12 06:09:43 hno Exp $
#
srcdir = @srcdir@
top_srcdir = @top_srcdir@
@@ -135,6 +135,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -167,7 +169,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -177,10 +178,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/basic_auth/NCSA/Makefile.am squid-2.6.RC1/helpers/basic_auth/NCSA/Makefile.am
--- squid-2.6.PRE2/helpers/basic_auth/NCSA/Makefile.am Tue May 17 10:56:23 2005
+++ squid-2.6.RC1/helpers/basic_auth/NCSA/Makefile.am Thu Jun 15 13:30:37 2006
@@ -1,12 +1,12 @@
#
# Makefile for the Squid Object Cache server
#
-# $Id: Makefile.am,v 1.3 2005/05/17 16:56:23 hno Exp $
+# $Id: Makefile.am,v 1.4 2006/06/15 19:30:37 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
libexec_PROGRAMS = ncsa_auth
-ncsa_auth_SOURCES = ncsa_auth.c
-LDADD = -L$(top_builddir)/lib -lmiscutil $(CRYPTLIB) $(XTRA_LIBS)
+ncsa_auth_SOURCES = ncsa_auth.c crypt_md5.c crypt_md5.h
+LDADD = -L$(top_builddir)/lib -lmiscutil $(CRYPTLIB) $(XTRA_LIBS) $(SSLLIB)
INCLUDES = -I$(top_srcdir)/include
diff -ruN squid-2.6.PRE2/helpers/basic_auth/NCSA/Makefile.in squid-2.6.RC1/helpers/basic_auth/NCSA/Makefile.in
--- squid-2.6.PRE2/helpers/basic_auth/NCSA/Makefile.in Thu May 25 06:42:07 2006
+++ squid-2.6.RC1/helpers/basic_auth/NCSA/Makefile.in Thu Jun 15 18:12:33 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.29 2006/05/25 12:42:07 hno Exp $
+# $Id: Makefile.in,v 1.33 2006/06/16 00:12:33 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -58,11 +58,12 @@
am__installdirs = "$(DESTDIR)$(libexecdir)"
libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
PROGRAMS = $(libexec_PROGRAMS)
-am_ncsa_auth_OBJECTS = ncsa_auth.$(OBJEXT)
+am_ncsa_auth_OBJECTS = ncsa_auth.$(OBJEXT) crypt_md5.$(OBJEXT)
ncsa_auth_OBJECTS = $(am_ncsa_auth_OBJECTS)
ncsa_auth_LDADD = $(LDADD)
am__DEPENDENCIES_1 =
-ncsa_auth_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+ncsa_auth_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include
depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp
am__depfiles_maybe = depfiles
@@ -149,6 +150,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -181,7 +184,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -191,10 +193,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
@@ -239,8 +245,8 @@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
-ncsa_auth_SOURCES = ncsa_auth.c
-LDADD = -L$(top_builddir)/lib -lmiscutil $(CRYPTLIB) $(XTRA_LIBS)
+ncsa_auth_SOURCES = ncsa_auth.c crypt_md5.c crypt_md5.h
+LDADD = -L$(top_builddir)/lib -lmiscutil $(CRYPTLIB) $(XTRA_LIBS) $(SSLLIB)
INCLUDES = -I$(top_srcdir)/include
all: all-am
@@ -308,6 +314,7 @@
distclean-compile:
-rm -f *.tab.c
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crypt_md5.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ncsa_auth.Po@am__quote@
.c.o:
diff -ruN squid-2.6.PRE2/helpers/basic_auth/NCSA/crypt_md5.c squid-2.6.RC1/helpers/basic_auth/NCSA/crypt_md5.c
--- squid-2.6.PRE2/helpers/basic_auth/NCSA/crypt_md5.c Wed Dec 31 17:00:00 1969
+++ squid-2.6.RC1/helpers/basic_auth/NCSA/crypt_md5.c Thu Jun 15 13:30:37 2006
@@ -0,0 +1,168 @@
+/*
+ * Shamelessly stolen from linux-pam, and adopted to work with
+ * OpenSSL md5 implementation and any magic string
+ *
+ * Origin2: md5_crypt.c,v 1.1.1.1 2000/01/03 17:34:46 gafton Exp
+ *
+ * ----------------------------------------------------------------------------
+ * "THE BEER-WARE LICENSE" (Revision 42):
+ * wrote this file. As long as you retain this notice you
+ * can do whatever you want with this stuff. If we meet some day, and you think
+ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+ * ----------------------------------------------------------------------------
+ *
+ * Origin: Id: crypt.c,v 1.3 1995/05/30 05:42:22 rgrimes Exp
+ *
+ */
+
+#include
+#include "config.h"
+#include "md5.h"
+
+#include "crypt_md5.h"
+
+static unsigned char itoa64[] = /* 0 ... 63 => ascii - 64 */
+ "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+
+static void md5to64(char *s, unsigned long v, int n)
+{
+ while (--n >= 0) {
+ *s++ = itoa64[v & 0x3f];
+ v >>= 6;
+ }
+}
+
+/*
+ * MD5 hash a password
+ *
+ * Use MD5 for what it is best at...
+ *
+ * If salt begins with $ then it is assumed to be on the form
+ * $magic$salt$...
+ * If not the normal UNIX magic $1$ is used.
+ */
+
+char *crypt_md5(const char *pw, const char *salt)
+{
+ const char *magic = "$1$";
+ int magiclen = 3;
+ static char passwd[120], *p;
+ static const char *sp, *ep;
+ unsigned char final[16];
+ int sl, pl, i, j;
+ MD5_CTX ctx, ctx1;
+ unsigned long l;
+
+ if (*salt == '$') {
+ magic = salt++;
+ while(*salt && *salt != '$')
+ salt++;
+ if (*salt == '$') {
+ salt++;
+ magiclen = salt - magic;
+ } else {
+ salt = magic;
+ magic = "$1$";
+ }
+ }
+
+ /* Refine the Salt first */
+ sp = salt;
+
+ /* It stops at the first '$', max 8 chars */
+ for (ep = sp; *ep && *ep != '$' && ep < (sp + 8); ep++)
+ continue;
+
+ /* get the length of the true salt */
+ sl = ep - sp;
+
+ MD5Init(&ctx);
+
+ /* The password first, since that is what is most unknown */
+ MD5Update(&ctx, (unsigned const char *) pw, strlen(pw));
+
+ /* Then our magic string */
+ MD5Update(&ctx, (unsigned const char *) magic, magiclen);
+
+ /* Then the raw salt */
+ MD5Update(&ctx, (unsigned const char *) sp, sl);
+
+ /* Then just as many characters of the MD5(pw,salt,pw) */
+ MD5Init(&ctx1);
+ MD5Update(&ctx1, (unsigned const char *) pw, strlen(pw));
+ MD5Update(&ctx1, (unsigned const char *) sp, sl);
+ MD5Update(&ctx1, (unsigned const char *) pw, strlen(pw));
+ MD5Final(final, &ctx1);
+ for (pl = strlen(pw); pl > 0; pl -= 16)
+ MD5Update(&ctx, (unsigned const char *) final, pl > 16 ? 16 : pl);
+
+ /* Don't leave anything around in vm they could use. */
+ memset(final, 0, sizeof final);
+
+ /* Then something really weird... */
+ for (j = 0, i = strlen(pw); i; i >>= 1)
+ if (i & 1)
+ MD5Update(&ctx, (unsigned const char *) final + j, 1);
+ else
+ MD5Update(&ctx, (unsigned const char *) pw + j, 1);
+
+ /* Now make the output string */
+ memset(passwd, 0, sizeof(passwd));
+ strncat(passwd, magic, magiclen);
+ strncat(passwd, sp, sl);
+ strcat(passwd, "$");
+
+ MD5Final(final, &ctx);
+
+ /*
+ * and now, just to make sure things don't run too fast
+ * On a 60 Mhz Pentium this takes 34 msec, so you would
+ * need 30 seconds to build a 1000 entry dictionary...
+ */
+ for (i = 0; i < 1000; i++) {
+ MD5Init(&ctx1);
+ if (i & 1)
+ MD5Update(&ctx1, (unsigned const char *) pw, strlen(pw));
+ else
+ MD5Update(&ctx1, (unsigned const char *) final, 16);
+
+ if (i % 3)
+ MD5Update(&ctx1, (unsigned const char *) sp, sl);
+
+ if (i % 7)
+ MD5Update(&ctx1, (unsigned const char *) pw, strlen(pw));
+
+ if (i & 1)
+ MD5Update(&ctx1, (unsigned const char *) final, 16);
+ else
+ MD5Update(&ctx1, (unsigned const char *) pw, strlen(pw));
+ MD5Final(final, &ctx1);
+ }
+
+ p = passwd + strlen(passwd);
+
+ l = (final[0] << 16) | (final[6] << 8) | final[12];
+ md5to64(p, l, 4);
+ p += 4;
+ l = (final[1] << 16) | (final[7] << 8) | final[13];
+ md5to64(p, l, 4);
+ p += 4;
+ l = (final[2] << 16) | (final[8] << 8) | final[14];
+ md5to64(p, l, 4);
+ p += 4;
+ l = (final[3] << 16) | (final[9] << 8) | final[15];
+ md5to64(p, l, 4);
+ p += 4;
+ l = (final[4] << 16) | (final[10] << 8) | final[5];
+ md5to64(p, l, 4);
+ p += 4;
+ l = final[11];
+ md5to64(p, l, 2);
+ p += 2;
+ *p = '\0';
+
+ /* Don't leave anything around in vm they could use. */
+ memset(final, 0, sizeof final);
+
+ return passwd;
+}
diff -ruN squid-2.6.PRE2/helpers/basic_auth/NCSA/crypt_md5.h squid-2.6.RC1/helpers/basic_auth/NCSA/crypt_md5.h
--- squid-2.6.PRE2/helpers/basic_auth/NCSA/crypt_md5.h Wed Dec 31 17:00:00 1969
+++ squid-2.6.RC1/helpers/basic_auth/NCSA/crypt_md5.h Thu Jun 15 13:30:37 2006
@@ -0,0 +1,15 @@
+/*
+ * Creates a MD5 based hash of a password
+ *
+ * To validate a entered password, use the previously calculated
+ * password hash as salt, and then compare the result. If identical
+ * then the password matches.
+ *
+ * While encoding a password the salt should be 8 randomly selected
+ * characters from the base64 alphabet, for example generated as follows:
+ * char salt[9];
+ * to64(salt, rand(), 4);
+ * to64(salt+4, rand(), 4);
+ * salt[0] = '\0';
+ */
+char *crypt_md5(const char *pw, const char *salt);
diff -ruN squid-2.6.PRE2/helpers/basic_auth/NCSA/ncsa_auth.c squid-2.6.RC1/helpers/basic_auth/NCSA/ncsa_auth.c
--- squid-2.6.PRE2/helpers/basic_auth/NCSA/ncsa_auth.c Sun May 21 18:37:23 2006
+++ squid-2.6.RC1/helpers/basic_auth/NCSA/ncsa_auth.c Thu Jun 15 13:30:37 2006
@@ -42,6 +42,7 @@
#include "util.h"
#include "hash.h"
+#include "crypt_md5.h"
static hash_table *hash = NULL;
static HASHFREE my_free;
@@ -126,22 +127,25 @@
change_time = sb.st_mtime;
}
}
- user = buf;
- passwd = strchr(buf, ' ');
- if (!passwd) {
+ if ((user = strtok(buf, " ")) == NULL) {
+ printf("ERR\n");
+ continue;
+ }
+ if ((passwd = strtok(NULL, "")) == NULL) {
printf("ERR\n");
continue;
}
- *passwd++ = '\0';
rfc1738_unescape(user);
rfc1738_unescape(passwd);
- u = hash_lookup(hash, user);
+ u = (user_data *)hash_lookup(hash, user);
if (u == NULL) {
printf("ERR No such user\n");
- } else if (strcmp(u->passwd, (char *) crypt(passwd, u->passwd))) {
- printf("ERR Wrong password\n");
- } else {
+ } else if (strcmp(u->passwd, (char *) crypt(passwd, u->passwd)) == 0) {
+ printf("OK\n");
+ } else if (strcmp(u->passwd, (char *) crypt_md5(passwd, u->passwd)) == 0) {
printf("OK\n");
+ } else {
+ printf("ERR Wrong password\n");
}
}
exit(0);
diff -ruN squid-2.6.PRE2/helpers/basic_auth/PAM/Makefile.in squid-2.6.RC1/helpers/basic_auth/PAM/Makefile.in
--- squid-2.6.PRE2/helpers/basic_auth/PAM/Makefile.in Thu May 25 06:42:07 2006
+++ squid-2.6.RC1/helpers/basic_auth/PAM/Makefile.in Mon Jun 12 00:09:47 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid PAM authentication helper
#
-# $Id: Makefile.in,v 1.30 2006/05/25 12:42:07 hno Exp $
+# $Id: Makefile.in,v 1.33 2006/06/12 06:09:47 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -152,6 +152,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -184,7 +186,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -194,10 +195,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/basic_auth/SASL/Makefile.in squid-2.6.RC1/helpers/basic_auth/SASL/Makefile.in
--- squid-2.6.PRE2/helpers/basic_auth/SASL/Makefile.in Thu May 25 06:42:07 2006
+++ squid-2.6.RC1/helpers/basic_auth/SASL/Makefile.in Mon Jun 12 00:09:48 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid SASL authentication helper
#
-# $Id: Makefile.in,v 1.27 2006/05/25 12:42:07 hno Exp $
+# $Id: Makefile.in,v 1.30 2006/06/12 06:09:48 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -149,6 +149,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -181,7 +183,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -191,10 +192,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/basic_auth/SMB/Makefile.in squid-2.6.RC1/helpers/basic_auth/SMB/Makefile.in
--- squid-2.6.PRE2/helpers/basic_auth/SMB/Makefile.in Thu May 25 06:42:07 2006
+++ squid-2.6.RC1/helpers/basic_auth/SMB/Makefile.in Mon Jun 12 00:09:48 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.30 2006/05/25 12:42:07 hno Exp $
+# $Id: Makefile.in,v 1.33 2006/06/12 06:09:48 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -158,6 +158,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -190,7 +192,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -200,10 +201,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/basic_auth/YP/Makefile.in squid-2.6.RC1/helpers/basic_auth/YP/Makefile.in
--- squid-2.6.PRE2/helpers/basic_auth/YP/Makefile.in Thu May 25 06:42:07 2006
+++ squid-2.6.RC1/helpers/basic_auth/YP/Makefile.in Mon Jun 12 00:09:50 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.31 2006/05/25 12:42:07 hno Exp $
+# $Id: Makefile.in,v 1.34 2006/06/12 06:09:50 hno Exp $
#
#
@@ -148,6 +148,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -180,7 +182,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -190,10 +191,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/basic_auth/getpwnam/Makefile.in squid-2.6.RC1/helpers/basic_auth/getpwnam/Makefile.in
--- squid-2.6.PRE2/helpers/basic_auth/getpwnam/Makefile.in Thu May 25 06:42:07 2006
+++ squid-2.6.RC1/helpers/basic_auth/getpwnam/Makefile.in Mon Jun 12 00:09:51 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.29 2006/05/25 12:42:07 hno Exp $
+# $Id: Makefile.in,v 1.32 2006/06/12 06:09:51 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -150,6 +150,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -182,7 +184,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -192,10 +193,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/basic_auth/mswin_sspi/Makefile.in squid-2.6.RC1/helpers/basic_auth/mswin_sspi/Makefile.in
--- squid-2.6.PRE2/helpers/basic_auth/mswin_sspi/Makefile.in Sat May 27 03:21:38 2006
+++ squid-2.6.RC1/helpers/basic_auth/mswin_sspi/Makefile.in Mon Jun 12 00:09:53 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.3 2006/05/27 09:21:38 serassio Exp $
+# $Id: Makefile.in,v 1.6 2006/06/12 06:09:53 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -149,6 +149,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -181,7 +183,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -191,10 +192,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/basic_auth/multi-domain-NTLM/Makefile.in squid-2.6.RC1/helpers/basic_auth/multi-domain-NTLM/Makefile.in
--- squid-2.6.PRE2/helpers/basic_auth/multi-domain-NTLM/Makefile.in Thu May 25 06:42:07 2006
+++ squid-2.6.RC1/helpers/basic_auth/multi-domain-NTLM/Makefile.in Mon Jun 12 00:09:53 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.27 2006/05/25 12:42:07 hno Exp $
+# $Id: Makefile.in,v 1.30 2006/06/12 06:09:53 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -134,6 +134,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -166,7 +168,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -176,10 +177,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/digest_auth/Makefile.in squid-2.6.RC1/helpers/digest_auth/Makefile.in
--- squid-2.6.PRE2/helpers/digest_auth/Makefile.in Thu May 25 06:42:07 2006
+++ squid-2.6.RC1/helpers/digest_auth/Makefile.in Mon Jun 12 00:09:53 2006
@@ -16,7 +16,7 @@
# Makefile for digest auth helpers in the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.27 2006/05/25 12:42:07 hno Exp $
+# $Id: Makefile.in,v 1.30 2006/06/12 06:09:53 hno Exp $
#
srcdir = @srcdir@
top_srcdir = @top_srcdir@
@@ -135,6 +135,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -167,7 +169,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -177,10 +178,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/digest_auth/ldap/Makefile.in squid-2.6.RC1/helpers/digest_auth/ldap/Makefile.in
--- squid-2.6.PRE2/helpers/digest_auth/ldap/Makefile.in Thu May 25 06:42:08 2006
+++ squid-2.6.RC1/helpers/digest_auth/ldap/Makefile.in Mon Jun 12 00:09:53 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.8 2006/05/25 12:42:08 hno Exp $
+# $Id: Makefile.in,v 1.11 2006/06/12 06:09:53 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -152,6 +152,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -184,7 +186,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -194,10 +195,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/digest_auth/password/Makefile.in squid-2.6.RC1/helpers/digest_auth/password/Makefile.in
--- squid-2.6.PRE2/helpers/digest_auth/password/Makefile.in Thu May 25 06:42:09 2006
+++ squid-2.6.RC1/helpers/digest_auth/password/Makefile.in Mon Jun 12 00:09:55 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.29 2006/05/25 12:42:09 hno Exp $
+# $Id: Makefile.in,v 1.32 2006/06/12 06:09:55 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -151,6 +151,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -183,7 +185,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -193,10 +194,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/external_acl/Makefile.in squid-2.6.RC1/helpers/external_acl/Makefile.in
--- squid-2.6.PRE2/helpers/external_acl/Makefile.in Sat May 27 02:59:45 2006
+++ squid-2.6.RC1/helpers/external_acl/Makefile.in Mon Jun 12 00:09:55 2006
@@ -16,7 +16,7 @@
# Makefile for storage modules in the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.17 2006/05/27 08:59:45 serassio Exp $
+# $Id: Makefile.in,v 1.20 2006/06/12 06:09:55 hno Exp $
#
srcdir = @srcdir@
top_srcdir = @top_srcdir@
@@ -135,6 +135,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -167,7 +169,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -177,10 +178,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/external_acl/ip_user/Makefile.in squid-2.6.RC1/helpers/external_acl/ip_user/Makefile.in
--- squid-2.6.PRE2/helpers/external_acl/ip_user/Makefile.in Thu May 25 06:42:10 2006
+++ squid-2.6.RC1/helpers/external_acl/ip_user/Makefile.in Mon Jun 12 00:09:55 2006
@@ -17,7 +17,7 @@
#
# Makefile for the ip_user external_acl helper by Rodrigo Campos
#
-# $Id: Makefile.in,v 1.16 2006/05/25 12:42:10 hno Exp $
+# $Id: Makefile.in,v 1.19 2006/06/12 06:09:55 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -149,6 +149,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -181,7 +183,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -191,10 +192,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/external_acl/ldap_group/Makefile.in squid-2.6.RC1/helpers/external_acl/ldap_group/Makefile.in
--- squid-2.6.PRE2/helpers/external_acl/ldap_group/Makefile.in Thu May 25 06:42:12 2006
+++ squid-2.6.RC1/helpers/external_acl/ldap_group/Makefile.in Mon Jun 12 00:09:59 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid LDAP authentication helper
#
-# $Id: Makefile.in,v 1.17 2006/05/25 12:42:12 hno Exp $
+# $Id: Makefile.in,v 1.20 2006/06/12 06:09:59 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -154,6 +154,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -186,7 +188,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -196,10 +197,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/external_acl/mswin_lm_group/Makefile.in squid-2.6.RC1/helpers/external_acl/mswin_lm_group/Makefile.in
--- squid-2.6.PRE2/helpers/external_acl/mswin_lm_group/Makefile.in Sat May 27 02:59:45 2006
+++ squid-2.6.RC1/helpers/external_acl/mswin_lm_group/Makefile.in Mon Jun 12 00:09:59 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.2 2006/05/27 08:59:45 serassio Exp $
+# $Id: Makefile.in,v 1.5 2006/06/12 06:09:59 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -149,6 +149,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -181,7 +183,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -191,10 +192,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/external_acl/session/Makefile.in squid-2.6.RC1/helpers/external_acl/session/Makefile.in
--- squid-2.6.PRE2/helpers/external_acl/session/Makefile.in Thu May 25 06:42:12 2006
+++ squid-2.6.RC1/helpers/external_acl/session/Makefile.in Mon Jun 12 00:10:00 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid LDAP authentication helper
#
-# $Id: Makefile.in,v 1.3 2006/05/25 12:42:12 hno Exp $
+# $Id: Makefile.in,v 1.6 2006/06/12 06:10:00 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -152,6 +152,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -184,7 +186,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -194,10 +195,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/external_acl/unix_group/Makefile.in squid-2.6.RC1/helpers/external_acl/unix_group/Makefile.in
--- squid-2.6.PRE2/helpers/external_acl/unix_group/Makefile.in Thu May 25 06:42:14 2006
+++ squid-2.6.RC1/helpers/external_acl/unix_group/Makefile.in Mon Jun 12 00:10:01 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid LDAP authentication helper
#
-# $Id: Makefile.in,v 1.16 2006/05/25 12:42:14 hno Exp $
+# $Id: Makefile.in,v 1.19 2006/06/12 06:10:01 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -151,6 +151,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -183,7 +185,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -193,10 +194,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/external_acl/wbinfo_group/Makefile.in squid-2.6.RC1/helpers/external_acl/wbinfo_group/Makefile.in
--- squid-2.6.PRE2/helpers/external_acl/wbinfo_group/Makefile.in Thu May 25 06:42:15 2006
+++ squid-2.6.RC1/helpers/external_acl/wbinfo_group/Makefile.in Mon Jun 12 00:10:04 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid LDAP authentication helper
#
-# $Id: Makefile.in,v 1.15 2006/05/25 12:42:15 hno Exp $
+# $Id: Makefile.in,v 1.18 2006/06/12 06:10:04 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -134,6 +134,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -166,7 +168,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -176,10 +177,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/negotiate_auth/Makefile.in squid-2.6.RC1/helpers/negotiate_auth/Makefile.in
--- squid-2.6.PRE2/helpers/negotiate_auth/Makefile.in Sat May 27 02:59:45 2006
+++ squid-2.6.RC1/helpers/negotiate_auth/Makefile.in Mon Jun 12 00:10:04 2006
@@ -16,7 +16,7 @@
# Makefile for storage modules in the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.4 2006/05/27 08:59:45 serassio Exp $
+# $Id: Makefile.in,v 1.7 2006/06/12 06:10:04 hno Exp $
#
srcdir = @srcdir@
top_srcdir = @top_srcdir@
@@ -135,6 +135,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -167,7 +169,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -177,10 +178,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/negotiate_auth/mswin_sspi/Makefile.in squid-2.6.RC1/helpers/negotiate_auth/mswin_sspi/Makefile.in
--- squid-2.6.PRE2/helpers/negotiate_auth/mswin_sspi/Makefile.in Sat May 27 02:59:45 2006
+++ squid-2.6.RC1/helpers/negotiate_auth/mswin_sspi/Makefile.in Mon Jun 12 00:10:06 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.2 2006/05/27 08:59:45 serassio Exp $
+# $Id: Makefile.in,v 1.5 2006/06/12 06:10:06 hno Exp $
#
srcdir = @srcdir@
@@ -148,6 +148,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -180,7 +182,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -190,10 +191,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/ntlm_auth/Makefile.in squid-2.6.RC1/helpers/ntlm_auth/Makefile.in
--- squid-2.6.PRE2/helpers/ntlm_auth/Makefile.in Sat May 27 02:59:45 2006
+++ squid-2.6.RC1/helpers/ntlm_auth/Makefile.in Mon Jun 12 00:10:08 2006
@@ -16,7 +16,7 @@
# Makefile for storage modules in the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.30 2006/05/27 08:59:45 serassio Exp $
+# $Id: Makefile.in,v 1.33 2006/06/12 06:10:08 hno Exp $
#
srcdir = @srcdir@
top_srcdir = @top_srcdir@
@@ -135,6 +135,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -167,7 +169,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -177,10 +178,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/ntlm_auth/SMB/Makefile.in squid-2.6.RC1/helpers/ntlm_auth/SMB/Makefile.in
--- squid-2.6.PRE2/helpers/ntlm_auth/SMB/Makefile.in Thu May 25 06:42:19 2006
+++ squid-2.6.RC1/helpers/ntlm_auth/SMB/Makefile.in Mon Jun 12 00:10:08 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.29 2006/05/25 12:42:19 hno Exp $
+# $Id: Makefile.in,v 1.32 2006/06/12 06:10:08 hno Exp $
#
srcdir = @srcdir@
@@ -155,6 +155,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -187,7 +189,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -197,10 +198,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/ntlm_auth/SMB/smbval/Makefile.in squid-2.6.RC1/helpers/ntlm_auth/SMB/smbval/Makefile.in
--- squid-2.6.PRE2/helpers/ntlm_auth/SMB/smbval/Makefile.in Thu May 25 06:42:20 2006
+++ squid-2.6.RC1/helpers/ntlm_auth/SMB/smbval/Makefile.in Mon Jun 12 00:10:08 2006
@@ -143,6 +143,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -175,7 +177,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -185,10 +186,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/ntlm_auth/fakeauth/Makefile.in squid-2.6.RC1/helpers/ntlm_auth/fakeauth/Makefile.in
--- squid-2.6.PRE2/helpers/ntlm_auth/fakeauth/Makefile.in Thu May 25 06:42:20 2006
+++ squid-2.6.RC1/helpers/ntlm_auth/fakeauth/Makefile.in Mon Jun 12 00:10:08 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.28 2006/05/25 12:42:20 hno Exp $
+# $Id: Makefile.in,v 1.31 2006/06/12 06:10:08 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -150,6 +150,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -182,7 +184,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -192,10 +193,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/ntlm_auth/mswin_sspi/Makefile.in squid-2.6.RC1/helpers/ntlm_auth/mswin_sspi/Makefile.in
--- squid-2.6.PRE2/helpers/ntlm_auth/mswin_sspi/Makefile.in Sat May 27 02:59:45 2006
+++ squid-2.6.RC1/helpers/ntlm_auth/mswin_sspi/Makefile.in Mon Jun 12 00:10:08 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.2 2006/05/27 08:59:45 serassio Exp $
+# $Id: Makefile.in,v 1.5 2006/06/12 06:10:08 hno Exp $
#
srcdir = @srcdir@
@@ -147,6 +147,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -179,7 +181,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -189,10 +190,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/ntlm_auth/no_check/Makefile.in squid-2.6.RC1/helpers/ntlm_auth/no_check/Makefile.in
--- squid-2.6.PRE2/helpers/ntlm_auth/no_check/Makefile.in Thu May 25 06:42:21 2006
+++ squid-2.6.RC1/helpers/ntlm_auth/no_check/Makefile.in Mon Jun 12 00:10:08 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.30 2006/05/25 12:42:21 hno Exp $
+# $Id: Makefile.in,v 1.33 2006/06/12 06:10:08 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -134,6 +134,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -166,7 +168,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -176,10 +177,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/helpers/ntlm_auth/no_check/no_check.pl squid-2.6.RC1/helpers/ntlm_auth/no_check/no_check.pl
--- squid-2.6.PRE2/helpers/ntlm_auth/no_check/no_check.pl Fri Aug 31 05:19:28 2001
+++ squid-2.6.RC1/helpers/ntlm_auth/no_check/no_check.pl Sun Jun 11 06:52:42 2006
@@ -15,7 +15,7 @@
while() {
chop;
- if ($_ eq "YR") {
+ if (substr($_, 2) eq "YR") {
print "TT ".encode_base64(&make_ntlm_static_challenge);
next;
}
diff -ruN squid-2.6.PRE2/icons/Makefile.in squid-2.6.RC1/icons/Makefile.in
--- squid-2.6.PRE2/icons/Makefile.in Thu May 25 06:42:23 2006
+++ squid-2.6.RC1/icons/Makefile.in Mon Jun 12 00:10:08 2006
@@ -14,7 +14,7 @@
@SET_MAKE@
-# $Id: Makefile.in,v 1.40 2006/05/25 12:42:23 hno Exp $
+# $Id: Makefile.in,v 1.43 2006/06/12 06:10:08 hno Exp $
#
srcdir = @srcdir@
@@ -135,6 +135,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -167,7 +169,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -177,10 +178,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/include/autoconf.h.in squid-2.6.RC1/include/autoconf.h.in
--- squid-2.6.PRE2/include/autoconf.h.in Sat Jun 3 21:01:40 2006
+++ squid-2.6.RC1/include/autoconf.h.in Sun Jun 11 15:00:26 2006
@@ -182,6 +182,9 @@
/* Define to 1 if you have the header file. */
#undef HAVE_IP_NAT_H
+/* Define to 1 if you have the `kqueue' function. */
+#undef HAVE_KQUEUE
+
/* Define to 1 if you have the `aio' library (-laio). */
#undef HAVE_LIBAIO
@@ -494,6 +497,9 @@
*/
#undef HAVE_SYS_DIR_H
+/* Define to 1 if you have the header file. */
+#undef HAVE_SYS_EVENT_H
+
/* Define to 1 if you have the header file. */
#undef HAVE_SYS_FILE_H
@@ -513,6 +519,9 @@
/* Define to 1 if you have the header file. */
#undef HAVE_SYS_PARAM_H
+/* Define to 1 if you have the header file. */
+#undef HAVE_SYS_POLL_H
+
/* Define to 1 if you have the header file. */
#undef HAVE_SYS_PRCTL_H
@@ -730,6 +739,10 @@
BSD derviations (e.g. FreeBSD, ?). */
#undef USE_ARP_ACL
+/* Define this if you would like to use the aufs I/O method for disk I/O
+ instead of the POSIX AIO method. */
+#undef USE_AUFSOPS
+
/* Use Cache Digests for locating objects in neighbor caches. This code is
still semi-experimental. */
#undef USE_CACHE_DIGESTS
@@ -761,6 +774,9 @@
/* Compile in support for Ident (RFC 931) lookups? Enabled by default. */
#undef USE_IDENT
+/* Use kqueue() for the IO loop */
+#undef USE_KQUEUE
+
/* Enable code for assiting in finding memory leaks. Hacker stuff only. */
#undef USE_LEAKFINDER
@@ -778,6 +794,9 @@
/* Use select() for the IO loop */
#undef USE_SELECT
+
+/* Use Winsock select() for the IO loop */
+#undef USE_SELECT_WIN32
/* Define this to include code for SSL encryption. */
#undef USE_SSL
diff -ruN squid-2.6.PRE2/include/version.h squid-2.6.RC1/include/version.h
--- squid-2.6.PRE2/include/version.h Tue Jun 6 11:46:18 2006
+++ squid-2.6.RC1/include/version.h Tue Jun 20 15:01:20 2006
@@ -9,5 +9,5 @@
*/
#ifndef SQUID_RELEASE_TIME
-#define SQUID_RELEASE_TIME 1149615975
+#define SQUID_RELEASE_TIME 1150837278
#endif
diff -ruN squid-2.6.PRE2/lib/Makefile.in squid-2.6.RC1/lib/Makefile.in
--- squid-2.6.PRE2/lib/Makefile.in Sat May 27 02:59:45 2006
+++ squid-2.6.RC1/lib/Makefile.in Mon Jun 12 00:10:08 2006
@@ -15,7 +15,7 @@
@SET_MAKE@
#
-# $Id: Makefile.in,v 1.79 2006/05/27 08:59:45 serassio Exp $
+# $Id: Makefile.in,v 1.82 2006/06/12 06:10:08 hno Exp $
#
srcdir = @srcdir@
@@ -178,6 +178,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -210,7 +212,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -220,10 +221,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/scripts/Makefile.am squid-2.6.RC1/scripts/Makefile.am
--- squid-2.6.PRE2/scripts/Makefile.am Fri Aug 31 05:19:11 2001
+++ squid-2.6.RC1/scripts/Makefile.am Sat Jun 10 15:21:39 2006
@@ -4,7 +4,7 @@
#
-bin_SCRIPTS = RunCache RunAccel
+bin_SCRIPTS = RunCache
EXTRA_DIST = AnnounceCache.pl access-log-matrix.pl cache-compare.pl \
cachetrace.pl check_cache.pl convert.configure.to.os2 \
fileno-to-pathname.pl flag_truncs.pl icp-test.pl \
diff -ruN squid-2.6.PRE2/scripts/Makefile.in squid-2.6.RC1/scripts/Makefile.in
--- squid-2.6.PRE2/scripts/Makefile.in Thu May 25 06:42:23 2006
+++ squid-2.6.RC1/scripts/Makefile.in Mon Jun 12 00:10:08 2006
@@ -43,7 +43,7 @@
host_triplet = @host@
subdir = scripts
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(srcdir)/RunAccel.in $(srcdir)/RunCache.in
+ $(srcdir)/RunCache.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
@@ -51,7 +51,7 @@
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/cfgaux/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/include/autoconf.h
-CONFIG_CLEAN_FILES = RunCache RunAccel
+CONFIG_CLEAN_FILES = RunCache
am__installdirs = "$(DESTDIR)$(bindir)"
binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
SCRIPTS = $(bin_SCRIPTS)
@@ -132,6 +132,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -164,7 +166,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -174,10 +175,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
@@ -222,7 +227,7 @@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
-bin_SCRIPTS = RunCache RunAccel
+bin_SCRIPTS = RunCache
EXTRA_DIST = AnnounceCache.pl access-log-matrix.pl cache-compare.pl \
cachetrace.pl check_cache.pl convert.configure.to.os2 \
fileno-to-pathname.pl flag_truncs.pl icp-test.pl \
@@ -261,8 +266,6 @@
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
RunCache: $(top_builddir)/config.status $(srcdir)/RunCache.in
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-RunAccel: $(top_builddir)/config.status $(srcdir)/RunAccel.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
install-binSCRIPTS: $(bin_SCRIPTS)
@$(NORMAL_INSTALL)
diff -ruN squid-2.6.PRE2/scripts/RunAccel.in squid-2.6.RC1/scripts/RunAccel.in
--- squid-2.6.PRE2/scripts/RunAccel.in Tue May 17 10:56:36 2005
+++ squid-2.6.RC1/scripts/RunAccel.in Wed Dec 31 17:00:00 1969
@@ -1,36 +0,0 @@
-#!/bin/sh
-#
-# $Id: RunAccel.in,v 1.7 2005/05/17 16:56:36 hno Exp $
-
-# enable HTTP requests on port 80
-port="-a 80"
-
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-logdir=@localstatedir@
-PATH=@sbindir@:/bin:/usr/bin
-export PATH
-
-if test $# = 1 ; then
- conf="-f $1"
- shift
-fi
-
-failcount=0
-while : ; do
- echo "Running: squid $port -s $conf >> $logdir/squid.out 2>&1"
- start=`date '+%d%H%M%S'`
- squid -N $port -s $conf >> $logdir/squid.out 2>&1
- stop=`date '+%d%H%M%S'`
- t=`expr $stop - $start`
- if test 0 -le $t -a $t -lt 5 ; then
- failcount=`expr $failcount + 1`
- else
- failcount=0
- fi
- if test $failcount -gt 5 ; then
- echo "RunCache: EXITING DUE TO REPEATED, FREQUENT FAILURES" >&2
- exit 1
- fi
- sleep 10
-done
diff -ruN squid-2.6.PRE2/snmplib/Makefile.in squid-2.6.RC1/snmplib/Makefile.in
--- squid-2.6.PRE2/snmplib/Makefile.in Thu May 25 06:42:23 2006
+++ squid-2.6.RC1/snmplib/Makefile.in Mon Jun 12 00:10:08 2006
@@ -141,6 +141,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -173,7 +175,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -183,10 +184,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = 3.4
diff -ruN squid-2.6.PRE2/src/HttpMsg.c squid-2.6.RC1/src/HttpMsg.c
--- squid-2.6.PRE2/src/HttpMsg.c Tue May 17 10:56:37 2005
+++ squid-2.6.RC1/src/HttpMsg.c Tue Jun 13 08:12:17 2006
@@ -1,6 +1,6 @@
/*
- * $Id: HttpMsg.c,v 1.11 2005/05/17 16:56:37 hno Exp $
+ * $Id: HttpMsg.c,v 1.12 2006/06/13 14:12:17 hno Exp $
*
* DEBUG: section 74 HTTP Message
* AUTHOR: Alex Rousskov
@@ -91,13 +91,15 @@
int
httpMsgIsPersistent(http_version_t http_ver, const HttpHeader * hdr)
{
+ if (httpHeaderHasConnDir(hdr, "close"))
+ return 0;
#if WHEN_SQUID_IS_HTTP1_1
if ((http_ver.major >= 1) && (http_ver.minor >= 1)) {
/*
* for modern versions of HTTP: persistent unless there is
* a "Connection: close" header.
*/
- return !httpHeaderHasConnDir(hdr, "close");
+ return 1;
} else {
#else
{
diff -ruN squid-2.6.PRE2/src/HttpReply.c squid-2.6.RC1/src/HttpReply.c
--- squid-2.6.PRE2/src/HttpReply.c Mon Jun 5 16:01:22 2006
+++ squid-2.6.RC1/src/HttpReply.c Sat Jun 10 18:28:19 2006
@@ -1,6 +1,6 @@
/*
- * $Id: HttpReply.c,v 1.55 2006/06/05 22:01:22 hno Exp $
+ * $Id: HttpReply.c,v 1.56 2006/06/11 00:28:19 hno Exp $
*
* DEBUG: section 58 HTTP Reply (Response)
* AUTHOR: Alex Rousskov
@@ -196,7 +196,7 @@
packerToStoreInit(&p, e);
httpReplyPackInto(e->mem_obj->reply, &p);
packerClean(&p);
- rep->hdr_sz = e->mem_obj->inmem_hi;
+ rep->hdr_sz = e->mem_obj->inmem_hi - rep->body.mb.size;
}
#if UNUSED_CODE
diff -ruN squid-2.6.PRE2/src/Makefile.am squid-2.6.RC1/src/Makefile.am
--- squid-2.6.PRE2/src/Makefile.am Fri Jun 2 06:05:33 2006
+++ squid-2.6.RC1/src/Makefile.am Sun Jun 11 11:06:25 2006
@@ -1,7 +1,7 @@
#
# Makefile for the Squid Object Cache server
#
-# $Id: Makefile.am,v 1.47 2006/06/02 12:05:33 serassio Exp $
+# $Id: Makefile.am,v 1.51 2006/06/11 17:06:25 serassio Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -71,6 +71,12 @@
if USE_SELECT
COMMLOOP_SOURCE = comm_select.c
endif
+if USE_SELECT_WIN32
+COMMLOOP_SOURCE = comm_select_win32.c
+endif
+if USE_KQUEUE
+COMMLOOP_SOURCE = comm_kqueue.c
+endif
SUBDIRS = fs repl auth
@@ -112,6 +118,9 @@
comm_epoll.c \
comm_poll.c \
comm_select.c \
+ comm_select_win32.c \
+ comm_kqueue.c \
+ comm_generic.c \
win32.c
squid_SOURCES = \
@@ -298,7 +307,7 @@
DEFAULT_SWAP_DIR = $(localstatedir)/cache
DEFAULT_PINGER = $(libexecdir)/`echo pinger | sed '$(transform);s/$$/$(EXEEXT)/'`
DEFAULT_UNLINKD = $(libexecdir)/`echo unlinkd | sed '$(transform);s/$$/$(EXEEXT)/'`
-DEFAULT_DISKD = $(libexecdir)/`echo diskd | sed '$(transform);s/$$/$(EXEEXT)/'`
+DEFAULT_DISKD = $(libexecdir)/`echo diskd_daemon | sed '$(transform);s/$$/$(EXEEXT)/'`
DEFAULT_ICON_DIR = $(datadir)/icons
DEFAULT_ERROR_DIR = $(datadir)/errors/@ERR_DEFAULT_LANGUAGE@
DEFAULT_MIB_PATH = $(datadir)/mib.txt
diff -ruN squid-2.6.PRE2/src/Makefile.in squid-2.6.RC1/src/Makefile.in
--- squid-2.6.PRE2/src/Makefile.in Fri Jun 2 06:09:55 2006
+++ squid-2.6.RC1/src/Makefile.in Mon Jun 12 00:10:08 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.267 2006/06/02 12:09:55 serassio Exp $
+# $Id: Makefile.in,v 1.272 2006/06/12 06:10:08 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -83,27 +83,30 @@
pinger_DEPENDENCIES =
am__squid_SOURCES_DIST = access_log.c acl.c asn.c authenticate.c \
cache_cf.c CacheDigest.c cache_manager.c carp.c cbdata.c \
- client_db.c client_side.c comm.c comm_epoll.c comm_poll.c \
- comm_select.c debug.c defines.h delay_pools.c disk.c \
- dns_internal.c dns.c enums.h errorpage.c event.c errormap.c \
- external_acl.c fd.c filemap.c forward.c fqdncache.c ftp.c \
- globals.h gopher.c helper.c htcp.c http.c HttpStatusLine.c \
- HttpHdrCc.c HttpHdrRange.c HttpHdrContRange.c HttpHeader.c \
- HttpHeaderTools.c HttpBody.c HttpMsg.c HttpReply.c \
- HttpRequest.c icmp.c icp_v2.c icp_v3.c ident.c internal.c \
- ipc.c ipcache.c leakfinder.c locrewrite.c logfile.c main.c \
- mem.c MemPool.c MemBuf.c mime.c multicast.c neighbors.c \
- net_db.c Packer.c pconn.c peer_digest.c peer_monitor.c \
- peer_select.c peer_sourcehash.c peer_userhash.c protos.h \
- redirect.c referer.c refresh.c send-announce.c snmp_core.c \
- snmp_agent.c squid.h ssl.c ssl_support.c stat.c StatHist.c \
- String.c stmem.c store.c store_io.c store_client.c \
+ client_db.c client_side.c comm.c comm_epoll.c comm_kqueue.c \
+ comm_poll.c comm_select.c comm_select_win32.c debug.c \
+ defines.h delay_pools.c disk.c dns_internal.c dns.c enums.h \
+ errorpage.c event.c errormap.c external_acl.c fd.c filemap.c \
+ forward.c fqdncache.c ftp.c globals.h gopher.c helper.c htcp.c \
+ http.c HttpStatusLine.c HttpHdrCc.c HttpHdrRange.c \
+ HttpHdrContRange.c HttpHeader.c HttpHeaderTools.c HttpBody.c \
+ HttpMsg.c HttpReply.c HttpRequest.c icmp.c icp_v2.c icp_v3.c \
+ ident.c internal.c ipc.c ipcache.c leakfinder.c locrewrite.c \
+ logfile.c main.c mem.c MemPool.c MemBuf.c mime.c multicast.c \
+ neighbors.c net_db.c Packer.c pconn.c peer_digest.c \
+ peer_monitor.c peer_select.c peer_sourcehash.c peer_userhash.c \
+ protos.h redirect.c referer.c refresh.c send-announce.c \
+ snmp_core.c snmp_agent.c squid.h ssl.c ssl_support.c stat.c \
+ StatHist.c String.c stmem.c store.c store_io.c store_client.c \
store_digest.c store_dir.c store_key_md5.c store_log.c \
store_rebuild.c store_swapin.c store_swapmeta.c \
store_swapout.c structs.h tools.c typedefs.h unlinkd.c url.c \
urn.c useragent.c wais.c wccp.c wccp2.c whois.c win32.c
-@USE_EPOLL_FALSE@@USE_POLL_FALSE@@USE_SELECT_TRUE@am__objects_1 = comm_select.$(OBJEXT)
-@USE_EPOLL_FALSE@@USE_POLL_TRUE@am__objects_1 = comm_poll.$(OBJEXT)
+@USE_EPOLL_FALSE@@USE_KQUEUE_FALSE@@USE_POLL_FALSE@@USE_SELECT_FALSE@@USE_SELECT_WIN32_TRUE@am__objects_1 = comm_select_win32.$(OBJEXT)
+@USE_EPOLL_FALSE@@USE_KQUEUE_FALSE@@USE_POLL_FALSE@@USE_SELECT_TRUE@am__objects_1 = comm_select.$(OBJEXT)
+@USE_EPOLL_FALSE@@USE_KQUEUE_FALSE@@USE_POLL_TRUE@am__objects_1 = comm_poll.$(OBJEXT)
+@USE_EPOLL_FALSE@@USE_KQUEUE_TRUE@am__objects_1 = \
+@USE_EPOLL_FALSE@@USE_KQUEUE_TRUE@ comm_kqueue.$(OBJEXT)
@USE_EPOLL_TRUE@am__objects_1 = comm_epoll.$(OBJEXT)
@USE_DELAY_POOLS_TRUE@am__objects_2 = delay_pools.$(OBJEXT)
@USE_DNSSERVER_FALSE@am__objects_3 = dns_internal.$(OBJEXT)
@@ -265,6 +268,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -297,7 +302,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -307,10 +311,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
@@ -377,8 +385,10 @@
@ENABLE_WIN32SPECIFIC_FALSE@WIN32SOURCE =
@ENABLE_WIN32SPECIFIC_TRUE@WIN32SOURCE = win32.c
@USE_EPOLL_TRUE@COMMLOOP_SOURCE = comm_epoll.c
+@USE_KQUEUE_TRUE@COMMLOOP_SOURCE = comm_kqueue.c
@USE_POLL_TRUE@COMMLOOP_SOURCE = comm_poll.c
@USE_SELECT_TRUE@COMMLOOP_SOURCE = comm_select.c
+@USE_SELECT_WIN32_TRUE@COMMLOOP_SOURCE = comm_select_win32.c
SUBDIRS = fs repl auth
INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include -I$(top_srcdir)/include
cf_gen_SOURCES = cf_gen.c defines.h debug.c
@@ -399,6 +409,9 @@
comm_epoll.c \
comm_poll.c \
comm_select.c \
+ comm_select_win32.c \
+ comm_kqueue.c \
+ comm_generic.c \
win32.c
squid_SOURCES = \
@@ -581,7 +594,7 @@
DEFAULT_SWAP_DIR = $(localstatedir)/cache
DEFAULT_PINGER = $(libexecdir)/`echo pinger | sed '$(transform);s/$$/$(EXEEXT)/'`
DEFAULT_UNLINKD = $(libexecdir)/`echo unlinkd | sed '$(transform);s/$$/$(EXEEXT)/'`
-DEFAULT_DISKD = $(libexecdir)/`echo diskd | sed '$(transform);s/$$/$(EXEEXT)/'`
+DEFAULT_DISKD = $(libexecdir)/`echo diskd_daemon | sed '$(transform);s/$$/$(EXEEXT)/'`
DEFAULT_ICON_DIR = $(datadir)/icons
DEFAULT_ERROR_DIR = $(datadir)/errors/@ERR_DEFAULT_LANGUAGE@
DEFAULT_MIB_PATH = $(datadir)/mib.txt
@@ -730,8 +743,11 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/client_side.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_epoll.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_generic.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_kqueue.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_poll.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_select.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_select_win32.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/delay_pools.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/disk.Po@am__quote@
diff -ruN squid-2.6.PRE2/src/acl.c squid-2.6.RC1/src/acl.c
--- squid-2.6.PRE2/src/acl.c Sat Jun 3 20:27:54 2006
+++ squid-2.6.RC1/src/acl.c Sat Jun 17 17:31:03 2006
@@ -1,6 +1,6 @@
/*
- * $Id: acl.c,v 1.302 2006/06/04 02:27:54 hno Exp $
+ * $Id: acl.c,v 1.303 2006/06/17 23:31:03 hno Exp $
*
* DEBUG: section 28 Access Control
* AUTHOR: Duane Wessels
@@ -375,6 +375,8 @@
while ((t = strtokFile())) {
q = memAllocate(MEM_INTLIST);
q->i = (int) urlParseMethod(t);
+ if (q->i == METHOD_NONE)
+ self_destruct();
*(Tail) = q;
Tail = &q->next;
}
diff -ruN squid-2.6.PRE2/src/auth/Makefile.in squid-2.6.RC1/src/auth/Makefile.in
--- squid-2.6.PRE2/src/auth/Makefile.in Fri Jun 2 15:35:38 2006
+++ squid-2.6.RC1/src/auth/Makefile.in Mon Jun 12 00:10:12 2006
@@ -153,6 +153,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -185,7 +187,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -195,10 +196,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
@@ -246,7 +251,7 @@
# Makefile for authentication modules in the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.29 2006/06/02 21:35:38 hno Exp $
+# $Id: Makefile.in,v 1.32 2006/06/12 06:10:12 hno Exp $
#
AUTOMAKE_OPTIONS = subdir-objects
EXTRA_LIBRARIES = libbasic.a libdigest.a libntlm.a libnegotiate.a
diff -ruN squid-2.6.PRE2/src/auth/ntlm/auth_ntlm.c squid-2.6.RC1/src/auth/ntlm/auth_ntlm.c
--- squid-2.6.PRE2/src/auth/ntlm/auth_ntlm.c Sun May 28 09:55:48 2006
+++ squid-2.6.RC1/src/auth/ntlm/auth_ntlm.c Thu Jun 15 16:13:33 2006
@@ -1,6 +1,6 @@
/*
- * $Id: auth_ntlm.c,v 1.30 2006/05/28 15:55:48 serassio Exp $
+ * $Id: auth_ntlm.c,v 1.32 2006/06/15 22:13:33 hno Exp $
*
* DEBUG: section 29 NTLM Authenticator
* AUTHOR: Robert Collins
@@ -102,12 +102,10 @@
helperStatefulFree(ntlmauthenticators);
ntlmauthenticators = NULL;
if (ntlm_request_pool) {
- assert(memPoolInUseCount(ntlm_request_pool) == 0);
memPoolDestroy(ntlm_request_pool);
ntlm_request_pool = NULL;
}
if (ntlm_user_pool) {
- assert(memPoolInUseCount(ntlm_user_pool) == 0);
memPoolDestroy(ntlm_user_pool);
ntlm_user_pool = NULL;
}
@@ -140,7 +138,6 @@
storeAppendPrintf(entry, "\n");
storeAppendPrintf(entry, "%s %s children %d\n", name, "ntlm", config->authenticateChildren);
storeAppendPrintf(entry, "%s %s keep_alive %s\n", name, "ntlm", config->keep_alive ? "on" : "off");
- storeAppendPrintf(entry, "%s %s use_ntlm_negotiate %s\n", name, "ntlm", config->use_ntlm_negotiate ? "on" : "off");
}
static void
@@ -165,8 +162,6 @@
parse_int(&ntlmConfig->authenticateChildren);
} else if (strcasecmp(param_str, "keep_alive") == 0) {
parse_onoff(&ntlmConfig->keep_alive);
- } else if (strcasecmp(param_str, "use_ntlm_negotiate") == 0) {
- parse_onoff(&ntlmConfig->use_ntlm_negotiate);
} else {
debug(28, 0) ("unrecognised ntlm auth scheme parameter '%s'\n", param_str);
}
@@ -519,10 +514,7 @@
r->auth_user_request = auth_user_request;
authenticateAuthUserRequestLock(r->auth_user_request);
if (ntlm_request->auth_state == AUTHENTICATE_STATE_INITIAL) {
- if (ntlmConfig->use_ntlm_negotiate)
- snprintf(buf, 8192, "YR %s\n", sent_string);
- else
- snprintf(buf, 8192, "YR\n");
+ snprintf(buf, 8192, "YR %s\n", sent_string);
} else {
snprintf(buf, 8192, "KK %s\n", sent_string);
}
diff -ruN squid-2.6.PRE2/src/auth/ntlm/auth_ntlm.h squid-2.6.RC1/src/auth/ntlm/auth_ntlm.h
--- squid-2.6.PRE2/src/auth/ntlm/auth_ntlm.h Mon May 15 16:06:49 2006
+++ squid-2.6.RC1/src/auth/ntlm/auth_ntlm.h Sat Jun 10 18:27:36 2006
@@ -48,7 +48,6 @@
struct _auth_ntlm_config {
int authenticateChildren;
int keep_alive;
- int use_ntlm_negotiate;
wordlist *authenticate;
};
diff -ruN squid-2.6.PRE2/src/cache_cf.c squid-2.6.RC1/src/cache_cf.c
--- squid-2.6.PRE2/src/cache_cf.c Tue Jun 6 00:37:41 2006
+++ squid-2.6.RC1/src/cache_cf.c Sat Jun 17 17:29:41 2006
@@ -1,6 +1,6 @@
/*
- * $Id: cache_cf.c,v 1.442 2006/06/06 06:37:41 hno Exp $
+ * $Id: cache_cf.c,v 1.444 2006/06/17 23:29:41 hno Exp $
*
* DEBUG: section 3 Configuration File Parsing
* AUTHOR: Harvest Derived
@@ -520,7 +520,6 @@
Config.effectiveGroup);
Config2.effectiveGroupID = grp->gr_gid;
}
- urlExtMethodConfigure();
if (0 == Config.onoff.client_db) {
acl *a;
for (a = Config.aclList; a; a = a->next) {
@@ -2068,6 +2067,12 @@
storeAppendPrintf(entry, " reload-into-ims");
if (head->flags.ignore_reload)
storeAppendPrintf(entry, " ignore-reload");
+ if (head->flags.ignore_no_cache)
+ storeAppendPrintf(entry, " ignore-no-cache");
+ if (head->flags.ignore_private)
+ storeAppendPrintf(entry, " ignore-private");
+ if (head->flags.ignore_auth)
+ storeAppendPrintf(entry, " ignore-auth");
#endif
storeAppendPrintf(entry, "\n");
head = head->next;
@@ -2087,6 +2092,9 @@
int override_lastmod = 0;
int reload_into_ims = 0;
int ignore_reload = 0;
+ int ignore_no_cache = 0;
+ int ignore_private = 0;
+ int ignore_auth = 0;
#endif
int i;
refresh_t *t;
@@ -2118,6 +2126,12 @@
override_expire = 1;
else if (!strcmp(token, "override-lastmod"))
override_lastmod = 1;
+ else if (!strcmp(token, "ignore-no-cache"))
+ ignore_no_cache = 1;
+ else if (!strcmp(token, "ignore-private"))
+ ignore_private = 1;
+ else if (!strcmp(token, "ignore-auth"))
+ ignore_auth = 1;
else if (!strcmp(token, "reload-into-ims")) {
reload_into_ims = 1;
refresh_nocache_hack = 1;
@@ -2159,6 +2173,12 @@
t->flags.reload_into_ims = 1;
if (ignore_reload)
t->flags.ignore_reload = 1;
+ if (ignore_no_cache)
+ t->flags.ignore_no_cache = 1;
+ if (ignore_private)
+ t->flags.ignore_private = 1;
+ if (ignore_auth)
+ t->flags.ignore_auth = 1;
#endif
t->next = NULL;
while (*head)
@@ -2694,6 +2714,7 @@
free_generic_http_port_data(http_port_list * s)
{
safe_free(s->name);
+ safe_free(s->protocol);
safe_free(s->defaultsite);
}
@@ -2778,6 +2799,9 @@
free_generic_http_port_data(&s->http);
safe_free(s->cert);
safe_free(s->key);
+ if (s->sslContext)
+ SSL_CTX_free(s->sslContext);
+ s->sslContext = NULL;
}
static void
@@ -2900,6 +2924,11 @@
configFreeMemory(void)
{
free_all();
+#if USE_SSL
+ if (Config.ssl_client.sslContext)
+ SSL_CTX_free(Config.ssl_client.sslContext);
+ Config.ssl_client.sslContext = NULL;
+#endif
}
void
diff -ruN squid-2.6.PRE2/src/cf.data.pre squid-2.6.RC1/src/cf.data.pre
--- squid-2.6.PRE2/src/cf.data.pre Tue Jun 6 00:37:41 2006
+++ squid-2.6.RC1/src/cf.data.pre Sat Jun 17 17:31:03 2006
@@ -1,6 +1,6 @@
#
-# $Id: cf.data.pre,v 1.336 2006/06/06 06:37:41 hno Exp $
+# $Id: cf.data.pre,v 1.345 2006/06/17 23:31:03 hno Exp $
#
#
# SQUID Web Proxy Cache http://www.squid-cache.org/
@@ -806,10 +806,27 @@
DEFAULT: on
LOC: Config.onoff.cache_vary
DOC_START
- A list of ACL elements which, if matched, cause the replies with
- varying entities (Vary header) to not be cached.
+ Set to off to disable caching of Vary:in objects.
DOC_END
+NAME: broken_vary_encoding
+TYPE: acl_access
+DEFAULT: none
+LOC: Config.accessList.vary_encoding
+DOC_START
+ Many servers have broken support for on-the-fly Content-Encoding,
+ returning the same ETag on both plain and gzip:ed variants.
+ Vary replies matching this access list will have the cache split
+ on the Accept-Encoding header of the request and not trusting the
+ ETag to be unique.
+
+NOCOMMENT_START
+# Apache mod_gzip and mod_deflate known to be broken so don't trust
+# Apache to signal ETag correctly on such responses
+acl Apache rep_header Server ^Apache
+broken_vary_encoding allow apache
+NOCOMMENT_END
+DOC_END
COMMENT_START
OPTIONS WHICH AFFECT THE CACHE SIZE
@@ -1919,22 +1936,6 @@
authenticator processes.
auth_param ntlm children 5
- "use_ntlm_negotiate" on|off
- Enables support for NTLM NEGOTIATE packet exchanges with the helper.
- The configured ntlm authenticator must be able to handle NTLM
- NEGOTIATE packet. See the authenticator programs documentation if
- unsure. ntlm_auth from Samba-3.0.2 or later supports the use of this
- option.
- The NEGOTIATE packet is required to support NTLMv2 and a
- number of other negotiable NTLMSSP options, and also makes it
- more likely the negotiation is successful. Enabling this parameter
- will also solve problems encountered when NT domain policies
- restrict users to access only certain workstations. When this is off,
- all users must be allowed to log on the proxy servers too, or they'll
- get "invalid workstation" errors - and access denied - when trying to
- use Squid's services.
- auth_param ntlm use_ntlm_negotiate on
-
"keep_alive" on|off
This option enables the use of keep-alive on the initial
authentication request. It has been reported some versions of MSIE
@@ -2199,6 +2200,9 @@
override-lastmod
reload-into-ims
ignore-reload
+ ignore-no-cache
+ ignore-private
+ ignore-auth
override-expire enforces min age even if the server
sent a Expires: header. Doing this VIOLATES the HTTP
@@ -2218,6 +2222,23 @@
this feature could make you liable for problems which
it causes.
+ ignore-no-cache ignores any ``Pragma: no-cache'' and
+ ``Cache-control: no-cache'' headers received from a server.
+ The HTTP RFC never allows the use of this (Pragma) header
+ from a server, only a client, though plenty of servers
+ send it anyway.
+
+ ignore-private ignores any ``Cache-control: private''
+ headers received from a server. Doing this VIOLATES
+ the HTTP standard. Enabling this feature could make you
+ liable for problems which it causes.
+
+ ignore-auth caches responses to requests with authorization,
+ irrespective of ``Cache-control'' headers received from
+ a server. Doing this VIOLATES the HTTP standard. Enabling
+ this feature could make you liable for problems which
+ it causes.
+
Basically a cached object is:
FRESH if expires < now, else STALE
@@ -4124,6 +4145,13 @@
DOC_START
Use this option to define your WCCP ``home'' router for
Squid.
+
+ wccp_router supports a single WCCP(v1) router
+
+ wccp2_router supports multiple WCCPv2 routers
+
+ only one of the two may be used at the same time and defines
+ which version of WCCP to use.
DOC_END
NAME: wccp_version
@@ -4132,10 +4160,16 @@
DEFAULT: 4
IFDEF: USE_WCCP
DOC_START
+ This directive is only relevant if you need to set up WCCP(v1)
+ to some very old and end-of-life Cisco routers. In all other
+ setups it must be left unset or at the default setting.
+ It defines an internal version in the WCCP(v1) protocol,
+ with version 4 being the officially documented protocol.
+
According to some users, Cisco IOS 11.2 and earlier only
support WCCP version 3. If you're using that or an earlier
- version of IOS, change this value to 3, otherwise do not specify
- this parameter.
+ version of IOS, you may need to change this value to 3, otherwise
+ do not specify this parameter.
DOC_END
NAME: wccp2_forwarding_method
@@ -4180,6 +4214,7 @@
TYPE: wccp2_service
LOC: Config.Wccp2.info
DEFAULT: none
+DEFAULT_IF_NONE: standard 0
IFDEF: USE_WCCPv2
DOC_START
WCCP2 allows for multiple traffic services. There are two
@@ -4798,8 +4833,8 @@
DOC_END
NAME: extension_methods
-TYPE: wordlist
-LOC: Config.ext_methods
+TYPE: extension_method
+LOC: RequestMethodStr
DEFAULT: none
DOC_START
Squid only knows about standardized HTTP request methods.
diff -ruN squid-2.6.PRE2/src/client_side.c squid-2.6.RC1/src/client_side.c
--- squid-2.6.PRE2/src/client_side.c Mon Jun 5 23:57:55 2006
+++ squid-2.6.RC1/src/client_side.c Tue Jun 20 14:43:27 2006
@@ -1,6 +1,6 @@
/*
- * $Id: client_side.c,v 1.646 2006/06/06 05:57:55 hno Exp $
+ * $Id: client_side.c,v 1.648 2006/06/20 20:43:27 hno Exp $
*
* DEBUG: section 33 Client-side Routines
* AUTHOR: Duane Wessels
@@ -679,7 +679,11 @@
if (mem->reply) {
const char *etag = httpHeaderGetStr(&mem->reply->header, HDR_ETAG);
if (etag) {
- storeAddVary(mem->url, mem->log_url, mem->method, NULL, httpHeaderGetStr(&mem->reply->header, HDR_ETAG), request->vary_hdr, request->vary_headers);
+ if (request->vary && request->vary->broken_encoding && strBuf(request->vary_encoding)) {
+ request->vary_encoding = httpHeaderGetStrOrList(&request->header, HDR_CONTENT_ENCODING);
+ strCat(request->vary_encoding, "");
+ }
+ storeAddVary(mem->url, mem->log_url, mem->method, NULL, httpHeaderGetStr(&mem->reply->header, HDR_ETAG), request->vary_hdr, request->vary_headers, strBuf(request->vary_encoding));
}
}
request->done_etag = 1;
@@ -792,7 +796,6 @@
int hit = 0;
const char *etag;
debug(33, 3) ("clientProcessExpired: '%s'\n", http->uri);
- assert(http->entry->lastmod >= 0);
/*
* check if we are allowed to contact other servers
* @?@: Instead of a 504 (Gateway Timeout) reply, we may want to return
@@ -842,7 +845,12 @@
/* delay_id is already set on original store client */
delaySetStoreClient(http->sc, delayClient(http));
#endif
- http->request->lastmod = http->old_entry->lastmod;
+ if (http->old_entry->lastmod > 0)
+ http->request->lastmod = http->old_entry->lastmod;
+ else if (http->old_entry->mem_obj && http->old_entry->mem_obj->reply)
+ http->request->lastmod = http->old_entry->mem_obj->reply->date;
+ else
+ http->request->lastmod = -1;
debug(33, 5) ("clientProcessExpired: lastmod %ld\n", (long int) entry->lastmod);
http->entry = entry;
http->out.offset = 0;
@@ -1468,9 +1476,9 @@
HttpHeaderPos pos = HttpHeaderInitPos;
HttpHeaderEntry *e;
request->flags.auth = 1;
- while ((e = httpHeaderGetEntry(req_hdr, &pos))) {
- if (e->id == HDR_AUTHORIZATION || e->id == HDR_PROXY_AUTHORIZATION) {
- if (!request->flags.no_connection_auth) {
+ if (!request->flags.no_connection_auth) {
+ while ((e = httpHeaderGetEntry(req_hdr, &pos))) {
+ if (e->id == HDR_AUTHORIZATION || e->id == HDR_PROXY_AUTHORIZATION) {
const char *value = strBuf(e->value);
if (strncasecmp(value, "NTLM ", 5) == 0
||
@@ -1482,8 +1490,6 @@
/* the pinned connection is set below */
break;
}
- } else {
- httpHeaderDelAt(req_hdr, pos);
}
}
}
@@ -1907,7 +1913,9 @@
if (request->flags.no_connection_auth) {
httpHeaderDelAt(hdr, pos);
continue;
- } else if (!request->flags.accelerated) {
+ }
+ request->flags.must_keepalive = 1;
+ if (!request->flags.accelerated) {
httpHeaderPutStr(hdr, HDR_PROXY_SUPPORT, "Session-Based-Authentication");
httpHeaderPutStr(hdr, HDR_CONNECTION, "Proxy-support");
}
@@ -1916,6 +1924,32 @@
}
}
}
+ /* Filter unproxyable authentication types */
+ if (http->log_type != LOG_TCP_DENIED &&
+ (httpHeaderHas(hdr, HDR_PROXY_AUTHENTICATE))) {
+ HttpHeaderPos pos = HttpHeaderInitPos;
+ HttpHeaderEntry *e;
+ while ((e = httpHeaderGetEntry(hdr, &pos))) {
+ if (e->id == HDR_PROXY_AUTHENTICATE) {
+ const char *value = strBuf(e->value);
+ if ((strncasecmp(value, "NTLM", 4) == 0 &&
+ (value[4] == '\0' || value[4] == ' '))
+ ||
+ (strncasecmp(value, "Negotiate", 9) == 0 &&
+ (value[9] == '\0' || value[9] == ' '))
+ ||
+ (strncasecmp(value, "Kerberos", 8) == 0 &&
+ (value[8] == '\0' || value[8] == ' '))) {
+ if (request->flags.no_connection_auth) {
+ httpHeaderDelAt(hdr, pos);
+ continue;
+ }
+ request->flags.must_keepalive = 1;
+ break;
+ }
+ }
+ }
+ }
/* Handle authentication headers */
if (request->auth_user_request)
authenticateFixHeader(rep, request->auth_user_request, request, http->flags.accel, 0);
@@ -2114,7 +2148,7 @@
* rely on the http structure for this...
*/
http->sc = NULL;
- storeLocateVary(e, e->mem_obj->reply->hdr_sz, r->vary_headers, clientProcessVary, http);
+ storeLocateVary(e, e->mem_obj->reply->hdr_sz, r->vary_headers, httpHeaderGetStrOrList(&r->header, HDR_ACCEPT_ENCODING), clientProcessVary, http);
storeClientUnregister(sc, e, http);
storeUnlockObject(e);
/* Note: varyEvalyateMatch updates the request with vary information
@@ -2197,6 +2231,7 @@
* both have a stale version of the object.
*/
r->flags.need_validation = 1;
+#if 0
if (e->lastmod < 0) {
/*
* Previous reply didn't have a Last-Modified header,
@@ -2204,7 +2239,9 @@
*/
http->log_type = LOG_TCP_MISS;
clientProcessMiss(http);
- } else if (r->flags.nocache) {
+ } else
+#endif
+ if (r->flags.nocache) {
/*
* This did not match a refresh pattern that overrides no-cache
* we should honour the client no-cache header.
diff -ruN squid-2.6.PRE2/src/comm.c squid-2.6.RC1/src/comm.c
--- squid-2.6.PRE2/src/comm.c Mon May 29 10:32:39 2006
+++ squid-2.6.RC1/src/comm.c Sun Jun 11 11:06:25 2006
@@ -1,6 +1,6 @@
/*
- * $Id: comm.c,v 1.347 2006/05/29 16:32:39 hno Exp $
+ * $Id: comm.c,v 1.351 2006/06/11 17:06:25 serassio Exp $
*
* DEBUG: section 5 Socket Functions
* AUTHOR: Harvest Derived
@@ -214,7 +214,10 @@
if ((flags & COMM_REUSEADDR))
commSetReuseAddr(new_socket);
if (port > (u_short) 0) {
- commSetNoLinger(new_socket);
+#ifdef _SQUID_MSWIN_
+ if (sock_type != SOCK_DGRAM)
+#endif
+ commSetNoLinger(new_socket);
if (opt_reuseaddr)
commSetReuseAddr(new_socket);
}
@@ -341,6 +344,13 @@
fdAdjustReserved();
return 0;
}
+ /* We are about to close the fd (dup2 over it). Unregister from the event loop */
+ commSetEvents(cs->fd, 0, 0);
+#ifdef _SQUID_MSWIN_
+ /* On Windows dup2() can't work correctly on Sockets, the */
+ /* workaround is to close the destination Socket before call them. */
+ close(cs->fd);
+#endif
if (dup2(fd2, cs->fd) < 0) {
debug(5, 0) ("commResetFD: dup2: %s\n", xstrerror());
if (ENFILE == errno || EMFILE == errno)
@@ -375,10 +385,8 @@
commSetTcpNoDelay(cs->fd);
#endif
- /* If we are using epoll(), we need to notify the kernel about the new
- * fd instance
- */
- commUpdateEvents(cs->fd, 1);
+ /* Register the new FD with the event loop */
+ commUpdateEvents(cs->fd);
if (Config.tcpRcvBufsz > 0)
commSetTcpRcvbuf(cs->fd, Config.tcpRcvBufsz);
return 1;
@@ -779,16 +787,16 @@
}
void
-commUpdateEvents(int fd, int force)
+commUpdateEvents(int fd)
{
fde *F = &fd_table[fd];
int need_read = 0;
int need_write = 0;
+ assert(F->flags.open);
+
if (F->read_handler
-#if USE_EPOLL
- && !F->epoll_backoff
-#endif
+ && !F->backoff
) {
switch (F->read_pending) {
case COMM_PENDING_NORMAL:
@@ -823,7 +831,7 @@
break;
}
}
- commSetEvents(fd, need_read, need_write, force);
+ commSetEvents(fd, need_read, need_write);
}
void
@@ -833,7 +841,7 @@
fd_table[fd].read_data = data;
if (!handler)
fd_table[fd].read_pending = COMM_PENDING_NORMAL;
- commUpdateEvents(fd, 0);
+ commUpdateEvents(fd);
}
void
@@ -843,7 +851,7 @@
fd_table[fd].write_data = data;
if (!handler)
fd_table[fd].write_pending = COMM_PENDING_NORMAL;
- commUpdateEvents(fd, 0);
+ commUpdateEvents(fd);
}
void
@@ -931,8 +939,10 @@
int
commSetNonBlocking(int fd)
{
+#ifndef _SQUID_MSWIN_
int flags;
int dummy = 0;
+#endif
#ifdef _SQUID_WIN32_
int nonblocking = TRUE;
#ifdef _SQUID_CYGWIN_
@@ -946,6 +956,7 @@
} else {
#endif
#endif
+#ifndef _SQUID_MSWIN_
if ((flags = fcntl(fd, F_GETFL, dummy)) < 0) {
debug(50, 0) ("FD %d: fcntl F_GETFL: %s\n", fd, xstrerror());
return COMM_ERROR;
@@ -954,6 +965,7 @@
debug(50, 0) ("commSetNonBlocking: FD %d: %s\n", fd, xstrerror());
return COMM_ERROR;
}
+#endif
#ifdef _SQUID_CYGWIN_
}
#endif
@@ -964,6 +976,10 @@
int
commUnsetNonBlocking(int fd)
{
+#ifdef _SQUID_MSWIN_
+ int nonblocking = FALSE;
+ if (ioctlsocket(fd, FIONBIO, (unsigned long *) &nonblocking) < 0) {
+#else
int flags;
int dummy = 0;
if ((flags = fcntl(fd, F_GETFL, dummy)) < 0) {
@@ -971,6 +987,7 @@
return COMM_ERROR;
}
if (fcntl(fd, F_SETFL, flags & (~SQUID_NONBLOCK)) < 0) {
+#endif
debug(50, 0) ("commUnsetNonBlocking: FD %d: %s\n", fd, xstrerror());
return COMM_ERROR;
}
diff -ruN squid-2.6.PRE2/src/comm_epoll.c squid-2.6.RC1/src/comm_epoll.c
--- squid-2.6.PRE2/src/comm_epoll.c Sat Jun 3 17:19:17 2006
+++ squid-2.6.RC1/src/comm_epoll.c Thu Jun 8 06:53:20 2006
@@ -1,6 +1,6 @@
/*
- * $Id: comm_epoll.c,v 1.15 2006/06/03 23:19:17 hno Exp $
+ * $Id: comm_epoll.c,v 1.22 2006/06/08 12:53:20 hno Exp $
*
* DEBUG: section 5 Socket Functions
*
@@ -34,7 +34,7 @@
#include "squid.h"
-static int MAX_POLL_TIME = 1000; /* see also comm_quick_poll_required() */
+#include
#define MAX_EVENTS 256 /* max events to process in one go */
@@ -42,10 +42,9 @@
static int kdpfd;
static struct epoll_event events[MAX_EVENTS];
static int epoll_fds = 0;
+static unsigned *epoll_state; /* keep track of the epoll state */
-static void checkTimeouts(void);
-static int commDeferRead(int fd);
-
+#include "comm_generic.c"
static const char *
epolltype_atoi(int x)
@@ -66,68 +65,36 @@
}
}
-/* Defer reads from this fd */
-void
-commDeferFD(int fd)
-{
- fde *F = &fd_table[fd];
-
- assert(fd >= 0);
- assert(F->flags.open);
-
- if (F->epoll_backoff)
- return;
-
- F->epoll_backoff = 1;
- commUpdateEvents(fd, 0);
-}
-
-/* Resume reading from the given fd */
-void
-commResumeFD(int fd)
-{
- fde *F = &fd_table[fd];
-
- assert(fd >= 0);
- assert(F->flags.open);
-
- if (!F->epoll_backoff)
- return;
-
- F->epoll_backoff = 0;
- commUpdateEvents(fd, 0);
-}
-
void
comm_select_init()
{
- kdpfd = epoll_create(SQUID_MAXFD);
+ kdpfd = epoll_create(Squid_MaxFD);
fd_open(kdpfd, FD_UNKNOWN, "epoll ctl");
commSetCloseOnExec(kdpfd);
if (kdpfd < 0) {
fatalf("comm_select_init: epoll_create(): %s\n", xstrerror());
}
+ epoll_state = xcalloc(Squid_MaxFD, sizeof(*epoll_state));
}
void
comm_select_shutdown()
{
- close(kdpfd);
fd_close(kdpfd);
+ close(kdpfd);
kdpfd = -1;
+ safe_free(epoll_state);
}
void
-commSetEvents(int fd, int need_read, int need_write, int force)
+commSetEvents(int fd, int need_read, int need_write)
{
- fde *F = &fd_table[fd];
int epoll_ctl_type = 0;
struct epoll_event ev;
assert(fd >= 0);
- assert(F->flags.open);
- debug(5, 8) ("commUpdateEvents(fd=%d)\n", fd);
+ debug(5, 8) ("commSetEvents(fd=%d)\n", fd);
if (RUNNING_ON_VALGRIND) {
/* Keep valgrind happy.. complains about uninitialized bytes otherwise */
@@ -136,7 +103,7 @@
ev.events = 0;
ev.data.fd = fd;
- if (need_read & !F->epoll_backoff)
+ if (need_read)
ev.events |= EPOLLIN;
if (need_write)
@@ -145,23 +112,21 @@
if (ev.events)
ev.events |= EPOLLHUP | EPOLLERR;
- /* If the type is 0, force adding the fd to the epoll set */
- if (force)
- F->epoll_state = 0;
-
- if (ev.events != F->epoll_state) {
+ if (ev.events != epoll_state[fd]) {
/* If the struct is already in epoll MOD or DEL, else ADD */
- if (F->epoll_state) {
- epoll_ctl_type = ev.events ? EPOLL_CTL_MOD : EPOLL_CTL_DEL;
+ if (!ev.events) {
+ epoll_ctl_type = EPOLL_CTL_DEL;
+ } else if (epoll_state[fd]) {
+ epoll_ctl_type = EPOLL_CTL_MOD;
} else {
epoll_ctl_type = EPOLL_CTL_ADD;
}
/* Update the state */
- F->epoll_state = ev.events;
+ epoll_state[fd] = ev.events;
if (epoll_ctl(kdpfd, epoll_ctl_type, fd, &ev) < 0) {
- debug(5, 1) ("commSetSelect: epoll_ctl(%s): failed on fd=%d: %s\n",
+ debug(5, 1) ("commSetEvents: epoll_ctl(%s): failed on fd=%d: %s\n",
epolltype_atoi(epoll_ctl_type), fd, xstrerror());
}
switch (epoll_ctl_type) {
@@ -177,89 +142,6 @@
}
}
-static void
-comm_call_handlers(int fd, int read_event, int write_event)
-{
- fde *F = &fd_table[fd];
- debug(5, 8) ("comm_call_handlers(): got fd=%d read_event=%x write_event=%x F->read_handler=%p F->write_handler=%p\n"
- ,fd, read_event, write_event, F->read_handler, F->write_handler);
- if (F->read_handler) {
- int do_read = 0;
- switch (F->read_pending) {
- case COMM_PENDING_NORMAL:
- case COMM_PENDING_WANTS_READ:
- do_read = read_event;
- break;
- case COMM_PENDING_WANTS_WRITE:
- do_read = write_event;
- break;
- case COMM_PENDING_NOW:
- do_read = 1;
- break;
- }
- if (do_read) {
- PF *hdl = F->read_handler;
- void *hdl_data = F->read_data;
- /* If the descriptor is meant to be deferred, don't handle */
- switch (commDeferRead(fd)) {
- case 1:
- if (!(F->epoll_backoff)) {
- debug(5, 1) ("comm_epoll(): WARNING defer handler for fd=%d (desc=%s) does not call commDeferFD() - backing off manually\n", fd, F->desc);
- commDeferFD(fd);
- }
- break;
- default:
- debug(5, 8) ("comm_epoll(): Calling read handler on fd=%d\n", fd);
-#if SIMPLE_COMM_HANDLER
- commUpdateReadHandler(fd, NULL, NULL);
- hdl(fd, hdl_data);
-#else
- /* Optimized version to avoid the fd bouncing in/out of the waited set */
- F->read_handler = NULL;
- F->read_data = NULL;
- F->read_pending = COMM_PENDING_NORMAL;
- hdl(fd, hdl_data);
- if (F->flags.open && !F->read_handler)
- commUpdateEvents(fd, 0);
-#endif
- statCounter.select_fds++;
- }
- }
- }
- if (F->write_handler) {
- int do_write = 0;
- switch (F->write_pending) {
- case COMM_PENDING_WANTS_READ:
- do_write = read_event;
- break;
- case COMM_PENDING_NORMAL:
- case COMM_PENDING_WANTS_WRITE:
- do_write = write_event;
- break;
- case COMM_PENDING_NOW:
- do_write = 1;
- break;
- }
- if (do_write) {
- PF *hdl = F->write_handler;
- void *hdl_data = F->write_data;
-#if SIMPLE_COMM_HANDLER
- commUpdateWriteHandler(fd, NULL, NULL);
- hdl(fd, hdl_data);
-#else
- /* Optimized version to avoid the fd bouncing in/out of the waited set */
- F->write_handler = NULL;
- F->write_data = NULL;
- F->write_pending = COMM_PENDING_NORMAL;
- hdl(fd, hdl_data);
- if (F->flags.open)
- commUpdateEvents(fd, 0);
-#endif
- statCounter.select_fds++;
- }
- }
-}
-
int
comm_select(int msec)
{
@@ -268,10 +150,10 @@
int num;
int fd;
struct epoll_event *cevents;
- double timeout;
double start = current_dtime;
- timeout = current_dtime + (msec / 1000.0);
+ if (msec > MAX_POLL_TIME)
+ msec = MAX_POLL_TIME;
debug(50, 3) ("comm_epoll: timeout %d\n", msec);
@@ -314,50 +196,4 @@
debug(5, 8) ("comm_epoll: time out: %ld.\n", (long int) squid_curtime);
return COMM_TIMEOUT;
}
-}
-
-static int
-commDeferRead(int fd)
-{
- fde *F = &fd_table[fd];
- if (F->defer_check == NULL)
- return 0;
- return F->defer_check(fd, F->defer_data);
-}
-
-static void
-checkTimeouts(void)
-{
- int fd;
- fde *F = NULL;
- PF *callback;
- for (fd = 0; fd <= Biggest_FD; fd++) {
- F = &fd_table[fd];
- if (!F->flags.open)
- continue;
- if (F->epoll_backoff)
- commResumeFD(fd);
- if (F->timeout == 0)
- continue;
- if (F->timeout > squid_curtime)
- continue;
- debug(5, 5) ("checkTimeouts: FD %d Expired\n", fd);
- if (F->timeout_handler) {
- debug(5, 5) ("checkTimeouts: FD %d: Call timeout handler\n", fd);
- callback = F->timeout_handler;
- F->timeout_handler = NULL;
- callback(fd, F->timeout_data);
- } else {
- debug(5, 5) ("checkTimeouts: FD %d: Forcing comm_close()\n", fd);
- comm_close(fd);
- }
- }
-}
-
-
-/* Called by async-io or diskd to speed up the polling */
-void
-comm_quick_poll_required(void)
-{
- MAX_POLL_TIME = 10;
}
diff -ruN squid-2.6.PRE2/src/comm_generic.c squid-2.6.RC1/src/comm_generic.c
--- squid-2.6.PRE2/src/comm_generic.c Wed Dec 31 17:00:00 1969
+++ squid-2.6.RC1/src/comm_generic.c Thu Jun 8 17:14:22 2006
@@ -0,0 +1,201 @@
+
+/*
+ * $Id: comm_generic.c,v 1.3 2006/06/08 23:14:22 hno Exp $
+ *
+ * DEBUG: section 5 Socket Functions
+ *
+ * SQUID Web Proxy Cache http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ * Squid is the result of efforts by numerous individuals from
+ * the Internet community; see the CONTRIBUTORS file for full
+ * details. Many organizations have provided support for Squid's
+ * development; see the SPONSORS file for full details. Squid is
+ * Copyrighted (C) 2001 by the Regents of the University of
+ * California; see the COPYRIGHT file for full details. Squid
+ * incorporates software developed and/or copyrighted by other
+ * sources; see the CREDITS file for full details.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+
+/* This file is not compiled separately. Instead it's included into
+ * the comm loops using it
+ */
+
+static int MAX_POLL_TIME = 1000; /* see also comm_quick_poll_required() */
+
+/* Defer reads from this fd */
+void
+commDeferFD(int fd)
+{
+ fde *F = &fd_table[fd];
+
+ assert(fd >= 0);
+ assert(F->flags.open);
+
+ if (F->backoff)
+ return;
+
+ F->backoff = 1;
+ commUpdateEvents(fd);
+}
+
+/* Resume reading from the given fd */
+void
+commResumeFD(int fd)
+{
+ fde *F = &fd_table[fd];
+
+ assert(fd >= 0);
+ assert(F->flags.open);
+
+ if (!F->backoff)
+ return;
+
+ F->backoff = 0;
+ commUpdateEvents(fd);
+}
+
+static int
+commDeferRead(int fd)
+{
+ fde *F = &fd_table[fd];
+ if (F->defer_check == NULL)
+ return 0;
+ return F->defer_check(fd, F->defer_data);
+}
+
+static void
+comm_call_handlers(int fd, int read_event, int write_event)
+{
+ fde *F = &fd_table[fd];
+ debug(5, 8) ("comm_call_handlers(): got fd=%d read_event=%x write_event=%x F->read_handler=%p F->write_handler=%p\n"
+ ,fd, read_event, write_event, F->read_handler, F->write_handler);
+ if (F->read_handler) {
+ int do_read = 0;
+ switch (F->read_pending) {
+ case COMM_PENDING_NORMAL:
+ case COMM_PENDING_WANTS_READ:
+ do_read = read_event;
+ break;
+ case COMM_PENDING_WANTS_WRITE:
+ do_read = write_event;
+ break;
+ case COMM_PENDING_NOW:
+ do_read = 1;
+ break;
+ }
+ if (do_read) {
+ PF *hdl = F->read_handler;
+ void *hdl_data = F->read_data;
+ /* If the descriptor is meant to be deferred, don't handle */
+ switch (commDeferRead(fd)) {
+ case 1:
+ if (!(F->backoff)) {
+ debug(5, 1) ("comm_call_handlers(): WARNING defer handler for fd=%d (desc=%s) does not call commDeferFD() - backing off manually\n", fd, F->desc);
+ commDeferFD(fd);
+ }
+ break;
+ default:
+ debug(5, 8) ("comm_call_handlers(): Calling read handler on fd=%d\n", fd);
+#if SIMPLE_COMM_HANDLER
+ commUpdateReadHandler(fd, NULL, NULL);
+ hdl(fd, hdl_data);
+#else
+ /* Optimized version to avoid the fd bouncing in/out of the waited set */
+ F->read_handler = NULL;
+ F->read_data = NULL;
+ F->read_pending = COMM_PENDING_NORMAL;
+ hdl(fd, hdl_data);
+ if (F->flags.open && !F->read_handler)
+ commUpdateEvents(fd);
+#endif
+ statCounter.select_fds++;
+ }
+ }
+ }
+ if (F->write_handler) {
+ int do_write = 0;
+ switch (F->write_pending) {
+ case COMM_PENDING_WANTS_READ:
+ do_write = read_event;
+ break;
+ case COMM_PENDING_NORMAL:
+ case COMM_PENDING_WANTS_WRITE:
+ do_write = write_event;
+ break;
+ case COMM_PENDING_NOW:
+ do_write = 1;
+ break;
+ }
+ if (do_write) {
+ PF *hdl = F->write_handler;
+ void *hdl_data = F->write_data;
+#if SIMPLE_COMM_HANDLER
+ commUpdateWriteHandler(fd, NULL, NULL);
+ hdl(fd, hdl_data);
+#else
+ /* Optimized version to avoid the fd bouncing in/out of the waited set */
+ F->write_handler = NULL;
+ F->write_data = NULL;
+ F->write_pending = COMM_PENDING_NORMAL;
+ hdl(fd, hdl_data);
+ if (F->flags.open)
+ commUpdateEvents(fd);
+#endif
+ statCounter.select_fds++;
+ }
+ }
+}
+
+static void
+checkTimeouts(void)
+{
+ int fd;
+ fde *F = NULL;
+ PF *callback;
+ for (fd = 0; fd <= Biggest_FD; fd++) {
+ F = &fd_table[fd];
+ if (!F->flags.open)
+ continue;
+ if (F->backoff)
+ commResumeFD(fd);
+ if (F->timeout == 0)
+ continue;
+ if (F->timeout > squid_curtime)
+ continue;
+ debug(5, 5) ("checkTimeouts: FD %d Expired\n", fd);
+ if (F->timeout_handler) {
+ debug(5, 5) ("checkTimeouts: FD %d: Call timeout handler\n", fd);
+ callback = F->timeout_handler;
+ F->timeout_handler = NULL;
+ callback(fd, F->timeout_data);
+ } else {
+ debug(5, 5) ("checkTimeouts: FD %d: Forcing comm_close()\n", fd);
+ comm_close(fd);
+ }
+ }
+}
+
+
+/* Called by async-io or diskd to speed up the polling */
+void
+comm_quick_poll_required(void)
+{
+ MAX_POLL_TIME = 10;
+}
diff -ruN squid-2.6.PRE2/src/comm_kqueue.c squid-2.6.RC1/src/comm_kqueue.c
--- squid-2.6.PRE2/src/comm_kqueue.c Wed Dec 31 17:00:00 1969
+++ squid-2.6.RC1/src/comm_kqueue.c Thu Jun 8 06:53:20 2006
@@ -0,0 +1,186 @@
+
+/*
+ * $Id: comm_kqueue.c,v 1.5 2006/06/08 12:53:20 hno Exp $
+ *
+ * DEBUG: section 5 Socket Functions
+ *
+ * SQUID Web Proxy Cache http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ * Squid is the result of efforts by numerous individuals from
+ * the Internet community; see the CONTRIBUTORS file for full
+ * details. Many organizations have provided support for Squid's
+ * development; see the SPONSORS file for full details. Squid is
+ * Copyrighted (C) 2001 by the Regents of the University of
+ * California; see the COPYRIGHT file for full details. Squid
+ * incorporates software developed and/or copyrighted by other
+ * sources; see the CREDITS file for full details.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+#include "squid.h"
+#include "comm_generic.c"
+
+#if HAVE_SYS_EVENT_H
+#include
+#endif
+
+#define KE_LENGTH 128
+#define STATE_READ 1
+#define STATE_WRITE 2
+
+static int kq;
+static struct timespec zero_timespec;
+static struct kevent *kqlst; /* kevent buffer */
+static int kqmax; /* max structs to buffer */
+static int kqoff; /* offset into the buffer */
+static unsigned *kqueue_state; /* keep track of the kqueue state */
+
+void
+comm_select_init()
+{
+ kq = kqueue();
+ fd_open(kq, FD_UNKNOWN, "kqueue ctl");
+ commSetCloseOnExec(kq);
+
+ if (kq < 0) {
+ fatalf("comm_select_init: kqueue(): %s\n", xstrerror());
+ }
+ kqmax = getdtablesize();
+ kqlst = xmalloc(sizeof(*kqlst) * kqmax);
+ kqueue_state = xcalloc(Squid_MaxFD, sizeof(*kqueue_state));
+ zero_timespec.tv_sec = 0;
+ zero_timespec.tv_nsec = 0;
+}
+
+void
+comm_select_shutdown()
+{
+ fd_close(kq);
+ close(kq);
+ kq = -1;
+ safe_free(kqueue_state);
+}
+
+void
+commSetEvents(int fd, int need_read, int need_write)
+{
+ struct kevent *kep;
+ int st_read = (kqueue_state[fd] & STATE_READ) != 0;
+ int st_write = (kqueue_state[fd] & STATE_WRITE) != 0;
+
+ assert(fd >= 0);
+ debug(5, 8) ("commSetEvents(fd=%d)\n", fd);
+
+ kep = kqlst + kqoff;
+
+ if (need_read != st_read) {
+ EV_SET(kep, (uintptr_t) fd, EVFILT_READ,
+ need_read ? EV_ADD : EV_DELETE, 0, 0, 0);
+ kqoff++;
+ kep++;
+ }
+ if (need_write != st_write) {
+ EV_SET(kep, (uintptr_t) fd, EVFILT_WRITE,
+ need_write ? EV_ADD : EV_DELETE, 0, 0, 0);
+ kqoff++;
+ kep++;
+ }
+ kqueue_state[fd] = (need_read ? STATE_READ : 0) |
+ (need_write ? STATE_WRITE : 0);
+
+ if (kqoff >= kqmax - 2) {
+ if (kevent(kq, kqlst, kqoff, NULL, 0, &zero_timespec) == -1) {
+ debug(5, 1) ("commSetEvents(): kevent() failed on fd=%d: %s\n",
+ fd, xstrerror());
+ return;
+ }
+ kqoff = 0;
+ }
+}
+
+int
+comm_select(int msec)
+{
+ static time_t last_timeout = 0;
+ int i;
+ int num;
+ double start = current_dtime;
+ static struct kevent ke[KE_LENGTH];
+ struct timespec timeout;
+
+ if (msec > MAX_POLL_TIME)
+ msec = MAX_POLL_TIME;
+
+ timeout.tv_sec = msec / 1000;
+ timeout.tv_nsec = (msec % 1000) * 1000000;
+
+ debug(50, 3) ("comm_kqueue: timeout %d\n", msec);
+
+ /* Check for disk io callbacks */
+ storeDirCallback();
+
+ /* Check timeouts once per second */
+ if (last_timeout != squid_curtime) {
+ last_timeout = squid_curtime;
+ checkTimeouts();
+ }
+ statCounter.syscalls.polls++;
+ num = kevent(kq, kqlst, kqoff, ke, KE_LENGTH, &timeout);
+ statCounter.select_loops++;
+ kqoff = 0;
+
+ if (num < 0) {
+ getCurrentTime();
+ if (ignoreErrno(errno))
+ return COMM_OK;
+
+ debug(5, 1) ("comm_kqueue: kevent failure: %s\n", xstrerror());
+ return COMM_ERROR;
+ }
+ if (num == 0) {
+ getCurrentTime();
+ return COMM_TIMEOUT;
+ }
+ statHistCount(&statCounter.select_fds_hist, num);
+
+ for (i = 0; i < num; i++) {
+ int fd = (int) ke[i].ident;
+ if (ke[i].flags & EV_ERROR) {
+ errno = ke[i].data;
+ debug(5, 3) ("comm_kqueue: kqueue event error: %s\n",
+ xstrerror());
+ continue; /* XXX! */
+ }
+ switch (ke[i].filter) {
+ case EVFILT_READ:
+ comm_call_handlers(fd, 1, 0);
+ break;
+ case EVFILT_WRITE:
+ comm_call_handlers(fd, 0, 1);
+ break;
+ default:
+ debug(5, 1) ("comm_kqueue: unexpected event: %d\n",
+ ke[i].filter);
+ break;
+ }
+ }
+
+ getCurrentTime();
+ statCounter.select_time += (current_dtime - start);
+ return COMM_OK;
+}
diff -ruN squid-2.6.PRE2/src/comm_poll.c squid-2.6.RC1/src/comm_poll.c
--- squid-2.6.PRE2/src/comm_poll.c Sat Jun 3 14:26:19 2006
+++ squid-2.6.RC1/src/comm_poll.c Fri Jun 9 13:13:37 2006
@@ -1,6 +1,6 @@
/*
- * $Id: comm_poll.c,v 1.13 2006/06/03 20:26:19 hno Exp $
+ * $Id: comm_poll.c,v 1.17 2006/06/09 19:13:37 serassio Exp $
*
* DEBUG: section 5 Socket Functions
*
@@ -34,7 +34,11 @@
#include "squid.h"
+#if HAVE_SYS_POLL_H
#include
+#elif HAVE_POLL_H
+#include
+#endif
static int MAX_POLL_TIME = 1000; /* see also comm_quick_poll_required() */
@@ -284,7 +288,7 @@
{
struct pollfd pfds[SQUID_MAXFD];
#if DELAY_POOLS
- fd_set slowfds;
+ char slowfds[SQUID_MAXFD];
#endif
int fd;
unsigned int i;
@@ -303,7 +307,7 @@
/* Handle any fs callbacks that need doing */
storeDirCallback();
#if DELAY_POOLS
- FD_ZERO(&slowfds);
+ memset(slowfds, 0, Biggest_FD);
#endif
if (commCheckICPIncoming)
comm_poll_icp_incoming();
@@ -329,7 +333,7 @@
break;
#if DELAY_POOLS
case -1:
- FD_SET(i, &slowfds);
+ slowfds[i] = 1;
break;
#endif
default:
@@ -458,7 +462,7 @@
if (hdl == NULL)
(void) 0; /* Nothing to do */
#if DELAY_POOLS
- else if (FD_ISSET(fd, &slowfds))
+ else if (slowfds[i])
commAddSlowFd(fd);
#endif
else {
@@ -606,7 +610,7 @@
}
void
-commSetEvents(int fd, int need_read, int need_write, int force)
+commSetEvents(int fd, int need_read, int need_write)
{
/* XXX Here we could optimize the poll arrays quite considerably */
}
diff -ruN squid-2.6.PRE2/src/comm_select.c squid-2.6.RC1/src/comm_select.c
--- squid-2.6.PRE2/src/comm_select.c Thu Jun 1 18:07:40 2006
+++ squid-2.6.RC1/src/comm_select.c Thu Jun 8 06:53:20 2006
@@ -1,6 +1,6 @@
/*
- * $Id: comm_select.c,v 1.73 2006/06/02 00:07:40 hno Exp $
+ * $Id: comm_select.c,v 1.75 2006/06/08 12:53:20 hno Exp $
*
* DEBUG: section 5 Socket Functions
*
@@ -34,6 +34,10 @@
#include "squid.h"
+#if HAVE_SYS_SELECT_H
+#include
+#endif
+
static int MAX_POLL_TIME = 1000; /* see also comm_quick_poll_required() */
#ifndef howmany
@@ -656,7 +660,7 @@
}
void
-commSetEvents(int fd, int need_read, int need_write, int force)
+commSetEvents(int fd, int need_read, int need_write)
{
if (need_read && !FD_ISSET(fd, &global_readfds)) {
FD_SET(fd, &global_readfds);
diff -ruN squid-2.6.PRE2/src/comm_select_win32.c squid-2.6.RC1/src/comm_select_win32.c
--- squid-2.6.PRE2/src/comm_select_win32.c Wed Dec 31 17:00:00 1969
+++ squid-2.6.RC1/src/comm_select_win32.c Sun Jun 11 11:06:25 2006
@@ -0,0 +1,775 @@
+
+/*
+ * $Id: comm_select_win32.c,v 1.1 2006/06/11 17:06:25 serassio Exp $
+ *
+ * DEBUG: section 5 Socket Functions
+ *
+ * SQUID Web Proxy Cache http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ * Squid is the result of efforts by numerous individuals from
+ * the Internet community; see the CONTRIBUTORS file for full
+ * details. Many organizations have provided support for Squid's
+ * development; see the SPONSORS file for full details. Squid is
+ * Copyrighted (C) 2001 by the Regents of the University of
+ * California; see the COPYRIGHT file for full details. Squid
+ * incorporates software developed and/or copyrighted by other
+ * sources; see the CREDITS file for full details.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+#include "squid.h"
+
+static int MAX_POLL_TIME = 1000; /* see also comm_quick_poll_required() */
+
+/* STATIC */
+static int examine_select(fd_set *, fd_set *);
+static int fdIsHttp(int fd);
+static int fdIsIcp(int fd);
+static int fdIsDns(int fd);
+static int commDeferRead(int fd);
+static void checkTimeouts(void);
+static OBJH commIncomingStats;
+static int comm_check_incoming_select_handlers(int nfds, int *fds);
+static void comm_select_dns_incoming(void);
+
+static struct timeval zero_tv;
+static fd_set global_readfds;
+static fd_set global_writefds;
+static int nreadfds;
+static int nwritefds;
+
+/*
+ * Automatic tuning for incoming requests:
+ *
+ * INCOMING sockets are the ICP and HTTP ports. We need to check these
+ * fairly regularly, but how often? When the load increases, we
+ * want to check the incoming sockets more often. If we have a lot
+ * of incoming ICP, then we need to check these sockets more than
+ * if we just have HTTP.
+ *
+ * The variables 'incoming_icp_interval' and 'incoming_http_interval'
+ * determine how many normal I/O events to process before checking
+ * incoming sockets again. Note we store the incoming_interval
+ * multipled by a factor of (2^INCOMING_FACTOR) to have some
+ * pseudo-floating point precision.
+ *
+ * The variable 'icp_io_events' and 'http_io_events' counts how many normal
+ * I/O events have been processed since the last check on the incoming
+ * sockets. When io_events > incoming_interval, its time to check incoming
+ * sockets.
+ *
+ * Every time we check incoming sockets, we count how many new messages
+ * or connections were processed. This is used to adjust the
+ * incoming_interval for the next iteration. The new incoming_interval
+ * is calculated as the current incoming_interval plus what we would
+ * like to see as an average number of events minus the number of
+ * events just processed.
+ *
+ * incoming_interval = incoming_interval + target_average - number_of_events_processed
+ *
+ * There are separate incoming_interval counters for both HTTP and ICP events
+ *
+ * You can see the current values of the incoming_interval's, as well as
+ * a histogram of 'incoming_events' by asking the cache manager
+ * for 'comm_incoming', e.g.:
+ *
+ * % ./client mgr:comm_incoming
+ *
+ * Caveats:
+ *
+ * - We have MAX_INCOMING_INTEGER as a magic upper limit on
+ * incoming_interval for both types of sockets. At the
+ * largest value the cache will effectively be idling.
+ *
+ * - The higher the INCOMING_FACTOR, the slower the algorithm will
+ * respond to load spikes/increases/decreases in demand. A value
+ * between 3 and 8 is recommended.
+ */
+
+#define MAX_INCOMING_INTEGER 256
+#define INCOMING_FACTOR 5
+#define MAX_INCOMING_INTERVAL (MAX_INCOMING_INTEGER << INCOMING_FACTOR)
+static int icp_io_events = 0;
+static int dns_io_events = 0;
+static int http_io_events = 0;
+static int incoming_icp_interval = 16 << INCOMING_FACTOR;
+static int incoming_dns_interval = 16 << INCOMING_FACTOR;
+static int incoming_http_interval = 16 << INCOMING_FACTOR;
+#define commCheckICPIncoming (++icp_io_events > (incoming_icp_interval>> INCOMING_FACTOR))
+#define commCheckDNSIncoming (++dns_io_events > (incoming_dns_interval>> INCOMING_FACTOR))
+#define commCheckHTTPIncoming (++http_io_events > (incoming_http_interval>> INCOMING_FACTOR))
+
+static int
+fdIsIcp(int fd)
+{
+ if (fd == theInIcpConnection)
+ return 1;
+ if (fd == theOutIcpConnection)
+ return 1;
+ return 0;
+}
+
+static int
+fdIsDns(int fd)
+{
+ if (fd == DnsSocket)
+ return 1;
+ return 0;
+}
+
+static int
+fdIsHttp(int fd)
+{
+ int j;
+ for (j = 0; j < NHttpSockets; j++) {
+ if (fd == HttpSockets[j])
+ return 1;
+ }
+ return 0;
+}
+
+#if DELAY_POOLS
+static int slowfdcnt = 0;
+static int slowfdarr[SQUID_MAXFD];
+
+static void
+commAddSlowFd(int fd)
+{
+ assert(slowfdcnt < SQUID_MAXFD);
+ slowfdarr[slowfdcnt++] = fd;
+}
+
+static int
+commGetSlowFd(void)
+{
+ int whichfd, retfd;
+
+ if (!slowfdcnt)
+ return -1;
+ whichfd = squid_random() % slowfdcnt;
+ retfd = slowfdarr[whichfd];
+ slowfdarr[whichfd] = slowfdarr[--slowfdcnt];
+ return retfd;
+}
+#endif
+
+static int
+comm_check_incoming_select_handlers(int nfds, int *fds)
+{
+ int i;
+ int fd;
+ int maxfd = 0;
+ fd_set read_mask;
+ fd_set write_mask;
+ fd_set errfds;
+ FD_ZERO(&errfds);
+ FD_ZERO(&read_mask);
+ FD_ZERO(&write_mask);
+ incoming_sockets_accepted = 0;
+ for (i = 0; i < nfds; i++) {
+ fd = fds[i];
+ if (fd_table[fd].read_handler) {
+ FD_SET(fd, &read_mask);
+ if (fd > maxfd)
+ maxfd = fd;
+ }
+ if (fd_table[fd].write_handler) {
+ FD_SET(fd, &write_mask);
+ if (fd > maxfd)
+ maxfd = fd;
+ }
+ }
+ if (maxfd++ == 0)
+ return -1;
+ getCurrentTime();
+ statCounter.syscalls.selects++;
+ if (select(maxfd, &read_mask, &write_mask, &errfds, &zero_tv) < 1)
+ return incoming_sockets_accepted;
+ for (i = 0; i < nfds; i++) {
+ fd = fds[i];
+ if (__WSAFDIsSet(fd_table[fd].win32.handle, &read_mask)) {
+ PF *hdl = fd_table[fd].read_handler;
+ void *hdl_data = fd_table[fd].read_data;
+ commUpdateReadHandler(fd, NULL, NULL);
+ if (hdl)
+ hdl(fd, hdl_data);
+ else
+ debug(5, 1) ("comm_select_incoming: FD %d NULL read handler\n", fd);
+ }
+ if (__WSAFDIsSet(fd_table[fd].win32.handle, &write_mask)) {
+ PF *hdl = fd_table[fd].write_handler;
+ void *hdl_data = fd_table[fd].write_data;
+ commUpdateWriteHandler(fd, NULL, NULL);
+ if (hdl)
+ hdl(fd, hdl_data);
+ else
+ debug(5, 1) ("comm_select_incoming: FD %d NULL write handler\n", fd);
+ }
+ }
+ return incoming_sockets_accepted;
+}
+
+static void
+comm_select_icp_incoming(void)
+{
+ int nfds = 0;
+ int fds[2];
+ int nevents;
+ icp_io_events = 0;
+ if (theInIcpConnection >= 0)
+ fds[nfds++] = theInIcpConnection;
+ if (theInIcpConnection != theOutIcpConnection)
+ if (theOutIcpConnection >= 0)
+ fds[nfds++] = theOutIcpConnection;
+ if (nfds == 0)
+ return;
+ nevents = comm_check_incoming_select_handlers(nfds, fds);
+ incoming_icp_interval += Config.comm_incoming.icp_average - nevents;
+ if (incoming_icp_interval < 0)
+ incoming_icp_interval = 0;
+ if (incoming_icp_interval > MAX_INCOMING_INTERVAL)
+ incoming_icp_interval = MAX_INCOMING_INTERVAL;
+ if (nevents > INCOMING_ICP_MAX)
+ nevents = INCOMING_ICP_MAX;
+ statHistCount(&statCounter.comm_icp_incoming, nevents);
+}
+
+static void
+comm_select_http_incoming(void)
+{
+ int nfds = 0;
+ int fds[MAXHTTPPORTS];
+ int j;
+ int nevents;
+ http_io_events = 0;
+ for (j = 0; j < NHttpSockets; j++) {
+ if (HttpSockets[j] < 0)
+ continue;
+ if (commDeferRead(HttpSockets[j]))
+ continue;
+ fds[nfds++] = HttpSockets[j];
+ }
+ nevents = comm_check_incoming_select_handlers(nfds, fds);
+ incoming_http_interval += Config.comm_incoming.http_average - nevents;
+ if (incoming_http_interval < 0)
+ incoming_http_interval = 0;
+ if (incoming_http_interval > MAX_INCOMING_INTERVAL)
+ incoming_http_interval = MAX_INCOMING_INTERVAL;
+ if (nevents > INCOMING_HTTP_MAX)
+ nevents = INCOMING_HTTP_MAX;
+ statHistCount(&statCounter.comm_http_incoming, nevents);
+}
+
+/* Select on all sockets; call handlers for those that are ready. */
+int
+comm_select(int msec)
+{
+ fd_set readfds;
+ fd_set writefds;
+#if DELAY_POOLS
+ fd_set slowfds;
+#endif
+ int fd;
+ int maxfd;
+ int num;
+ int callicp = 0, callhttp = 0;
+ int calldns = 0;
+ register int j;
+ static time_t last_timeout = 0;
+ struct timeval poll_time;
+ double timeout = current_dtime + (msec / 1000.0);
+ int no_bits;
+ fd_set errfds;
+ FD_ZERO(&errfds);
+ do {
+ double start;
+ getCurrentTime();
+ start = current_dtime;
+#if DELAY_POOLS
+ FD_ZERO(&slowfds);
+#endif
+ /* Handle any fs callbacks that need doing */
+ storeDirCallback();
+ if (commCheckICPIncoming)
+ comm_select_icp_incoming();
+ if (commCheckDNSIncoming)
+ comm_select_dns_incoming();
+ if (commCheckHTTPIncoming)
+ comm_select_http_incoming();
+ callicp = calldns = callhttp = 0;
+ maxfd = Biggest_FD + 1;
+ xmemcpy(&readfds, &global_readfds, sizeof(global_readfds));
+ xmemcpy(&writefds, &global_writefds, sizeof(global_writefds));
+ xmemcpy(&errfds, &global_writefds, sizeof(global_writefds));
+ /* remove stalled FDs, and deal with pending descriptors */
+ for (j = 0; j < (int) readfds.fd_count; j++) {
+ register int readfds_handle = readfds.fd_array[j];
+ no_bits = 1;
+ for (fd = Biggest_FD; fd; fd--) {
+ if (fd_table[fd].win32.handle == readfds_handle) {
+ if (fd_table[fd].flags.open) {
+ no_bits = 0;
+ break;
+ }
+ }
+ }
+ if (no_bits)
+ continue;
+ if (fd_table[fd].read_handler) {
+ switch (commDeferRead(fd)) {
+ case 0:
+ break;
+ case 1:
+ FD_CLR(fd, &readfds);
+ /* FD_CLR() decrements readfds.fd_count, so we must */
+ /* decrement too the counter j */
+ j--;
+ if (!fd_table[fd].write_handler)
+ FD_CLR(fd, &writefds);
+ break;
+#if DELAY_POOLS
+ case -1:
+ FD_SET(fd, &slowfds);
+ break;
+#endif
+ default:
+ fatalf("bad return value from commDeferRead(FD %d)\n", fd);
+ }
+ }
+ }
+ if (nreadfds + nwritefds == 0) {
+ assert(shutting_down);
+ return COMM_SHUTDOWN;
+ }
+ if (msec > MAX_POLL_TIME)
+ msec = MAX_POLL_TIME;
+ for (;;) {
+ poll_time.tv_sec = msec / 1000;
+ poll_time.tv_usec = (msec % 1000) * 1000;
+ statCounter.syscalls.selects++;
+ num = select(maxfd, &readfds, &writefds, &errfds, &poll_time);
+ statCounter.select_loops++;
+ if (num >= 0)
+ break;
+ if (ignoreErrno(errno))
+ break;
+ debug(5, 0) ("comm_select: select failure: %s\n",
+ xstrerror());
+ examine_select(&readfds, &writefds);
+ return COMM_ERROR;
+ /* NOTREACHED */
+ }
+ if (num < 0)
+ continue;
+ debug(5, num ? 5 : 8) ("comm_select: %d FDs ready at %d\n",
+ num, (int) squid_curtime);
+ statHistCount(&statCounter.select_fds_hist, num);
+ /* Check lifetime and timeout handlers ONCE each second.
+ * Replaces brain-dead check every time through the loop! */
+ if (squid_curtime > last_timeout) {
+ last_timeout = squid_curtime;
+ checkTimeouts();
+ }
+ if (num == 0)
+ continue;
+ /* Scan return fd masks for ready for read descriptors */
+ assert(readfds.fd_count <= (unsigned int) Biggest_FD);
+ for (j = 0; j < (int) readfds.fd_count; j++) {
+ register int readfds_handle = readfds.fd_array[j];
+ register int osfhandle;
+ fde *F;
+ no_bits = 1;
+ for (fd = Biggest_FD; fd; fd--) {
+ osfhandle = fd_table[fd].win32.handle;
+ if (osfhandle == readfds_handle) {
+ if (fd_table[fd].flags.open) {
+ no_bits = 0;
+ break;
+ }
+ }
+ }
+ if (no_bits)
+ continue;
+ if (fdIsIcp(fd)) {
+ callicp = 1;
+ continue;
+ }
+ if (fdIsDns(fd)) {
+ calldns = 1;
+ continue;
+ }
+ if (fdIsHttp(fd)) {
+ callhttp = 1;
+ continue;
+ }
+ F = &fd_table[fd];
+ debug(5, 6) ("comm_select: FD %d ready for read\n", fd);
+ if (F->read_handler) {
+ int do_read = 0;
+ switch (F->read_pending) {
+ case COMM_PENDING_NORMAL:
+ case COMM_PENDING_WANTS_READ:
+ do_read = 1;
+ break;
+ case COMM_PENDING_WANTS_WRITE:
+ do_read = __WSAFDIsSet(fd_table[fd].win32.handle, &writefds);
+ break;
+ case COMM_PENDING_NOW:
+ do_read = 1;
+ break;
+ }
+#if DELAY_POOLS
+ if (do_read && __WSAFDIsSet(fd_table[fd].win32.handle, &slowfds))
+ commAddSlowFd(fd);
+ else
+#endif
+ if (do_read) {
+ PF *hdl = F->read_handler;
+ void *hdl_data = F->read_data;
+ debug(5, 6) ("comm_select: FD %d calling read_handler %p(%p)\n", fd, hdl, hdl_data);
+ commUpdateReadHandler(fd, NULL, NULL);
+ hdl(fd, hdl_data);
+ statCounter.select_fds++;
+ if (commCheckICPIncoming)
+ comm_select_icp_incoming();
+ if (commCheckDNSIncoming)
+ comm_select_dns_incoming();
+ if (commCheckHTTPIncoming)
+ comm_select_http_incoming();
+ }
+ }
+ }
+ /* Scan return fd masks for error on connect() descriptors */
+ assert(errfds.fd_count <= (unsigned int) Biggest_FD);
+ for (j = 0; j < (int) errfds.fd_count; j++) {
+ register int errfds_handle = errfds.fd_array[j];
+ for (fd = Biggest_FD; fd; fd--) {
+ if (fd_table[fd].win32.handle == errfds_handle) {
+ if (fd_table[fd].flags.open) {
+ fde *F = &fd_table[fd];
+ if (F->write_handler) {
+ PF *hdl = F->write_handler;
+ void *hdl_data = F->write_data;
+ commUpdateWriteHandler(fd, NULL, NULL);
+ hdl(fd, hdl_data);
+ statCounter.select_fds++;
+ }
+ }
+ break;
+ }
+ }
+ }
+ /* Scan return fd masks for ready for write descriptors */
+ assert(writefds.fd_count <= (unsigned int) Biggest_FD);
+ for (j = 0; j < (int) writefds.fd_count; j++) {
+ register int writefds_handle = writefds.fd_array[j];
+ register int osfhandle;
+ fde *F;
+ no_bits = 1;
+ for (fd = Biggest_FD; fd; fd--) {
+ osfhandle = fd_table[fd].win32.handle;
+ if (osfhandle == writefds_handle) {
+ if (fd_table[fd].flags.open) {
+ no_bits = 0;
+ break;
+ }
+ }
+ }
+ if (no_bits)
+ continue;
+ if (fdIsIcp(fd)) {
+ callicp = 1;
+ continue;
+ }
+ if (fdIsDns(fd)) {
+ calldns = 1;
+ continue;
+ }
+ if (fdIsHttp(fd)) {
+ callhttp = 1;
+ continue;
+ }
+ F = &fd_table[fd];
+ debug(5, 6) ("comm_select: FD %d ready for write\n", fd);
+ if (F->write_handler) {
+ int do_write = 0;
+ switch (F->write_pending) {
+ case COMM_PENDING_WANTS_READ:
+ do_write = __WSAFDIsSet(fd_table[fd].win32.handle, &readfds);
+ break;
+ case COMM_PENDING_NORMAL:
+ case COMM_PENDING_WANTS_WRITE:
+ do_write = 1;
+ break;
+ case COMM_PENDING_NOW:
+ do_write = 1;
+ break;
+ }
+ if (do_write) {
+ PF *hdl = F->write_handler;
+ void *hdl_data = F->write_data;
+ debug(5, 6) ("comm_select: FD %d calling write_handler %p(%p)\n", fd, hdl, hdl_data);
+ commUpdateWriteHandler(fd, NULL, NULL);
+ hdl(fd, hdl_data);
+ statCounter.select_fds++;
+ if (commCheckICPIncoming)
+ comm_select_icp_incoming();
+ if (commCheckDNSIncoming)
+ comm_select_dns_incoming();
+ if (commCheckHTTPIncoming)
+ comm_select_http_incoming();
+ }
+ }
+ }
+ if (callicp)
+ comm_select_icp_incoming();
+ if (calldns)
+ comm_select_dns_incoming();
+ if (callhttp)
+ comm_select_http_incoming();
+#if DELAY_POOLS
+ while ((fd = commGetSlowFd()) != -1) {
+ fde *F = &fd_table[fd];
+ PF *hdl = F->read_handler;
+ void *hdl_data = F->read_data;
+ debug(5, 6) ("comm_select: slow FD %d selected for reading\n", fd);
+ if (hdl) {
+ commUpdateReadHandler(fd, NULL, NULL);
+ hdl(fd, hdl_data);
+ statCounter.select_fds++;
+ if (commCheckICPIncoming)
+ comm_select_icp_incoming();
+ if (commCheckDNSIncoming)
+ comm_select_dns_incoming();
+ if (commCheckHTTPIncoming)
+ comm_select_http_incoming();
+ }
+ }
+#endif
+ getCurrentTime();
+ statCounter.select_time += (current_dtime - start);
+ return COMM_OK;
+ }
+ while (timeout > current_dtime);
+ debug(5, 8) ("comm_select: time out: %d\n", (int) squid_curtime);
+ return COMM_TIMEOUT;
+}
+
+static void
+comm_select_dns_incoming(void)
+{
+ int nfds = 0;
+ int fds[2];
+ int nevents;
+ dns_io_events = 0;
+ if (DnsSocket < 0)
+ return;
+ fds[nfds++] = DnsSocket;
+ nevents = comm_check_incoming_select_handlers(nfds, fds);
+ if (nevents < 0)
+ return;
+ incoming_dns_interval += Config.comm_incoming.dns_average - nevents;
+ if (incoming_dns_interval < Config.comm_incoming.dns_min_poll)
+ incoming_dns_interval = Config.comm_incoming.dns_min_poll;
+ if (incoming_dns_interval > MAX_INCOMING_INTERVAL)
+ incoming_dns_interval = MAX_INCOMING_INTERVAL;
+ if (nevents > INCOMING_DNS_MAX)
+ nevents = INCOMING_DNS_MAX;
+ statHistCount(&statCounter.comm_dns_incoming, nevents);
+}
+
+void
+comm_select_init(void)
+{
+ zero_tv.tv_sec = 0;
+ zero_tv.tv_usec = 0;
+ cachemgrRegister("comm_incoming",
+ "comm_incoming() stats",
+ commIncomingStats, 0, 1);
+ FD_ZERO(&global_readfds);
+ FD_ZERO(&global_writefds);
+ nreadfds = nwritefds = 0;
+}
+
+void
+comm_select_shutdown(void)
+{
+}
+
+/*
+ * examine_select - debug routine.
+ *
+ * I spend the day chasing this core dump that occurs when both the client
+ * and the server side of a cache fetch simultaneoulsy abort the
+ * connection. While I haven't really studied the code to figure out how
+ * it happens, the snippet below may prevent the cache from exitting:
+ *
+ * Call this from where the select loop fails.
+ */
+static int
+examine_select(fd_set * readfds, fd_set * writefds)
+{
+ int fd = 0;
+ fd_set read_x;
+ fd_set write_x;
+ struct timeval tv;
+ close_handler *ch = NULL;
+ fde *F = NULL;
+ struct stat sb;
+ debug(5, 0) ("examine_select: Examining open file descriptors...\n");
+ for (fd = 0; fd < Squid_MaxFD; fd++) {
+ FD_ZERO(&read_x);
+ FD_ZERO(&write_x);
+ tv.tv_sec = tv.tv_usec = 0;
+ if (__WSAFDIsSet(fd_table[fd].win32.handle, readfds))
+ FD_SET(fd, &read_x);
+ else if (__WSAFDIsSet(fd_table[fd].win32.handle, writefds))
+ FD_SET(fd, &write_x);
+ else
+ continue;
+ statCounter.syscalls.selects++;
+ errno = 0;
+ if (!fstat(fd, &sb)) {
+ debug(5, 5) ("FD %d is valid.\n", fd);
+ continue;
+ }
+ F = &fd_table[fd];
+ debug(5, 0) ("FD %d: %s\n", fd, xstrerror());
+ debug(5, 0) ("WARNING: FD %d has handlers, but it's invalid.\n", fd);
+ debug(5, 0) ("FD %d is a %s called '%s'\n",
+ fd,
+ fdTypeStr[F->type],
+ F->desc);
+ debug(5, 0) ("tmout:%p read:%p write:%p\n",
+ F->timeout_handler,
+ F->read_handler,
+ F->write_handler);
+ for (ch = F->close_handler; ch; ch = ch->next)
+ debug(5, 0) (" close handler: %p\n", ch->handler);
+ if (F->close_handler) {
+ commCallCloseHandlers(fd);
+ } else if (F->timeout_handler) {
+ debug(5, 0) ("examine_select: Calling Timeout Handler\n");
+ F->timeout_handler(fd, F->timeout_data);
+ }
+ F->close_handler = NULL;
+ F->timeout_handler = NULL;
+ F->read_handler = NULL;
+ F->write_handler = NULL;
+ FD_CLR(fd, readfds);
+ FD_CLR(fd, writefds);
+ }
+ return 0;
+}
+
+static void
+commIncomingStats(StoreEntry * sentry)
+{
+ StatCounters *f = &statCounter;
+ storeAppendPrintf(sentry, "Current incoming_icp_interval: %d\n",
+ incoming_icp_interval >> INCOMING_FACTOR);
+ storeAppendPrintf(sentry, "Current incoming_dns_interval: %d\n",
+ incoming_dns_interval >> INCOMING_FACTOR);
+ storeAppendPrintf(sentry, "Current incoming_http_interval: %d\n",
+ incoming_http_interval >> INCOMING_FACTOR);
+ storeAppendPrintf(sentry, "\n");
+ storeAppendPrintf(sentry, "Histogram of events per incoming socket type\n");
+ storeAppendPrintf(sentry, "ICP Messages handled per comm_select_icp_incoming() call:\n");
+ statHistDump(&f->comm_icp_incoming, sentry, statHistIntDumper);
+ storeAppendPrintf(sentry, "DNS Messages handled per comm_select_dns_incoming() call:\n");
+ statHistDump(&f->comm_dns_incoming, sentry, statHistIntDumper);
+ storeAppendPrintf(sentry, "HTTP Messages handled per comm_select_http_incoming() call:\n");
+ statHistDump(&f->comm_http_incoming, sentry, statHistIntDumper);
+}
+
+void
+commSetEvents(int fd, int need_read, int need_write)
+{
+ if (need_read && !__WSAFDIsSet(fd_table[fd].win32.handle, &global_readfds)) {
+ FD_SET(fd, &global_readfds);
+ nreadfds++;
+ } else if (!need_read && __WSAFDIsSet(fd_table[fd].win32.handle, &global_readfds)) {
+ FD_CLR(fd, &global_readfds);
+ nreadfds--;
+ }
+ if (need_write && !__WSAFDIsSet(fd_table[fd].win32.handle, &global_writefds)) {
+ FD_SET(fd, &global_writefds);
+ nwritefds++;
+ } else if (!need_write && __WSAFDIsSet(fd_table[fd].win32.handle, &global_writefds)) {
+ FD_CLR(fd, &global_writefds);
+ nwritefds--;
+ }
+}
+
+static int
+commDeferRead(int fd)
+{
+ fde *F = &fd_table[fd];
+ if (F->defer_check == NULL)
+ return 0;
+ return F->defer_check(fd, F->defer_data);
+}
+
+static void
+checkTimeouts(void)
+{
+ int fd;
+ fde *F = NULL;
+ PF *callback;
+ for (fd = 0; fd <= Biggest_FD; fd++) {
+ F = &fd_table[fd];
+ if (!F->flags.open)
+ continue;
+ if (F->timeout == 0)
+ continue;
+ if (F->timeout > squid_curtime)
+ continue;
+ debug(5, 5) ("checkTimeouts: FD %d Expired\n", fd);
+ if (F->timeout_handler) {
+ debug(5, 5) ("checkTimeouts: FD %d: Call timeout handler\n", fd);
+ callback = F->timeout_handler;
+ F->timeout_handler = NULL;
+ callback(fd, F->timeout_data);
+ } else {
+ debug(5, 5) ("checkTimeouts: FD %d: Forcing comm_close()\n", fd);
+ comm_close(fd);
+ }
+ }
+}
+
+
+/* Called by async-io or diskd to speed up the polling */
+void
+comm_quick_poll_required(void)
+{
+ MAX_POLL_TIME = 10;
+}
+
+/* Defer reads from this fd */
+void
+commDeferFD(int fd)
+{
+ /* Not implemented */
+}
+
+/* Resume reading from the given fd */
+void
+commResumeFD(int fd)
+{
+ /* Not implemented */
+}
diff -ruN squid-2.6.PRE2/src/defines.h squid-2.6.RC1/src/defines.h
--- squid-2.6.PRE2/src/defines.h Wed May 24 20:48:43 2006
+++ squid-2.6.RC1/src/defines.h Sat Jun 10 10:08:07 2006
@@ -1,6 +1,6 @@
/*
- * $Id: defines.h,v 1.114 2006/05/25 02:48:43 hno Exp $
+ * $Id: defines.h,v 1.116 2006/06/10 16:08:07 serassio Exp $
*
*
* SQUID Web Proxy Cache http://www.squid-cache.org/
@@ -252,28 +252,16 @@
/*
* Max number of ICP messages to receive per call to icpHandleUdp
*/
-#ifdef _SQUID_MSWIN_
-#define INCOMING_ICP_MAX 1
-#else
#define INCOMING_ICP_MAX 15
-#endif
/*
* Max number of DNS messages to receive per call to DNS read handler
*/
-#ifdef _SQUID_MSWIN_
-#define INCOMING_DNS_MAX 1
-#else
#define INCOMING_DNS_MAX 15
-#endif
/*
* Max number of HTTP connections to accept per call to httpAccept
* and PER HTTP PORT
*/
-#ifdef _SQUID_MSWIN_
-#define INCOMING_HTTP_MAX 1
-#else
#define INCOMING_HTTP_MAX 10
-#endif
#define INCOMING_TOTAL_MAX (INCOMING_ICP_MAX+INCOMING_HTTP_MAX)
/*
@@ -307,6 +295,9 @@
#endif
#ifndef O_BINARY
#define O_BINARY 0
+#endif
+#ifndef O_NOATIME
+#define O_NOATIME 0
#endif
/* Windows Port */
diff -ruN squid-2.6.PRE2/src/delay_pools.c squid-2.6.RC1/src/delay_pools.c
--- squid-2.6.PRE2/src/delay_pools.c Sat Jun 3 20:27:54 2006
+++ squid-2.6.RC1/src/delay_pools.c Thu Jun 8 13:36:36 2006
@@ -1,6 +1,6 @@
/*
- * $Id: delay_pools.c,v 1.30 2006/06/04 02:27:54 hno Exp $
+ * $Id: delay_pools.c,v 1.32 2006/06/08 19:36:36 hno Exp $
*
* DEBUG: section 77 Delay Pools
* AUTHOR: David Luyer
@@ -89,7 +89,7 @@
typedef union _delayPool delayPool;
static delayPool *delay_data = NULL;
-static fd_set delay_no_delay;
+static char *delay_no_delay;
static time_t delay_pools_last_update = 0;
static hash_table *delay_id_ptr_hash = NULL;
static long memory_used = 0;
@@ -134,7 +134,7 @@
delayPoolsInit(void)
{
delay_pools_last_update = getCurrentTime();
- FD_ZERO(&delay_no_delay);
+ delay_no_delay = xcalloc(1, Squid_MaxFD);
cachemgrRegister("delay", "Delay Pool Levels", delayPoolStats, 0, 1);
}
@@ -284,19 +284,19 @@
void
delaySetNoDelay(int fd)
{
- FD_SET(fd, &delay_no_delay);
+ delay_no_delay[fd] = 1;
}
void
delayClearNoDelay(int fd)
{
- FD_CLR(fd, &delay_no_delay);
+ delay_no_delay[fd] = 0;
}
int
delayIsNoDelay(int fd)
{
- return FD_ISSET(fd, &delay_no_delay);
+ return delay_no_delay[fd];
}
static delay_id
diff -ruN squid-2.6.PRE2/src/enums.h squid-2.6.RC1/src/enums.h
--- squid-2.6.PRE2/src/enums.h Mon May 22 15:54:56 2006
+++ squid-2.6.RC1/src/enums.h Sat Jun 17 17:31:03 2006
@@ -1,6 +1,6 @@
/*
- * $Id: enums.h,v 1.231 2006/05/22 21:54:56 adrian Exp $
+ * $Id: enums.h,v 1.232 2006/06/17 23:31:03 hno Exp $
*
*
* SQUID Web Proxy Cache http://www.squid-cache.org/
@@ -413,6 +413,7 @@
METHOD_UNSUBSCRIBE,
METHOD_POLL,
METHOD_REPORT,
+ /* Extension methods must be last, Add any new methods before this line */
METHOD_EXT00,
METHOD_EXT01,
METHOD_EXT02,
diff -ruN squid-2.6.PRE2/src/fd.c squid-2.6.RC1/src/fd.c
--- squid-2.6.PRE2/src/fd.c Tue May 30 07:05:57 2006
+++ squid-2.6.RC1/src/fd.c Sun Jun 11 11:06:25 2006
@@ -1,6 +1,6 @@
/*
- * $Id: fd.c,v 1.50 2006/05/30 13:05:57 hno Exp $
+ * $Id: fd.c,v 1.52 2006/06/11 17:06:25 serassio Exp $
*
* DEBUG: section 51 Filedescriptor Functions
* AUTHOR: Duane Wessels
@@ -37,6 +37,12 @@
int default_read_method(int, char *, int);
int default_write_method(int, const char *, int);
+#ifdef _SQUID_MSWIN_
+int socket_read_method(int, char *, int);
+int socket_write_method(int, const char *, int);
+int file_read_method(int, char *, int);
+int file_write_method(int, const char *, int);
+#endif
const char *fdTypeStr[] =
{
@@ -84,7 +90,7 @@
assert(F->write_handler == NULL);
}
debug(51, 3) ("fd_close FD %d %s\n", fd, F->desc);
- commSetEvents(fd, 0, 0, 0);
+ commSetEvents(fd, 0, 0);
F->flags.open = 0;
fdUpdateBiggest(fd, 0);
Number_FD--;
@@ -92,6 +98,31 @@
F->timeout = 0;
}
+#ifdef _SQUID_MSWIN_
+int
+socket_read_method(int fd, char *buf, int len)
+{
+ return (recv(fd, buf, len, 0));
+}
+
+int
+file_read_method(int fd, char *buf, int len)
+{
+ return (_read(fd, buf, len));
+}
+
+int
+socket_write_method(int fd, const char *buf, int len)
+{
+ return (send(fd, buf, len, 0));
+}
+
+file_write_method(int fd, const char *buf, int len)
+{
+ return (_write(fd, buf, len));
+}
+#endif
+
int
default_read_method(int fd, char *buf, int len)
{
@@ -118,8 +149,26 @@
debug(51, 3) ("fd_open FD %d %s\n", fd, desc);
F->type = type;
F->flags.open = 1;
+#ifdef _SQUID_MSWIN_
+ F->win32.handle = _get_osfhandle(fd);
+ switch (type) {
+ case FD_SOCKET:
+ case FD_PIPE:
+ F->read_method = &socket_read_method;
+ F->write_method = &socket_write_method;
+ break;
+ case FD_FILE:
+ case FD_LOG:
+ F->read_method = &file_read_method;
+ F->write_method = &file_write_method;
+ break;
+ default:
+ fatalf("fd_open(): unknown FD type - FD#: %i, type: %u, desc %s\n", fd, type, desc);
+ }
+#else
F->read_method = &default_read_method;
F->write_method = &default_write_method;
+#endif
fdUpdateBiggest(fd, 1);
if (desc)
xstrncpy(F->desc, desc, FD_DESC_SZ);
diff -ruN squid-2.6.PRE2/src/forward.c squid-2.6.RC1/src/forward.c
--- squid-2.6.PRE2/src/forward.c Mon Jun 5 23:57:55 2006
+++ squid-2.6.RC1/src/forward.c Mon Jun 19 17:40:53 2006
@@ -1,6 +1,6 @@
/*
- * $Id: forward.c,v 1.107 2006/06/06 05:57:55 hno Exp $
+ * $Id: forward.c,v 1.109 2006/06/19 23:40:53 hno Exp $
*
* DEBUG: section 17 Request Forwarding
* AUTHOR: Duane Wessels
@@ -189,6 +189,8 @@
debug(17, 2) ("fwdServerClosed: FD %d %s\n", fd, storeUrl(fwdState->entry));
assert(fwdState->server_fd == fd);
fwdState->server_fd = -1;
+ if (EBIT_TEST(fwdState->entry->flags, ENTRY_DEFER_READ))
+ storeResetDefer(fwdState->entry);
if (fwdCheckRetry(fwdState)) {
int originserver = (fwdState->servers->peer == NULL);
debug(17, 3) ("fwdServerClosed: re-forwarding (%d tries, %d secs)\n",
@@ -537,6 +539,12 @@
if (!fs->peer)
fwdState->origin_tries++;
comm_add_close_handler(fd, fwdServerClosed, fwdState);
+ if (fs->peer)
+ hierarchyNote(&fwdState->request->hier, fs->code, fs->peer->host);
+ else if (Config.onoff.log_ip_on_direct && fs->code == HIER_DIRECT)
+ hierarchyNote(&fwdState->request->hier, fs->code, fd_table[fd].ipaddr);
+ else
+ hierarchyNote(&fwdState->request->hier, fs->code, name);
fwdDispatch(fwdState);
return;
} else {
@@ -899,10 +907,11 @@
else {
int i = delayMostBytesWanted(mem, INT_MAX);
if (0 == i) {
- if (fd >= 0) {
- mem->serverfd = fd;
- commDeferFD(fd);
- }
+ /* No storeDeferrRead here as it's not store dependent.
+ * Will get changed the day delay pools interact nicely
+ * with the store..
+ */
+ commDeferFD(fd);
return 1;
}
/* was: rc = -(rc != INT_MAX); */
@@ -1001,6 +1010,8 @@
assert(e->mem_obj->chksum == url_checksum(e->mem_obj->url));
#endif
fwdLogReplyStatus(fwdState->n_tries, e->mem_obj->reply->sline.status);
+ if (EBIT_TEST(e->flags, ENTRY_DEFER_READ))
+ storeResumeRead(e);
if (fwdReforward(fwdState)) {
debug(17, 3) ("fwdComplete: re-forwarding %d %s\n",
e->mem_obj->reply->sline.status,
diff -ruN squid-2.6.PRE2/src/fs/Makefile.am squid-2.6.RC1/src/fs/Makefile.am
--- squid-2.6.PRE2/src/fs/Makefile.am Fri Jun 2 15:35:39 2006
+++ squid-2.6.RC1/src/fs/Makefile.am Mon Jun 12 00:04:08 2006
@@ -1,6 +1,6 @@
# Makefile for storage modules in the Squid Object Cache server
#
-# $Id: Makefile.am,v 1.6 2006/06/02 21:35:39 hno Exp $
+# $Id: Makefile.am,v 1.8 2006/06/12 06:04:08 hno Exp $
#
AUTOMAKE_OPTIONS = subdir-objects
@@ -16,6 +16,18 @@
diskd/store_io_diskd.c
libnull_a_SOURCES = null/store_null.c
libufs_a_SOURCES = ufs/store_dir_ufs.c ufs/store_io_ufs.c ufs/store_ufs.h
+
+if NEED_DISKD
+DISKD = diskd-daemon
+else
+DISKD =
+endif
+
+libexec_PROGRAMS = $(DISKD)
+
+diskd_daemon_SOURCES = diskd/diskd.c
+
+LDADD = $(top_builddir)/lib/libmiscutil.a @XTRA_LIBS@
EXTRA_DIST = \
coss/coss-notes.txt
diff -ruN squid-2.6.PRE2/src/fs/Makefile.in squid-2.6.RC1/src/fs/Makefile.in
--- squid-2.6.PRE2/src/fs/Makefile.in Fri Jun 2 15:35:39 2006
+++ squid-2.6.RC1/src/fs/Makefile.in Mon Jun 12 00:10:12 2006
@@ -16,9 +16,10 @@
# Makefile for storage modules in the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.31 2006/06/02 21:35:39 hno Exp $
+# $Id: Makefile.in,v 1.35 2006/06/12 06:10:12 hno Exp $
#
+
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@@ -41,6 +42,7 @@
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
+libexec_PROGRAMS = $(am__EXEEXT_1)
subdir = src/fs
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -78,6 +80,14 @@
am_libufs_a_OBJECTS = ufs/store_dir_ufs.$(OBJEXT) \
ufs/store_io_ufs.$(OBJEXT)
libufs_a_OBJECTS = $(am_libufs_a_OBJECTS)
+@NEED_DISKD_TRUE@am__EXEEXT_1 = diskd-daemon$(EXEEXT)
+am__installdirs = "$(DESTDIR)$(libexecdir)"
+libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(libexec_PROGRAMS)
+am_diskd_daemon_OBJECTS = diskd/diskd.$(OBJEXT)
+diskd_daemon_OBJECTS = $(am_diskd_daemon_OBJECTS)
+diskd_daemon_LDADD = $(LDADD)
+diskd_daemon_DEPENDENCIES = $(top_builddir)/lib/libmiscutil.a
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include
depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp
am__depfiles_maybe = depfiles
@@ -86,9 +96,11 @@
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(libaufs_a_SOURCES) $(libcoss_a_SOURCES) \
- $(libdiskd_a_SOURCES) $(libnull_a_SOURCES) $(libufs_a_SOURCES)
+ $(libdiskd_a_SOURCES) $(libnull_a_SOURCES) $(libufs_a_SOURCES) \
+ $(diskd_daemon_SOURCES)
DIST_SOURCES = $(libaufs_a_SOURCES) $(libcoss_a_SOURCES) \
- $(libdiskd_a_SOURCES) $(libnull_a_SOURCES) $(libufs_a_SOURCES)
+ $(libdiskd_a_SOURCES) $(libnull_a_SOURCES) $(libufs_a_SOURCES) \
+ $(diskd_daemon_SOURCES)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -166,6 +178,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -198,7 +212,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -208,10 +221,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
@@ -270,6 +287,10 @@
libnull_a_SOURCES = null/store_null.c
libufs_a_SOURCES = ufs/store_dir_ufs.c ufs/store_io_ufs.c ufs/store_ufs.h
+@NEED_DISKD_FALSE@DISKD =
+@NEED_DISKD_TRUE@DISKD = diskd-daemon
+diskd_daemon_SOURCES = diskd/diskd.c
+LDADD = $(top_builddir)/lib/libmiscutil.a @XTRA_LIBS@
EXTRA_DIST = \
coss/coss-notes.txt
@@ -388,6 +409,32 @@
-rm -f libufs.a
$(libufs_a_AR) libufs.a $(libufs_a_OBJECTS) $(libufs_a_LIBADD)
$(RANLIB) libufs.a
+install-libexecPROGRAMS: $(libexec_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(libexecdir)" || $(mkdir_p) "$(DESTDIR)$(libexecdir)"
+ @list='$(libexec_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(libexecPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(libexecdir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(libexecPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(libexecdir)/$$f" || exit 1; \
+ else :; fi; \
+ done
+
+uninstall-libexecPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libexec_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " rm -f '$(DESTDIR)$(libexecdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(libexecdir)/$$f"; \
+ done
+
+clean-libexecPROGRAMS:
+ -test -z "$(libexec_PROGRAMS)" || rm -f $(libexec_PROGRAMS)
+diskd-daemon$(EXEEXT): $(diskd_daemon_OBJECTS) $(diskd_daemon_DEPENDENCIES)
+ @rm -f diskd-daemon$(EXEEXT)
+ $(LINK) $(diskd_daemon_LDFLAGS) $(diskd_daemon_OBJECTS) $(diskd_daemon_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@@ -517,8 +564,11 @@
done
check-am: all-am
check: check-am
-all-am: Makefile $(LIBRARIES)
+all-am: Makefile $(LIBRARIES) $(PROGRAMS)
installdirs:
+ for dir in "$(DESTDIR)$(libexecdir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
@@ -555,7 +605,8 @@
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
-clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+clean-am: clean-generic clean-libexecPROGRAMS clean-noinstLIBRARIES \
+ mostlyclean-am
distclean: distclean-am
-rm -rf aufs/$(DEPDIR) coss/$(DEPDIR) diskd/$(DEPDIR) null/$(DEPDIR) ufs/$(DEPDIR)
@@ -575,7 +626,7 @@
install-data-am:
-install-exec-am:
+install-exec-am: install-libexecPROGRAMS
install-info: install-info-am
@@ -600,18 +651,19 @@
ps-am:
-uninstall-am: uninstall-info-am
+uninstall-am: uninstall-info-am uninstall-libexecPROGRAMS
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-noinstLIBRARIES ctags distclean distclean-compile \
- distclean-generic distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-exec install-exec-am install-info \
- install-info-am install-man install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
- uninstall-am uninstall-info-am
+ clean-libexecPROGRAMS clean-noinstLIBRARIES ctags distclean \
+ distclean-compile distclean-generic distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-exec install-exec-am \
+ install-info install-info-am install-libexecPROGRAMS \
+ install-man install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
+ ps ps-am tags uninstall uninstall-am uninstall-info-am \
+ uninstall-libexecPROGRAMS
aufs/all: libaufs.a
diff -ruN squid-2.6.PRE2/src/fs/aufs/store_io_aufs.c squid-2.6.RC1/src/fs/aufs/store_io_aufs.c
--- squid-2.6.PRE2/src/fs/aufs/store_io_aufs.c Sat May 27 08:47:03 2006
+++ squid-2.6.RC1/src/fs/aufs/store_io_aufs.c Wed Jun 7 16:55:45 2006
@@ -48,7 +48,7 @@
return NULL;
#endif
#if !ASYNC_OPEN
- fd = file_open(path, O_RDONLY | O_BINARY);
+ fd = file_open(path, O_RDONLY | O_BINARY | O_NOATIME);
if (fd < 0) {
debug(79, 3) ("storeAufsOpen: got failure (%d)\n", errno);
return NULL;
@@ -69,7 +69,7 @@
Opening_FD++;
statCounter.syscalls.disk.opens++;
#if ASYNC_OPEN
- aioOpen(path, O_RDONLY | O_BINARY, 0644, storeAufsOpenDone, sio);
+ aioOpen(path, O_RDONLY | O_BINARY | O_NOATIME, 0644, storeAufsOpenDone, sio);
#else
storeAufsOpenDone(fd, sio, fd, 0);
#endif
diff -ruN squid-2.6.PRE2/src/fs/coss/store_coss.h squid-2.6.RC1/src/fs/coss/store_coss.h
--- squid-2.6.PRE2/src/fs/coss/store_coss.h Sat May 20 06:23:50 2006
+++ squid-2.6.RC1/src/fs/coss/store_coss.h Sun Jun 11 14:59:09 2006
@@ -22,12 +22,6 @@
#define COSS_ALLOC_ALLOCATE 1
#define COSS_ALLOC_REALLOC 2
-/*
- * Define this if you would like to use the aufs IO method for
- * disk IO instead of the POSIX AIO method.
- */
-#define USE_AUFSOPS 1
-
#if USE_AUFSOPS
/* XXX a hack; the async ops should be broken out! */
typedef void AIOCB(int fd, void *cbdata, const char *buf,
@@ -136,7 +130,7 @@
dlink_list pending_ops;
int pending_reloc_count;
int count;
-#if ! USE_AUFSOPS
+#if !USE_AUFSOPS
async_queue_t aq;
#endif
dlink_node *walk_current;
diff -ruN squid-2.6.PRE2/src/fs/diskd/store_io_diskd.c squid-2.6.RC1/src/fs/diskd/store_io_diskd.c
--- squid-2.6.PRE2/src/fs/diskd/store_io_diskd.c Mon Jun 5 01:48:04 2006
+++ squid-2.6.RC1/src/fs/diskd/store_io_diskd.c Wed Jun 7 16:55:45 2006
@@ -1,6 +1,6 @@
/*
- * $Id: store_io_diskd.c,v 1.30 2006/06/05 07:48:04 hno Exp $
+ * $Id: store_io_diskd.c,v 1.31 2006/06/07 22:55:45 hno Exp $
*
* DEBUG: section 79 Squid-side DISKD I/O functions.
* AUTHOR: Duane Wessels
@@ -76,7 +76,7 @@
sio->swap_filen = f;
sio->swap_dirn = SD->index;
- sio->mode = O_RDONLY | O_BINARY;
+ sio->mode = O_RDONLY | O_BINARY | O_NOATIME;
sio->callback = callback;
sio->callback_data = callback_data;
sio->e = e;
diff -ruN squid-2.6.PRE2/src/fs/null/store_null.c squid-2.6.RC1/src/fs/null/store_null.c
--- squid-2.6.PRE2/src/fs/null/store_null.c Thu May 18 06:57:11 2006
+++ squid-2.6.RC1/src/fs/null/store_null.c Thu Jun 8 07:39:52 2006
@@ -1,6 +1,6 @@
/*
- * $Id: store_null.c,v 1.6 2006/05/18 12:57:11 hno Exp $
+ * $Id: store_null.c,v 1.7 2006/06/08 13:39:52 hno Exp $
*
* DEBUG: section 47 Store Directory Routines
* AUTHOR: Duane Wessels
@@ -78,6 +78,15 @@
NULL, 0.0, 1);
}
+/*
+ * Only "free" the filesystem specific stuff here
+ */
+static void
+storeNullDirFree(SwapDir * s)
+{
+}
+
+
static void
storeNullDirRebuildComplete(void *unused)
{
@@ -121,6 +130,7 @@
sd->path = xstrdup(path);
sd->statfs = storeNullDirStats;
sd->init = storeNullDirInit;
+ sd->freefs = storeNullDirFree;
sd->checkobj = storeNullDirCheckObj;
sd->checkload = storeNullDirCheckLoadAv;
sd->log.clean.start = storeNullDirWriteCleanStart;
diff -ruN squid-2.6.PRE2/src/fs/ufs/store_io_ufs.c squid-2.6.RC1/src/fs/ufs/store_io_ufs.c
--- squid-2.6.PRE2/src/fs/ufs/store_io_ufs.c Tue May 17 10:56:43 2005
+++ squid-2.6.RC1/src/fs/ufs/store_io_ufs.c Wed Jun 7 16:55:45 2006
@@ -1,6 +1,6 @@
/*
- * $Id: store_io_ufs.c,v 1.13 2005/05/17 16:56:43 hno Exp $
+ * $Id: store_io_ufs.c,v 1.14 2006/06/07 22:55:45 hno Exp $
*
* DEBUG: section 79 Storage Manager UFS Interface
* AUTHOR: Duane Wessels
@@ -57,7 +57,7 @@
struct stat sb;
int fd;
debug(79, 3) ("storeUfsOpen: fileno %08X\n", f);
- fd = file_open(path, O_RDONLY | O_BINARY);
+ fd = file_open(path, O_RDONLY | O_BINARY | O_NOATIME);
if (fd < 0) {
debug(79, 3) ("storeUfsOpen: got failure (%d)\n", errno);
return NULL;
diff -ruN squid-2.6.PRE2/src/htcp.c squid-2.6.RC1/src/htcp.c
--- squid-2.6.PRE2/src/htcp.c Tue Jun 6 00:37:41 2006
+++ squid-2.6.RC1/src/htcp.c Mon Jun 12 11:44:41 2006
@@ -1,6 +1,6 @@
/*
- * $Id: htcp.c,v 1.51 2006/06/06 06:37:41 hno Exp $
+ * $Id: htcp.c,v 1.52 2006/06/12 17:44:41 hno Exp $
*
* DEBUG: section 31 Hypertext Caching Protocol
* AUTHOR: Duane Wesssels
@@ -176,7 +176,8 @@
static u_num32 msg_id_counter = 0;
static int htcpInSocket = -1;
static int htcpOutSocket = -1;
-#define N_QUERIED_KEYS 256
+#define N_QUERIED_KEYS 8192
+static u_num32 queried_id[N_QUERIED_KEYS];
static cache_key queried_keys[N_QUERIED_KEYS][MD5_DIGEST_CHARS];
static struct sockaddr_in queried_addr[N_QUERIED_KEYS];
static MemPool *htcpSpecifierPool = NULL;
@@ -446,7 +447,7 @@
buf,
len);
if (x < 0)
- debug(31, 0) ("htcpSend: FD %d sendto: %s\n", htcpOutSocket, xstrerror());
+ debug(31, 1) ("htcpSend: FD %d sendto: %s\n", htcpOutSocket, xstrerror());
}
/*
@@ -696,7 +697,7 @@
safe_free(stuff.D.entity_hdrs);
safe_free(stuff.D.cache_hdrs);
if (!pktlen) {
- debug(31, 0) ("htcpTstReply: htcpBuildPacket() failed\n");
+ debug(31, 1) ("htcpTstReply: htcpBuildPacket() failed\n");
return;
}
htcpSend(pkt, (int) pktlen, from);
@@ -722,7 +723,7 @@
stuff.msg_id = dhdr->msg_id;
pktlen = htcpBuildPacket(pkt, sizeof(pkt), &stuff);
if (pktlen == 0) {
- debug(31, 0) ("htcpClrReply: htcpBuildPacket() failed\n");
+ debug(31, 1) ("htcpClrReply: htcpBuildPacket() failed\n");
return;
}
htcpSend(pkt, (int) pktlen, from);
@@ -829,9 +830,13 @@
htcpDetail *d = NULL;
char *t;
+ if (queried_id[hdr->msg_id % N_QUERIED_KEYS] != hdr->msg_id) {
+ debug(31, 2) ("htcpHandleTstResponse: No matching query id '%d' (expected %d) from '%s'\n", hdr->msg_id, queried_id[hdr->msg_id % N_QUERIED_KEYS], inet_ntoa(from->sin_addr));
+ return;
+ }
key = queried_keys[hdr->msg_id % N_QUERIED_KEYS];
if (!key) {
- debug(31, 2) ("htcpHandleTstResponse: No matching query id '%d' from '%s'\n", hdr->msg_id, inet_ntoa(from->sin_addr));
+ debug(31, 1) ("htcpHandleTstResponse: No query key for response id '%d' from '%s'\n", hdr->msg_id, inet_ntoa(from->sin_addr));
return;
}
peer = &queried_addr[hdr->msg_id % N_QUERIED_KEYS];
@@ -864,7 +869,6 @@
if ((t = d->cache_hdrs))
httpHeaderParse(&htcpReply.hdr, t, t + strlen(t));
}
- key = queried_keys[htcpReply.msg_id % N_QUERIED_KEYS];
debug(31, 3) ("htcpHandleTstResponse: key (%p) %s\n", key, storeKeyText(key));
neighborsHtcpReply(key, &htcpReply, from);
httpHeaderClean(&htcpReply.hdr);
@@ -976,7 +980,7 @@
{
htcpDataHeader hdr;
if (sz < sizeof(htcpDataHeader)) {
- debug(31, 0) ("htcpHandleData: msg size less than htcpDataHeader size\n");
+ debug(31, 1) ("htcpHandleData: msg size less than htcpDataHeader size\n");
return;
}
if (!old_squid_format) {
@@ -997,7 +1001,7 @@
debug(31, 3) ("htcpHandleData: sz = %d\n", sz);
debug(31, 3) ("htcpHandleData: length = %d\n", (int) hdr.length);
if (hdr.opcode >= HTCP_END) {
- debug(31, 0) ("htcpHandleData: client %s, opcode %d out of range\n",
+ debug(31, 1) ("htcpHandleData: client %s, opcode %d out of range\n",
inet_ntoa(from->sin_addr),
(int) hdr.opcode);
return;
@@ -1009,11 +1013,7 @@
debug(31, 3) ("htcpHandleData: RR = %d\n", (int) hdr.RR);
debug(31, 3) ("htcpHandleData: msg_id = %d\n", (int) hdr.msg_id);
if (sz < hdr.length) {
- debug(31, 0) ("htcpHandle: sz < hdr.length\n");
- return;
- }
- if (hdr.length + sizeof(htcpDataHeader) > sz) {
- debug(31, 1) ("htcpHandleData: Invalid HTCP packet from %s\n", inet_ntoa(from->sin_addr));
+ debug(31, 1) ("htcpHandleData: sz < hdr.length\n");
return;
}
/*
@@ -1051,7 +1051,7 @@
{
htcpHeader htcpHdr;
if (sz < sizeof(htcpHeader)) {
- debug(31, 0) ("htcpHandle: msg size less than htcpHeader size\n");
+ debug(31, 1) ("htcpHandle: msg size less than htcpHeader size\n");
return;
}
htcpHexdump("htcpHandle", buf, sz);
@@ -1186,10 +1186,11 @@
pktlen = htcpBuildPacket(pkt, sizeof(pkt), &stuff);
memBufClean(&mb);
if (!pktlen) {
- debug(31, 0) ("htcpQuery: htcpBuildPacket() failed\n");
+ debug(31, 1) ("htcpQuery: htcpBuildPacket() failed\n");
return;
}
htcpSend(pkt, (int) pktlen, &p->in_addr);
+ queried_id[stuff.msg_id % N_QUERIED_KEYS] = stuff.msg_id;
save_key = queried_keys[stuff.msg_id % N_QUERIED_KEYS];
storeKeyCopy(save_key, e->hash.key);
queried_addr[stuff.msg_id % N_QUERIED_KEYS] = p->in_addr;
diff -ruN squid-2.6.PRE2/src/http.c squid-2.6.RC1/src/http.c
--- squid-2.6.PRE2/src/http.c Mon Jun 5 23:57:55 2006
+++ squid-2.6.RC1/src/http.c Wed Jun 7 13:43:51 2006
@@ -1,6 +1,6 @@
/*
- * $Id: http.c,v 1.407 2006/06/06 05:57:55 hno Exp $
+ * $Id: http.c,v 1.409 2006/06/07 19:43:51 hno Exp $
*
* DEBUG: section 11 Hypertext Transfer Protocol (HTTP)
* AUTHOR: Harvest Derived
@@ -224,9 +224,21 @@
HttpHeader *hdr = &rep->header;
const int cc_mask = (rep->cache_control) ? rep->cache_control->mask : 0;
const char *v;
- if (EBIT_TEST(cc_mask, CC_PRIVATE))
+#if HTTP_VIOLATIONS
+ const refresh_t *R = NULL;
+ /* This strange looking define first looks up the frefresh pattern
+ * and then checks if the specified flag is set. The main purpose
+ * of this is to simplify the refresh pattern lookup
+ */
+#define REFRESH_OVERRIDE(flag) \
+ ((R = (R ? R : refreshLimits(httpState->entry->mem_obj->url))) , \
+ (R && R->flags.flag))
+#else
+#define REFRESH_OVERRIDE(field) 0
+#endif
+ if (EBIT_TEST(cc_mask, CC_PRIVATE) && !REFRESH_OVERRIDE(ignore_private))
return 0;
- if (EBIT_TEST(cc_mask, CC_NO_CACHE))
+ if (EBIT_TEST(cc_mask, CC_NO_CACHE) && !REFRESH_OVERRIDE(ignore_no_cache))
return 0;
if (EBIT_TEST(cc_mask, CC_NO_STORE))
return 0;
@@ -236,7 +248,7 @@
* only if a Cache-Control: public reply header is present.
* RFC 2068, sec 14.9.4
*/
- if (!EBIT_TEST(cc_mask, CC_PUBLIC))
+ if (!EBIT_TEST(cc_mask, CC_PUBLIC) && !REFRESH_OVERRIDE(ignore_auth))
return 0;
}
/* Pragma: no-cache in _replies_ is not documented in HTTP,
@@ -245,7 +257,7 @@
String s = httpHeaderGetList(hdr, HDR_PRAGMA);
const int no_cache = strListIsMember(&s, "no-cache", ',');
stringClean(&s);
- if (no_cache)
+ if (no_cache && !REFRESH_OVERRIDE(ignore_no_cache))
return 0;
}
/*
@@ -354,6 +366,17 @@
char *name = xmalloc(ilen + 1);
xstrncpy(name, item, ilen + 1);
Tolower(name);
+ if (strcmp(name, "accept-encoding") == 0) {
+ aclCheck_t checklist;
+ memset(&checklist, 0, sizeof(checklist));
+ checklist.request = request;
+ checklist.reply = reply;
+ if (aclCheckFast(Config.accessList.vary_encoding, &checklist)) {
+ stringClean(&request->vary_encoding);
+ request->vary_encoding = httpHeaderGetStrOrList(&request->header, HDR_ACCEPT_ENCODING);
+ strCat(request->vary_encoding, "");
+ }
+ }
if (strcmp(name, "*") == 0) {
/* Can not handle "Vary: *" efficiently, bail out making the response not cached */
safe_free(name);
@@ -466,6 +489,9 @@
goto no_cache;
}
entry->mem_obj->vary_headers = xstrdup(vary);
+ safe_free(entry->mem_obj->vary_encoding);
+ if (strBuf(httpState->orig_request->vary_encoding))
+ entry->mem_obj->vary_encoding = xstrdup(strBuf(httpState->orig_request->vary_encoding));
}
switch (httpCachableReply(httpState)) {
case 1:
diff -ruN squid-2.6.PRE2/src/ipc.c squid-2.6.RC1/src/ipc.c
--- squid-2.6.PRE2/src/ipc.c Mon May 29 08:48:29 2006
+++ squid-2.6.RC1/src/ipc.c Fri Jun 9 08:22:38 2006
@@ -1,6 +1,6 @@
/*
- * $Id: ipc.c,v 1.34 2006/05/29 14:48:29 hno Exp $
+ * $Id: ipc.c,v 1.36 2006/06/09 14:22:38 hno Exp $
*
* DEBUG: section 54 Interprocess Communication
* AUTHOR: Duane Wessels
@@ -229,13 +229,8 @@
*wfd = pwfd;
fd_table[prfd].flags.ipc = 1;
fd_table[pwfd].flags.ipc = 1;
- if (Config.sleep_after_fork) {
- /* XXX emulation of usleep() */
- struct timeval sl;
- sl.tv_sec = Config.sleep_after_fork / 1000000;
- sl.tv_usec = Config.sleep_after_fork % 1000000;
- select(0, NULL, NULL, NULL, &sl);
- }
+ if (Config.sleep_after_fork)
+ xusleep(Config.sleep_after_fork);
return pid;
}
/* child */
@@ -303,7 +298,7 @@
close(t3);
#if 0
/* Make sure all other filedescriptors are closed */
- for (x = 3; x < SQUID_MAXFD; x++)
+ for (x = 3; x < Squid_MaxFD; x++)
close(x);
#endif
#if HAVE_SETSID
diff -ruN squid-2.6.PRE2/src/main.c squid-2.6.RC1/src/main.c
--- squid-2.6.PRE2/src/main.c Mon Jun 5 06:44:33 2006
+++ squid-2.6.RC1/src/main.c Sun Jun 11 11:06:25 2006
@@ -1,6 +1,6 @@
/*
- * $Id: main.c,v 1.379 2006/06/05 12:44:33 hno Exp $
+ * $Id: main.c,v 1.383 2006/06/11 17:06:25 serassio Exp $
*
* DEBUG: section 1 Startup and Main Loop
* AUTHOR: Harvest Derived
@@ -37,8 +37,6 @@
#ifdef LINUX_TPROXY
#include
#include
-#undef __FD_SETSIZE
-#define __FD_SETSIZE SQUID_MAXFD
#endif
#if defined(USE_WIN32_SERVICE) && defined(_SQUID_WIN32_)
@@ -96,11 +94,10 @@
{
fprintf(stderr,
#if defined(USE_WIN32_SERVICE) && defined(_SQUID_WIN32_)
- "Usage: %s [-dhirvzCDFRVYX] [-s | -l facility] [-f config-file] [-[au] port] [-k signal] [-n name] [-O CommandLine]\n"
+ "Usage: %s [-hirvzCDFRYX] [-d level] [-s | -l facility] [-f config-file] [-u port] [-k signal] [-n name] [-O command-line]\n"
#else
- "Usage: %s [-dhvzCDFNRVYX] [-s | -l facility] [-f config-file] [-[au] port] [-k signal]\n"
+ "Usage: %s [-hvzCDFNRYX] [-d level] [-s | -l facility] [-f config-file] [-u port] [-k signal]\n"
#endif
- " -a port Specify HTTP port number (default: %d).\n"
" -d level Write debugging to stderr also.\n"
" -f file Use given config-file instead of\n"
" %s\n"
@@ -131,10 +128,9 @@
#endif
" -R Do not set REUSEADDR on port.\n"
" -S Double-check swap during rebuild.\n"
- " -V Virtual host httpd-accelerator.\n"
" -X Force full debugging.\n"
" -Y Only return UDP_HIT or UDP_MISS_NOFETCH during fast reload.\n",
- appname, CACHE_HTTP_PORT, DefaultConfigFile, CACHE_ICP_PORT);
+ appname, DefaultConfigFile, CACHE_ICP_PORT);
exit(1);
}
@@ -561,6 +557,11 @@
#endif
debug(1, 1) ("Process ID %d\n", (int) getpid());
debug(1, 1) ("With %d file descriptors available\n", Squid_MaxFD);
+#ifdef _SQUID_MSWIN_
+ debug(1, 1) ("With %d CRT stdio descriptors available\n", _getmaxstdio());
+ if (WIN32_Socks_initialized)
+ debug(1, 1) ("Windows sockets initialized\n");
+#endif
if (!configured_once)
disk_init(); /* disk_init must go before ipcache_init() */
@@ -1131,7 +1132,6 @@
mimeFreeMemory();
errorClean();
#endif
- comm_select_shutdown();
#if !XMALLOC_TRACE
if (opt_no_daemon) {
fd_close(0);
@@ -1139,6 +1139,7 @@
fd_close(2);
}
#endif
+ comm_select_shutdown();
fdDumpOpen();
fdFreeMemory();
memClean();
diff -ruN squid-2.6.PRE2/src/protos.h squid-2.6.RC1/src/protos.h
--- squid-2.6.PRE2/src/protos.h Tue Jun 6 11:40:02 2006
+++ squid-2.6.RC1/src/protos.h Mon Jun 19 17:01:11 2006
@@ -1,6 +1,6 @@
/*
- * $Id: protos.h,v 1.493 2006/06/06 17:40:02 hno Exp $
+ * $Id: protos.h,v 1.500 2006/06/19 23:01:11 hno Exp $
*
*
* SQUID Web Proxy Cache http://www.squid-cache.org/
@@ -186,8 +186,8 @@
extern void comm_select_init(void);
extern void comm_select_shutdown(void);
extern int comm_select(int);
-extern void commUpdateEvents(int fd, int force);
-extern void commSetEvents(int fd, int need_read, int need_write, int force);
+extern void commUpdateEvents(int fd);
+extern void commSetEvents(int fd, int need_read, int need_write);
extern void commUpdateReadHandler(int, PF *, void *);
extern void commUpdateWriteHandler(int, PF *, void *);
extern void comm_quick_poll_required(void);
@@ -782,6 +782,7 @@
extern int refreshCheckDigest(const StoreEntry *, time_t delta);
extern time_t getMaxAge(const char *url);
extern void refreshInit(void);
+extern const refresh_t *refreshLimits(const char *url);
extern void serverConnectionsClose(void);
extern void shut_down(int);
@@ -939,6 +940,7 @@
extern void storeReplAdd(const char *, REMOVALPOLICYCREATE *);
void storeDeferRead(StoreEntry *, int fd);
void storeResumeRead(StoreEntry *);
+void storeResetDefer(StoreEntry *);
/* store_modules.c */
extern void storeFsSetup(void);
@@ -1125,7 +1127,9 @@
extern int urlDefaultPort(protocol_t p);
extern char *urlCanonicalClean(const request_t *);
extern char *urlHostname(const char *url);
-extern void urlExtMethodConfigure(void);
+extern void parse_extension_method(const char *(*methods)[]);
+extern void free_extension_method(const char *(*_methods)[]);
+extern void dump_extension_method(StoreEntry * entry, const char *name, const char **methods);
extern void useragentOpenLog(void);
extern void useragentRotateLog(void);
@@ -1180,6 +1184,7 @@
void strwordquote(MemBuf * mb, const char *str);
void setUmask(mode_t mask);
+int xusleep(unsigned int usec);
#if USE_HTCP
extern void htcpInit(void);
@@ -1377,6 +1382,7 @@
extern void parse_wccp2_service(void *v);
extern void free_wccp2_service(void *v);
extern void dump_wccp2_service(StoreEntry * e, const char *label, void *v);
+extern int check_null_wccp2_service(void *v);
extern void parse_wccp2_service_info(void *v);
extern void free_wccp2_service_info(void *v);
@@ -1393,7 +1399,7 @@
/* ETag support */
void storeLocateVaryDone(VaryData * data);
-void storeLocateVary(StoreEntry * e, int offset, const char *vary_data, STLVCB * callback, void *cbdata);
-void storeAddVary(const char *url, const char *log_url, const method_t method, const cache_key * key, const char *etag, const char *vary, const char *vary_headers);
+void storeLocateVary(StoreEntry * e, int offset, const char *vary_data, String accept_encoding, STLVCB * callback, void *cbdata);
+void storeAddVary(const char *url, const char *log_url, const method_t method, const cache_key * key, const char *etag, const char *vary, const char *vary_headers, const char *accept_encoding);
#endif /* SQUID_PROTOS_H */
diff -ruN squid-2.6.PRE2/src/refresh.c squid-2.6.RC1/src/refresh.c
--- squid-2.6.PRE2/src/refresh.c Thu May 18 17:11:12 2006
+++ squid-2.6.RC1/src/refresh.c Wed Jun 7 07:03:41 2006
@@ -1,6 +1,6 @@
/*
- * $Id: refresh.c,v 1.59 2006/05/18 23:11:12 hno Exp $
+ * $Id: refresh.c,v 1.60 2006/06/07 13:03:41 hno Exp $
*
* DEBUG: section 22 Refresh Calculation
* AUTHOR: Harvest Derived
@@ -99,14 +99,13 @@
#define REFRESH_DEFAULT_PCT 0.20
#define REFRESH_DEFAULT_MAX (time_t)259200
-static const refresh_t *refreshLimits(const char *);
static const refresh_t *refreshUncompiledPattern(const char *);
static OBJH refreshStats;
static int refreshStaleness(const StoreEntry *, time_t, time_t, const refresh_t *, stale_flags *);
static refresh_t DefaultRefresh;
-static const refresh_t *
+const refresh_t *
refreshLimits(const char *url)
{
const refresh_t *R;
diff -ruN squid-2.6.PRE2/src/repl/Makefile.in squid-2.6.RC1/src/repl/Makefile.in
--- squid-2.6.PRE2/src/repl/Makefile.in Fri Jun 2 15:35:41 2006
+++ squid-2.6.RC1/src/repl/Makefile.in Mon Jun 12 00:10:12 2006
@@ -16,7 +16,7 @@
# Makefile for storage modules in the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.29 2006/06/02 21:35:41 hno Exp $
+# $Id: Makefile.in,v 1.32 2006/06/12 06:10:12 hno Exp $
#
srcdir = @srcdir@
@@ -149,6 +149,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -181,7 +183,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -191,10 +192,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@
diff -ruN squid-2.6.PRE2/src/squid.h squid-2.6.RC1/src/squid.h
--- squid-2.6.PRE2/src/squid.h Sun Jun 4 02:24:33 2006
+++ squid-2.6.RC1/src/squid.h Thu Jun 8 06:53:20 2006
@@ -1,6 +1,6 @@
/*
- * $Id: squid.h,v 1.240 2006/06/04 08:24:33 serassio Exp $
+ * $Id: squid.h,v 1.242 2006/06/08 12:53:20 hno Exp $
*
* AUTHOR: Duane Wessels
*
@@ -205,9 +205,6 @@
#if HAVE_BSTRING_H
#include
#endif
-#if HAVE_SYS_SELECT_H
-#include
-#endif
#if HAVE_GETOPT_H
#include
#endif
@@ -241,25 +238,6 @@
#if HAVE_SYS_MOUNT_H
#include
-#endif
-
-/*
- * We require poll.h before using poll(). If the symbols used
- * by poll() are defined elsewhere, we will need to make this
- * a more sophisticated test.
- * -- Oskar Pearson
- * -- Stewart Forster
- */
-#if USE_POLL
-#if HAVE_POLL_H
-#include
-#else /* HAVE_POLL_H */
-#undef HAVE_POLL
-#endif /* HAVE_POLL_H */
-#endif /* USE_POLL */
-
-#if USE_EPOLL
-#include
#endif
#if defined(HAVE_STDARG_H)
diff -ruN squid-2.6.PRE2/src/store.c squid-2.6.RC1/src/store.c
--- squid-2.6.PRE2/src/store.c Mon Jun 5 16:47:01 2006
+++ squid-2.6.RC1/src/store.c Mon Jun 19 17:01:11 2006
@@ -1,6 +1,6 @@
/*
- * $Id: store.c,v 1.555 2006/06/05 22:47:01 hno Exp $
+ * $Id: store.c,v 1.558 2006/06/19 23:01:11 hno Exp $
*
* DEBUG: section 20 Storage Manager
* AUTHOR: Harvest Derived
@@ -172,6 +172,7 @@
safe_free(mem->url);
safe_free(mem->log_url); /* XXX account log_url */
safe_free(mem->vary_headers);
+ safe_free(mem->vary_encoding);
memFree(mem, MEM_MEMOBJECT);
}
@@ -393,6 +394,7 @@
char *url;
char *key;
char *vary_headers;
+ char *accept_encoding;
char *etag;
squid_off_t seen_offset;
char *buf;
@@ -402,6 +404,7 @@
struct {
char *key;
char *etag;
+ char *accept_encoding;
int this_key:1;
int key_used:1;
int ignore:1;
@@ -416,6 +419,8 @@
debug(11, 2) ("free_AddVaryState: %p\n", data);
if (!state->done && state->key) {
storeAppendPrintf(state->e, "Key: %s\n", state->key);
+ if (state->accept_encoding)
+ storeAppendPrintf(state->e, "Accept-Encoding: %s\n", state->accept_encoding);
if (state->etag)
storeAppendPrintf(state->e, "ETag: %s\n", state->etag);
storeAppendPrintf(state->e, "VaryData: %s\n", state->vary_headers);
@@ -437,9 +442,11 @@
safe_free(state->url);
safe_free(state->key);
safe_free(state->vary_headers);
+ safe_free(state->accept_encoding);
safe_free(state->etag);
safe_free(state->current.key);
safe_free(state->current.etag);
+ safe_free(state->current.accept_encoding);
if (state->buf) {
memFreeBuf(state->buf_size, state->buf);
state->buf = NULL;
@@ -474,6 +481,8 @@
storeAppendPrintf(state->e, "Key: %s\n", state->current.key);
else
storeAppendPrintf(state->e, "Key: %s\n", state->key);
+ if (state->accept_encoding)
+ storeAppendPrintf(state->e, "Accept-Encoding: %s\n", state->accept_encoding);
if (state->etag)
storeAppendPrintf(state->e, "ETag: %s\n", state->etag);
storeAppendPrintf(state->e, "VaryData: %s\n", state->vary_headers);
@@ -482,6 +491,8 @@
} else if (state->current.key) {
storeAppendPrintf(state->e, "Key: %s\n", state->current.key);
safe_free(state->current.key);
+ if (state->current.accept_encoding)
+ storeAppendPrintf(state->e, "Accept-Encoding: %s\n", state->current.accept_encoding);
if (state->current.etag) {
storeAppendPrintf(state->e, "ETag: %s\n", state->current.etag);
safe_free(state->current.etag);
@@ -490,6 +501,18 @@
}
}
+static int
+strcmpnull(const char *a, const char *b)
+{
+ if (a && b)
+ return strcmp(a, b);
+ else if (a)
+ return 1;
+ else if (b)
+ return -1;
+ return 0;
+}
+
static void
storeAddVaryReadOld(void *data, char *buf, ssize_t size)
{
@@ -540,14 +563,14 @@
}
safe_free(state->current.key);
safe_free(state->current.etag);
+ safe_free(state->current.accept_encoding);
memset(&state->current, 0, sizeof(state->current));
state->current.key = xmalloc(l2 + 1);
memcpy(state->current.key, p2, l2);
state->current.key[l2] = '\0';
if (state->key) {
- if (strcmp(state->current.key, state->key) == 0) {
+ if (strcmp(state->current.key, state->key) == 0)
state->current.this_key = 1;
- }
}
debug(11, 3) ("storeAddVaryReadOld: Key: %s%s\n", state->current.key, state->current.this_key ? " (THIS)" : "");
} else if (strmatchbeg(p, "ETag: ", l) == 0) {
@@ -558,8 +581,10 @@
state->current.etag = xmalloc(l2 + 1);
memcpy(state->current.etag, p2, l2);
state->current.etag[l2] = '\0';
- if (state->etag && strcmp(state->current.etag, state->etag) == 0) {
- if (!state->key) {
+ if (state->etag && strcmp(state->current.etag, state->etag)) {
+ if (strcmpnull(state->accept_encoding, state->current.accept_encoding) != 0) {
+ /* Skip this match. It's not ours */
+ } else if (!state->key) {
state->current.this_key = 1;
} else {
const cache_key *oldkey = storeKeyScan(state->current.key);
@@ -585,6 +610,13 @@
storeAppend(state->e, p, e - p + 1);
debug(11, 3) ("storeAddVaryReadOld: %s\n", p);
}
+ } else if (strmatchbeg(p, "Accept-Encoding: ", l) == 0) {
+ p2 = p + 17;
+ l2 = e - p2;
+ safe_free(state->current.accept_encoding);
+ state->current.accept_encoding = xmalloc(l2 + 1);
+ memcpy(state->current.accept_encoding, p2, l2);
+ state->current.accept_encoding[l2] = '\0';
}
e += 1;
l -= e - p;
@@ -624,7 +656,7 @@
* At leas one of key or etag must be specified, preferably both.
*/
void
-storeAddVary(const char *url, const char *log_url, const method_t method, const cache_key * key, const char *etag, const char *vary, const char *vary_headers)
+storeAddVary(const char *url, const char *log_url, const method_t method, const cache_key * key, const char *etag, const char *vary, const char *vary_headers, const char *accept_encoding)
{
AddVaryState *state;
http_version_t version;
@@ -635,6 +667,8 @@
if (key)
state->key = xstrdup(storeKeyText(key));
state->vary_headers = xstrdup(vary_headers);
+ if (accept_encoding)
+ state->accept_encoding = xstrdup(accept_encoding);
if (etag)
state->etag = xstrdup(etag);
state->oe = storeGetPublic(url, method);
@@ -710,8 +744,10 @@
size_t buf_size;
size_t buf_offset;
char *vary_data;
+ char *accept_encoding;
squid_off_t seen_offset;
struct {
+ int ignore;
char *key;
char *etag;
} current;
@@ -738,6 +774,7 @@
}
state->current.etag = NULL; /* shared by data->entries[x] */
safe_free(state->vary_data);
+ safe_free(state->accept_encoding);
safe_free(state->current.key);
if (state->sc) {
storeClientUnregister(state->sc, state->e, state);
@@ -778,11 +815,15 @@
safe_free(state->current.key);
state->current.etag = NULL;
safe_free(state->current.etag);
+ state->current.ignore = 0;
+ state->data->broken_encoding = 0;
memset(&state->current, 0, sizeof(state->current));
state->current.key = xmalloc(l2 + 1);
memcpy(state->current.key, p2, l2);
state->current.key[l2] = '\0';
debug(11, 3) ("storeLocateVaryRead: Key: %s\n", state->current.key);
+ } else if (state->current.ignore) {
+ /* Skip this entry */
} else if (strmatchbeg(p, "ETag: ", l) == 0) {
/* etag field */
char *etag;
@@ -805,6 +846,15 @@
state->data->etag = state->current.etag;
debug(11, 2) ("storeLocateVaryRead: MATCH! %s %s\n", state->current.key, state->current.etag);
}
+ } else if (strmatchbeg(p, "Accept-Encoding: ", l) == 0) {
+ p2 = p + 17;
+ l2 = e - p2;
+ if (!state->accept_encoding)
+ state->current.ignore = 1;
+ else if (strncmp(state->accept_encoding, p2, l2) == 0 && !state->accept_encoding[l2])
+ state->data->broken_encoding = 1;
+ else
+ state->current.ignore = 1;
}
e += 1;
l -= e - p;
@@ -840,7 +890,7 @@
}
void
-storeLocateVary(StoreEntry * e, int offset, const char *vary_data, STLVCB * callback, void *cbdata)
+storeLocateVary(StoreEntry * e, int offset, const char *vary_data, String accept_encoding, STLVCB * callback, void *cbdata)
{
LocateVaryState *state;
debug(11, 2) ("storeLocateVary: %s\n", vary_data);
@@ -849,7 +899,10 @@
VaryData_pool = memPoolCreate("VaryData", sizeof(VaryData));
state = cbdataAlloc(LocateVaryState);
state->vary_data = xstrdup(vary_data);
+ if (strBuf(accept_encoding))
+ state->accept_encoding = xstrdup(strBuf(accept_encoding));
state->data = memPoolAlloc(VaryData_pool);
+ stringClean(&accept_encoding);
state->e = e;
storeLockObject(state->e);
state->callback_data = cbdata;
@@ -930,7 +983,7 @@
strListAdd(&vary, strBuf(varyhdr), ',');
stringClean(&varyhdr);
#endif
- storeAddVary(mem->url, mem->log_url, mem->method, newkey, httpHeaderGetStr(&mem->reply->header, HDR_ETAG), strBuf(vary), mem->vary_headers);
+ storeAddVary(mem->url, mem->log_url, mem->method, newkey, httpHeaderGetStr(&mem->reply->header, HDR_ETAG), strBuf(vary), mem->vary_headers, mem->vary_encoding);
stringClean(&vary);
}
} else {
@@ -1891,4 +1944,13 @@
commResumeFD(mem->serverfd);
mem->serverfd = 0;
}
+}
+
+/* Reset defer state when FD goes away under our feets */
+void
+storeResetDefer(StoreEntry * e)
+{
+ EBIT_CLR(e->flags, ENTRY_DEFER_READ);
+ if (e->mem_obj)
+ e->mem_obj->serverfd = 0;
}
diff -ruN squid-2.6.PRE2/src/store_key_md5.c squid-2.6.RC1/src/store_key_md5.c
--- squid-2.6.PRE2/src/store_key_md5.c Mon May 15 19:08:31 2006
+++ squid-2.6.RC1/src/store_key_md5.c Wed Jun 7 13:43:51 2006
@@ -1,6 +1,6 @@
/*
- * $Id: store_key_md5.c,v 1.27 2006/05/16 01:08:31 hno Exp $
+ * $Id: store_key_md5.c,v 1.29 2006/06/07 19:43:51 hno Exp $
*
* DEBUG: section 20 Storage Manager MD5 Cache Keys
* AUTHOR: Duane Wessels
@@ -136,10 +136,16 @@
MD5Init(&M);
MD5Update(&M, &m, sizeof(m));
MD5Update(&M, (unsigned char *) url, strlen(url));
- if (request->vary_headers)
+ if (request->vary_headers) {
+ MD5Update(&M, (unsigned char *) "\0V", 2);
MD5Update(&M, (unsigned char *) request->vary_headers, strlen(request->vary_headers));
+ if (strBuf(request->vary_encoding)) {
+ MD5Update(&M, (unsigned char *) "\0E", 2);
+ MD5Update(&M, (unsigned char *) strBuf(request->vary_encoding), strLen(request->vary_encoding));
+ }
+ }
if (request->urlgroup) {
- MD5Update(&M, (unsigned char *) " ", 1);
+ MD5Update(&M, (unsigned char *) "\0G", 2);
MD5Update(&M, (unsigned char *) request->urlgroup, strlen(request->urlgroup));
}
MD5Final(digest, &M);
diff -ruN squid-2.6.PRE2/src/structs.h squid-2.6.RC1/src/structs.h
--- squid-2.6.PRE2/src/structs.h Tue Jun 6 11:40:02 2006
+++ squid-2.6.RC1/src/structs.h Sat Jun 17 17:31:03 2006
@@ -1,6 +1,6 @@
/*
- * $Id: structs.h,v 1.476 2006/06/06 17:40:02 hno Exp $
+ * $Id: structs.h,v 1.481 2006/06/17 23:31:03 hno Exp $
*
*
* SQUID Web Proxy Cache http://www.squid-cache.org/
@@ -707,6 +707,7 @@
#if FOLLOW_X_FORWARDED_FOR
acl_access *followXFF;
#endif
+ acl_access *vary_encoding;
} accessList;
acl_deny_info_list *denyInfoList;
struct _authConfig {
@@ -780,7 +781,6 @@
char *ssl_engine;
} SSL;
#endif
- wordlist *ext_methods;
struct {
int high_rptm;
int high_pf;
@@ -877,10 +877,7 @@
squid_off_t bytes_read;
squid_off_t bytes_written;
int uses; /* ie # req's over persistent conn */
-#if USE_EPOLL
- unsigned epoll_state; /* keep track of the epoll state */
- unsigned epoll_backoff; /* keep track of whether the fd is backed off */
-#endif
+ int backoff; /* keep track of whether the fd is backed off */
struct _fde_disk {
DWCB *wrt_handle;
void *wrt_handle_data;
@@ -1687,6 +1684,7 @@
#endif
const char *vary_hdr;
const char *vary_headers;
+ const char *vary_encoding;
StoreEntry *ims_entry;
time_t refresh_timestamp;
};
@@ -1853,6 +1851,7 @@
time_t lastmod; /* Used on refreshes */
char *vary_hdr; /* Used when varying entities are detected. Changes how the store key is calculated */
char *vary_headers; /* Used when varying entities are detected. Changes how the store key is calculated */
+ String vary_encoding; /* Used when varying entities are detected. Changes how the store key is calculated. */
VaryData *vary;
Array *etags; /* possible known entity tags (Vary MISS) */
char *etag; /* current entity tag, cache validation */
@@ -1893,6 +1892,9 @@
unsigned int override_lastmod:1;
unsigned int reload_into_ims:1;
unsigned int ignore_reload:1;
+ unsigned int ignore_no_cache:1;
+ unsigned int ignore_private:1;
+ unsigned int ignore_auth:1;
#endif
} flags;
};
@@ -2449,6 +2451,7 @@
};
struct _VaryData {
+ int broken_encoding:1;
char *key;
char *etag;
Array etags;
diff -ruN squid-2.6.PRE2/src/tools.c squid-2.6.RC1/src/tools.c
--- squid-2.6.PRE2/src/tools.c Tue Jun 6 01:28:59 2006
+++ squid-2.6.RC1/src/tools.c Fri Jun 9 08:22:38 2006
@@ -1,6 +1,6 @@
/*
- * $Id: tools.c,v 1.240 2006/06/06 07:28:59 hno Exp $
+ * $Id: tools.c,v 1.241 2006/06/09 14:22:38 hno Exp $
*
* DEBUG: section 21 Misc Functions
* AUTHOR: Harvest Derived
@@ -1278,4 +1278,17 @@
orig_umask = umask(mask);
}
umask(mask | orig_umask);
+}
+
+/*
+ * xusleep, as usleep but accepts longer pauses
+ */
+int
+xusleep(unsigned int usec)
+{
+ /* XXX emulation of usleep() */
+ struct timeval sl;
+ sl.tv_sec = usec / 1000000;
+ sl.tv_usec = usec % 1000000;
+ return select(0, NULL, NULL, NULL, &sl);
}
diff -ruN squid-2.6.PRE2/src/unlinkd.c squid-2.6.RC1/src/unlinkd.c
--- squid-2.6.PRE2/src/unlinkd.c Mon May 15 19:12:35 2006
+++ squid-2.6.RC1/src/unlinkd.c Fri Jun 9 08:22:38 2006
@@ -1,6 +1,6 @@
/*
- * $Id: unlinkd.c,v 1.50 2006/05/16 01:12:35 hno Exp $
+ * $Id: unlinkd.c,v 1.51 2006/06/09 14:22:38 hno Exp $
*
* DEBUG: section 2 Unlink Daemon
* AUTHOR: Duane Wessels
@@ -90,19 +90,12 @@
}
/*
* If the queue length is greater than our limit, then
- * we pause for up to 100ms, hoping that unlinkd
+ * we pause for up to 10ms, hoping that unlinkd
* has some feedback for us. Maybe it just needs a slice
* of the CPU's time.
*/
- if (queuelen >= UNLINKD_QUEUE_LIMIT) {
- struct timeval to;
- fd_set R;
- FD_ZERO(&R);
- FD_SET(unlinkd_rfd, &R);
- to.tv_sec = 0;
- to.tv_usec = 100000;
- select(unlinkd_rfd + 1, &R, NULL, NULL, &to);
- }
+ if (queuelen >= UNLINKD_QUEUE_LIMIT)
+ xusleep(10000);
/*
* If there is at least one outstanding unlink request, then
* try to read a response. If there's nothing to read we'll
diff -ruN squid-2.6.PRE2/src/url.c squid-2.6.RC1/src/url.c
--- squid-2.6.PRE2/src/url.c Sun May 28 16:24:51 2006
+++ squid-2.6.RC1/src/url.c Sat Jun 17 17:31:03 2006
@@ -1,6 +1,6 @@
/*
- * $Id: url.c,v 1.143 2006/05/28 22:24:51 hno Exp $
+ * $Id: url.c,v 1.144 2006/06/17 23:31:03 hno Exp $
*
* DEBUG: section 23 URL Parsing
* AUTHOR: Duane Wessels
@@ -618,6 +618,8 @@
if (0 != strncmp("%EXT", RequestMethodStr[method], 4))
continue;
/* Don't free statically allocated "%EXTnn" string */
+ if (0 == strncmp("%EXT_", RequestMethodStr[method], 5))
+ safe_free(RequestMethodStr[method]);
RequestMethodStr[method] = xstrdup(mstr);
debug(23, 1) ("Extension method '%s' added, enum=%d\n", mstr, (int) method);
return;
@@ -626,14 +628,37 @@
}
void
-urlExtMethodConfigure(void)
+parse_extension_method(const char *(*_methods)[])
{
- wordlist *w = Config.ext_methods;
- while (w) {
- char *s;
- for (s = w->key; *s; s++)
- *s = xtoupper(*s);
- urlExtMethodAdd(w->key);
- w = w->next;
+ char *token;
+ char *t = strtok(NULL, "");
+ while ((token = strwordtok(NULL, &t))) {
+ urlExtMethodAdd(token);
+ }
+}
+
+void
+free_extension_method(const char *(*_methods)[])
+{
+ method_t method;
+ char **methods = (char **) _methods;
+ for (method = METHOD_EXT00; method < METHOD_ENUM_END; method++) {
+ if (*methods[method] != '%') {
+ char buf[32];
+ snprintf(buf, sizeof(buf), "%%EXT_%02d", method - METHOD_EXT00);
+ safe_free(methods[method]);
+ methods[method] = xstrdup(buf);
+ }
+ }
+}
+
+void
+dump_extension_method(StoreEntry * entry, const char *name, const char **methods)
+{
+ method_t method;
+ for (method = METHOD_EXT00; method < METHOD_ENUM_END; method++) {
+ if (*methods[method] != '%') {
+ storeAppendPrintf(entry, "%s %s\n", name, methods[method]);
+ }
}
}
diff -ruN squid-2.6.PRE2/src/wccp.c squid-2.6.RC1/src/wccp.c
--- squid-2.6.PRE2/src/wccp.c Wed May 24 23:18:32 2006
+++ squid-2.6.RC1/src/wccp.c Sat Jun 10 18:11:48 2006
@@ -1,6 +1,6 @@
/*
- * $Id: wccp.c,v 1.29 2006/05/25 05:18:32 hno Exp $
+ * $Id: wccp.c,v 1.30 2006/06/11 00:11:48 hno Exp $
*
* DEBUG: section 80 WCCP Support
* AUTHOR: Glenn Chisholm
@@ -78,7 +78,6 @@
int number;
};
-static int theWccpConnection = -1;
static int theWccpConnection = -1;
static struct wccp_here_i_am_t wccp_here_i_am;
static struct wccp_i_see_you_t wccp_i_see_you;
diff -ruN squid-2.6.PRE2/src/wccp2.c squid-2.6.RC1/src/wccp2.c
--- squid-2.6.PRE2/src/wccp2.c Sat Jun 3 20:54:29 2006
+++ squid-2.6.RC1/src/wccp2.c Sat Jun 10 18:12:39 2006
@@ -1,6 +1,6 @@
/*
- * $Id: wccp2.c,v 1.12 2006/06/04 02:54:29 hno Exp $
+ * $Id: wccp2.c,v 1.13 2006/06/11 00:12:39 hno Exp $
*
* DEBUG: section 80 WCCP Support
* AUTHOR: Steven WIlton
@@ -1307,6 +1307,12 @@
void
free_wccp2_service(void *v)
{
+}
+
+int
+check_null_wccp2_service(void *v)
+{
+ return !wccp2_service_list_head;
}
/*
diff -ruN squid-2.6.PRE2/tools/Makefile.in squid-2.6.RC1/tools/Makefile.in
--- squid-2.6.PRE2/tools/Makefile.in Thu May 25 06:42:27 2006
+++ squid-2.6.RC1/tools/Makefile.in Mon Jun 12 00:10:12 2006
@@ -17,7 +17,7 @@
#
# Makefile for the Squid Object Cache server
#
-# $Id: Makefile.in,v 1.2 2006/05/25 12:42:27 hno Exp $
+# $Id: Makefile.in,v 1.5 2006/06/12 06:10:12 hno Exp $
#
# Uncomment and customize the following to suit your needs:
#
@@ -163,6 +163,8 @@
MAKE_LEAKFINDER_TRUE = @MAKE_LEAKFINDER_TRUE@
MKDIR = @MKDIR@
MV = @MV@
+NEED_DISKD_FALSE = @NEED_DISKD_FALSE@
+NEED_DISKD_TRUE = @NEED_DISKD_TRUE@
NEED_OWN_MD5_FALSE = @NEED_OWN_MD5_FALSE@
NEED_OWN_MD5_TRUE = @NEED_OWN_MD5_TRUE@
NEED_OWN_SNPRINTF_FALSE = @NEED_OWN_SNPRINTF_FALSE@
@@ -195,7 +197,6 @@
SSLLIB = @SSLLIB@
STORE_LIBS = @STORE_LIBS@
STORE_MODULES = @STORE_MODULES@
-STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
STRIP = @STRIP@
TRUE = @TRUE@
@@ -205,10 +206,14 @@
USE_DNSSERVER_TRUE = @USE_DNSSERVER_TRUE@
USE_EPOLL_FALSE = @USE_EPOLL_FALSE@
USE_EPOLL_TRUE = @USE_EPOLL_TRUE@
+USE_KQUEUE_FALSE = @USE_KQUEUE_FALSE@
+USE_KQUEUE_TRUE = @USE_KQUEUE_TRUE@
USE_POLL_FALSE = @USE_POLL_FALSE@
USE_POLL_TRUE = @USE_POLL_TRUE@
USE_SELECT_FALSE = @USE_SELECT_FALSE@
USE_SELECT_TRUE = @USE_SELECT_TRUE@
+USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@
+USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@
USE_SNMP_FALSE = @USE_SNMP_FALSE@
USE_SNMP_TRUE = @USE_SNMP_TRUE@
VERSION = @VERSION@