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_engine

    New directive for hardware assisted SSL encryption

    sslproxy_*

    New directives defining how to gateway http->https

    sslpassword_program

    New helper directive to query an external program for SSL key encryption password (if any)

    +
    no_cache

    Renamed to cache to better reflect the functionaliy. no_cache still accepted.

    +
    cache

    New name for the old no_cache directive.

    cache_vary

    New directive to disable caching of Vary:ing responses

    +
    broken_vary_encoding

    New directive to work around known broken compression modules which hasn't understood the meaning of the ETag HTTP header.

    logformat

    New directive for defining custom log formats

    cache_access_log

    Renamed to access_log

    access_log

    Select what requests to log where any by what format. Support for multiple log files and multiple log formats.

    check_hostnames

    New option to disable the hostname validity/sanity checks usually performed by Squid, replacing the similar build time configure option in 2.5.

    allow_underscore

    New 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_defnames

    Allow 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_concurrency

    Activates a new and more efficient helper protocol. Requires changes in the helper.

    location_rewrite_*

    New helper hook for rewriting Location headers

    auth_param basic blankpassword

    New option to allow the use of blank passwords.

    auth_param ntlm max_challenge_reuse / max_challenge_lifetime

    No longer supported

    -
    auth_param ntlm use_ntlm_negotiate

    Now defaults to "on"

    +
    auth_param ntlm use_ntlm_negotiate

    Directive no longer supported. Use of NTLM negotiate packet is always on.

    auth_param ntlm keep_alive

    New option to fine-tune the use of HTTP keep-alive in combination with NTLM

    auth_param negotiate

    New Negotiate authentication scheme, the "next generation" scheme in the family of Microsoft authentication.

    external_acl_type

    Many 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_pattern

    Several new HTTP override/ignore options

    read_ahead_gap

    New directive to set the response buffer size.

    collapsed_forwarding

    New directive to enable an alternative optimized forwarding path when there is very many concurrent requests for the same URL.

    refresh_stale_hit

    New 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_cert

    New acl class matching the user SSL certificate (https_port)

    acl ca_cert

    New acl class matching the CA of the user SSL certificate (https_port)

    acl ext_user / ext_user_regex

    New acl matching usernames returned by external acl

    +
    follow_x_forwarded_for

    New 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_access2

    New http_access type directive but evaluated after url rewrites

    +
    htcp_access, htcp_clr_access

    Access control on HTCP requests

    log_access

    New directive to limit what gets logged.

    httpd_suppress_version_string

    Enable hiding of the Squid version

    +
    umask

    New directive to specify the minimum umask Squid should run under

    error_map

    New directive to allow dynamic rewrites of error pages

    via

    New directive to disable the use of the Via directive

    wccp2_*

    WCCP2 protocol support

    linux_tproxy, tproxy_port

    Linux TPROXY support for masquerading outgoing connections as the original client

    -
    umask

    New 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@