From: robertc <> Date: Thu, 23 Jan 2003 07:34:50 +0000 (+0000) Subject: Import of fix-ranges branch X-Git-Tag: SQUID_3_0_PRE1~440 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=528b2c611d71a201dc4ce640fbe4c3ca757e1257;p=thirdparty%2Fsquid.git Import of fix-ranges branch --- diff --git a/CREDITS b/CREDITS index 44cc8bec10..828229f833 100644 --- a/CREDITS +++ b/CREDITS @@ -1,4 +1,4 @@ -$Id: CREDITS,v 1.8 2002/07/07 18:18:11 hno Exp $ +$Id: CREDITS,v 1.9 2003/01/23 00:34:50 robertc Exp $ ============================================================================== diff --git a/Makefile.am b/Makefile.am index 3825a05dae..80a9c0fb6d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to produce Makefile.in # -# $Id: Makefile.am,v 1.17 2003/01/17 03:53:46 robertc Exp $ +# $Id: Makefile.am,v 1.18 2003/01/23 00:34:50 robertc Exp $ # AUTOMAKE_OPTIONS = dist-bzip2 subdir-objects 1.5 diff --git a/Makefile.in b/Makefile.in index 29bfdbf74a..bb6ea65de9 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,9 +15,8 @@ @SET_MAKE@ # -# $Id: Makefile.in,v 1.35 2003/01/17 03:58:49 robertc Exp $ +# $Id: Makefile.in,v 1.36 2003/01/23 00:34:50 robertc Exp $ # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -47,9 +47,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -61,6 +65,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -78,7 +86,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -91,7 +98,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -108,6 +114,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -147,21 +154,22 @@ RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \ uninstall-info-recursive all-recursive install-data-recursive \ install-exec-recursive installdirs-recursive install-recursive \ uninstall-recursive check-recursive installcheck-recursive -DIST_COMMON = README ./include/autoconf.h.in ./include/stamp-h.in \ - COPYING ChangeLog INSTALL Makefile.am Makefile.in TODO \ - acinclude.m4 aclocal.m4 cfgaux/compile cfgaux/config.guess \ - cfgaux/config.sub cfgaux/depcomp cfgaux/install-sh \ - cfgaux/missing cfgaux/mkinstalldirs configure configure.in +DIST_COMMON = README ./include/autoconf.h.in COPYING ChangeLog INSTALL \ + Makefile.am Makefile.in TODO acinclude.m4 aclocal.m4 \ + cfgaux/compile cfgaux/config.guess cfgaux/config.sub \ + cfgaux/depcomp cfgaux/install-sh cfgaux/missing \ + cfgaux/mkinstalldirs configure configure.in all: all-recursive .SUFFIXES: + +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) $(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -170,31 +178,23 @@ $(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.in $(ACLOCAL_M4) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4 cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -include/autoconf.h: include/stamp-h - @if test ! -f $@; then \ - rm -f include/stamp-h; \ - $(MAKE) include/stamp-h; \ - else :; fi -include/stamp-h: $(srcdir)/./include/autoconf.h.in $(top_builddir)/config.status - @rm -f include/stamp-h include/stamp-hT - @echo timestamp > include/stamp-hT 2> /dev/null - cd $(top_builddir) \ - && CONFIG_FILES= CONFIG_HEADERS=include/autoconf.h \ - $(SHELL) ./config.status - @mv include/stamp-hT include/stamp-h -$(srcdir)/./include/autoconf.h.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/./include/stamp-h.in + +include/autoconf.h: include/stamp-h1 @if test ! -f $@; then \ - rm -f $(srcdir)/./include/stamp-h.in; \ - $(MAKE) $(srcdir)/./include/stamp-h.in; \ + rm -f include/stamp-h1; \ + $(MAKE) include/stamp-h1; \ else :; fi -$(srcdir)/./include/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) - @rm -f $(srcdir)/./include/stamp-h.in $(srcdir)/./include/stamp-h.inT - @echo timestamp > $(srcdir)/./include/stamp-h.inT 2> /dev/null + +include/stamp-h1: $(srcdir)/./include/autoconf.h.in $(top_builddir)/config.status + @rm -f include/stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status include/autoconf.h + +$(srcdir)/./include/autoconf.h.in: @MAINTAINER_MODE_TRUE@ $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOHEADER) - @mv $(srcdir)/./include/stamp-h.inT $(srcdir)/./include/stamp-h.in + touch $(srcdir)/./include/autoconf.h.in distclean-hdr: - -rm -f include/autoconf.h + -rm -f include/autoconf.h include/stamp-h1 uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd @@ -204,7 +204,7 @@ uninstall-info-am: # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): - @set fnord $(MAKEFLAGS); amf=$$2; \ + @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ @@ -224,7 +224,7 @@ $(RECURSIVE_TARGETS): mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: - @set fnord $(MAKEFLAGS); amf=$$2; \ + @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ @@ -252,16 +252,19 @@ tags-recursive: test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) @@ -272,51 +275,61 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = . -# Avoid unsightly `./'. distdir = $(PACKAGE)-$(VERSION) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } + GZIP_ENV = --best +distcleancheck_listfiles = find . -type f -print distdir: $(DISTFILES) - -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir) + $(am__remove_distdir) mkdir $(distdir) $(mkinstalldirs) $(distdir)/./include $(distdir)/cfgaux $(distdir)/scripts - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done - for subdir in $(DIST_SUBDIRS); do \ + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ @@ -337,27 +350,33 @@ distdir: $(DISTFILES) ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r $(distdir) -dist: distdir +dist-gzip: distdir $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir) + $(am__remove_distdir) dist-bzip2: distdir $(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2 - -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist - -chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir) + $(am__remove_distdir) GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/=build mkdir $(distdir)/=inst chmod a-w $(distdir) - dc_install_base=`CDPATH=: && cd $(distdir)/=inst && pwd` \ + dc_install_base=`$(am__cd) $(distdir)/=inst && pwd` \ && cd $(distdir)/=build \ && ../configure --srcdir=.. --prefix=$$dc_install_base \ + $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ @@ -365,17 +384,24 @@ distcheck: dist && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && (test `find $$dc_install_base -type f -print | wc -l` -le 1 \ - || (echo "Error: files left after uninstall" 1>&2; \ - exit 1) ) \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && $(MAKE) $(AM_MAKEFLAGS) distclean \ + || { echo "ERROR: files left after uninstall:" ; \ + find $$dc_install_base -type f -print ; \ + exit 1; } >&2 ) \ + && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ && rm -f $(distdir).tar.gz \ - && (test `find . -type f -print | wc -l` -eq 0 \ - || (echo "Error: files left after distclean" 1>&2; \ - exit 1) ) - -chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir) + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) @echo "$(distdir).tar.gz is ready for distribution" | \ sed 'h;s/./=/g;p;x;p;x' +distcleancheck: distclean + if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile @@ -393,6 +419,7 @@ install-am: all-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -400,7 +427,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @@ -410,12 +437,8 @@ clean: clean-recursive clean-am: clean-generic mostlyclean-am -dist-all: distdir - $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2 - -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir) distclean: distclean-recursive - -rm -f config.status config.cache config.log + -rm -f $(am__CONFIG_DISTCLEAN_FILES) distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive @@ -437,7 +460,8 @@ install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive - + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf autom4te.cache maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive @@ -450,10 +474,10 @@ uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ clean-generic clean-recursive dist dist-all dist-bzip2 \ - distcheck distclean distclean-generic distclean-hdr \ - distclean-recursive distclean-tags distdir dvi dvi-am \ - dvi-recursive info info-am info-recursive install install-am \ - install-data install-data-am install-data-recursive \ + dist-gzip distcheck distclean distclean-generic distclean-hdr \ + distclean-recursive distclean-tags distcleancheck distdir dvi \ + dvi-am dvi-recursive info info-am info-recursive install \ + install-am install-data install-data-am install-data-recursive \ install-exec install-exec-am install-exec-recursive \ install-info install-info-am install-info-recursive install-man \ install-recursive install-strip installcheck installcheck-am \ diff --git a/QUICKSTART b/QUICKSTART index be8e586441..a1046d2e57 100644 --- a/QUICKSTART +++ b/QUICKSTART @@ -1,7 +1,7 @@ Squid QUICKSTART -$Id: QUICKSTART,v 1.6 2002/08/18 10:48:58 robertc Exp $ +$Id: QUICKSTART,v 1.7 2003/01/23 00:34:50 robertc Exp $ This document is intended only for people who want to get Squid running quickly It is not a substitute for the real documentation. Squid has diff --git a/aclocal.m4 b/aclocal.m4 index 387ae752d8..6bf721faca 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,6 +1,6 @@ -# aclocal.m4 generated automatically by aclocal 1.5 +# aclocal.m4 generated automatically by aclocal 1.6.3 -*- Autoconf -*- -# Copyright 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -60,11 +60,30 @@ SQUID_DEFAULT_INCLUDES #endif ]) -# Do all the work for Automake. This macro actually does too much -- -# some checks are only needed if your package does certain things. -# But this isn't really a big deal. +# Do all the work for Automake. -*- Autoconf -*- -# serial 5 +# This macro actually does too much some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 8 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, @@ -73,62 +92,52 @@ SQUID_DEFAULT_INCLUDES # CC etc. in the Makefile, will ask for an AC_PROG_CC use... -# We require 2.13 because we rely on SHELL being computed by configure. -AC_PREREQ([2.13]) - -# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) -# ----------------------------------------------------------- -# If MACRO-NAME is provided do IF-PROVIDED, else IF-NOT-PROVIDED. -# The purpose of this macro is to provide the user with a means to -# check macros which are provided without letting her know how the -# information is coded. -# If this macro is not defined by Autoconf, define it here. -ifdef([AC_PROVIDE_IFELSE], - [], - [define([AC_PROVIDE_IFELSE], - [ifdef([AC_PROVIDE_$1], - [$2], [$3])])]) +AC_PREREQ([2.52]) - -# AM_INIT_AUTOMAKE(PACKAGE,VERSION, [NO-DEFINE]) -# ---------------------------------------------- +# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow +# the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_REQUIRE([AC_PROG_INSTALL])dnl +[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl # test to see if srcdir already configured -if test "`CDPATH=:; cd $srcdir && pwd`" != "`pwd`" && +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run \"make distclean\" there first]) + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi # Define the identity of the package. -PACKAGE=$1 -AC_SUBST(PACKAGE)dnl -VERSION=$2 -AC_SUBST(VERSION)dnl -ifelse([$3],, +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], [AC_PACKAGE_TARNAME])dnl + AC_SUBST([VERSION], [AC_PACKAGE_VERSION])])dnl + +_AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) -AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])]) - -# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow -# the ones we care about. -ifdef([m4_pattern_allow], - [m4_pattern_allow([^AM_[A-Z]+FLAGS])])dnl - -# Autoconf 2.50 always computes EXEEXT. However we need to be -# compatible with 2.13, for now. So we always define EXEEXT, but we -# don't compute it. -AC_SUBST(EXEEXT) -# Similar for OBJEXT -- only we only use OBJEXT if the user actually -# requests that it be used. This is a bit dumb. -: ${OBJEXT=o} -AC_SUBST(OBJEXT) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal) +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AM_MISSING_PROG(AMTAR, tar) @@ -138,9 +147,9 @@ AM_PROG_INSTALL_STRIP # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl -AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_PROVIDE_IFELSE([AC_PROG_][CC], + +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_][CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_][CC], defn([AC_PROG_][CC])[_AM_DEPENDENCIES(CC)])])dnl @@ -149,11 +158,102 @@ AC_PROVIDE_IFELSE([AC_PROG_][CXX], [define([AC_PROG_][CXX], defn([AC_PROG_][CXX])[_AM_DEPENDENCIES(CXX)])])dnl ]) +]) + +# Copyright 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.6"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.6.3])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # # Check to make sure that the build environment is sane. # +# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + # serial 3 # AM_SANITY_CHECK @@ -197,8 +297,27 @@ Check your system clock]) fi AC_MSG_RESULT(yes)]) +# -*- Autoconf -*- -# serial 2 + +# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 3 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ @@ -220,13 +339,29 @@ if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= - am_backtick='`' - AC_MSG_WARN([${am_backtick}missing' script is too old or missing]) + AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # AM_AUX_DIR_EXPAND +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. @@ -265,19 +400,59 @@ fi # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. +# Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50]) + AC_DEFUN([AM_AUX_DIR_EXPAND], [ # expand $ac_aux_dir to an absolute path -am_aux_dir=`CDPATH=:; cd $ac_aux_dir && pwd` +am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl install_sh=${install_sh-"$am_aux_dir/install-sh"} AC_SUBST(install_sh)]) +# AM_PROG_INSTALL_STRIP + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip @@ -287,11 +462,35 @@ AC_SUBST(install_sh)]) # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # serial 4 -*- Autoconf -*- +# Copyright 1999, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be @@ -303,9 +502,9 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])]) # _AM_DEPENDENCIES(NAME) -# --------------------- +# ---------------------- # See how the compiler implements dependency checking. -# NAME is "CC", "CXX" or "OBJC". +# NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was @@ -320,7 +519,7 @@ AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'] + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) @@ -382,8 +581,7 @@ else am_cv_$1_dependencies_compiler_type=none fi ]) -$1DEPMODE="depmode=$am_cv_$1_dependencies_compiler_type" -AC_SUBST([$1DEPMODE]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) ]) @@ -401,7 +599,7 @@ else DEPDIR=_deps fi rmdir .deps 2>/dev/null -AC_SUBST(DEPDIR) +AC_SUBST([DEPDIR]) ]) @@ -416,30 +614,48 @@ if test "x$enable_dependency_tracking" != xno; then AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -pushdef([subst], defn([AC_SUBST])) -subst(AMDEPBACKSLASH) -popdef([subst]) +AC_SUBST([AMDEPBACKSLASH]) ]) -# Generate code to set up dependency tracking. -# This macro should only be invoked once -- use via AC_REQUIRE. -# Usage: -# AM_OUTPUT_DEPENDENCY_COMMANDS +# Generate code to set up dependency tracking. -*- Autoconf -*- -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],[ -AC_OUTPUT_COMMANDS([ -test x"$AMDEP_TRUE" != x"" || -for mf in $CONFIG_FILES; do - case "$mf" in - Makefile) dirpart=.;; - */Makefile) dirpart=`echo "$mf" | sed -e 's|/[^/]*$||'`;; - *) continue;; - esac - grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue +# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +#serial 2 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue # Extract the definition of DEP_FILES from the Makefile without # running `make'. DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` @@ -463,14 +679,46 @@ for mf in $CONFIG_FILES; do sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue - fdir=`echo "$file" | sed -e 's|/[^/]*$||'` - $ac_aux_dir/mkinstalldirs "$dirpart/$fdir" > /dev/null 2>&1 + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done -], [AMDEP_TRUE="$AMDEP_TRUE" -ac_aux_dir="$ac_aux_dir"])]) +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Copyright 2001 Free Software Foundation, Inc. -*- Autoconf -*- + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 # AM_MAKE_INCLUDE() # ----------------- @@ -483,7 +731,7 @@ doit: END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) -am__include='#' +am__include="#" am__quote= _am_result=none # First try GNU make style include. @@ -503,7 +751,7 @@ if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include - am__quote='"' + am__quote="\"" _am_result=BSD fi fi @@ -513,23 +761,35 @@ AC_MSG_RESULT($_am_result) rm -f confinc confmf ]) -# serial 3 +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 5 + +AC_PREREQ(2.52) # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. -# -# FIXME: Once using 2.50, use this: -# m4_match([$1], [^TRUE\|FALSE$], [AC_FATAL([$0: invalid condition: $1])])dnl AC_DEFUN([AM_CONDITIONAL], -[ifelse([$1], [TRUE], - [errprint(__file__:__line__: [$0: invalid condition: $1 -])dnl -m4exit(1)])dnl -ifelse([$1], [FALSE], - [errprint(__file__:__line__: [$0: invalid condition: $1 -])dnl -m4exit(1)])dnl +[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE]) AC_SUBST([$1_FALSE]) if $2; then @@ -538,78 +798,111 @@ if $2; then else $1_TRUE='#' $1_FALSE= -fi]) +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([conditional \"$1\" was never defined. +Usually this means the macro was only invoked conditionally.]) +fi])]) -# Like AC_CONFIG_HEADER, but automatically create stamp file. +# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- -# serial 3 +# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_PREREQ([2.52]) + +# serial 6 # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. We must strip everything past the first ":", # and everything past the last "/". -AC_PREREQ([2.12]) - -AC_DEFUN([AM_CONFIG_HEADER], -[ifdef([AC_FOREACH],dnl - [dnl init our file count if it isn't already - m4_ifndef([_AM_Config_Header_Index], m4_define([_AM_Config_Header_Index], [0])) - dnl prepare to store our destination file list for use in config.status - AC_FOREACH([_AM_File], [$1], - [m4_pushdef([_AM_Dest], m4_bpatsubst(_AM_File, [:.*])) - m4_define([_AM_Config_Header_Index], m4_incr(_AM_Config_Header_Index)) - dnl and add it to the list of files AC keeps track of, along - dnl with our hook - AC_CONFIG_HEADERS(_AM_File, -dnl COMMANDS, [, INIT-CMDS] -[# update the timestamp -echo timestamp >"AS_ESCAPE(_AM_DIRNAME(]_AM_Dest[))/stamp-h]_AM_Config_Header_Index[" -][$2]m4_ifval([$3], [, [$3]]))dnl AC_CONFIG_HEADERS - m4_popdef([_AM_Dest])])],dnl -[AC_CONFIG_HEADER([$1]) - AC_OUTPUT_COMMANDS( - ifelse(patsubst([$1], [[^ ]], []), - [], - [test -z "$CONFIG_HEADERS" || echo timestamp >dnl - patsubst([$1], [^\([^:]*/\)?.*], [\1])stamp-h]),dnl -[am_indx=1 -for am_file in $1; do - case " \$CONFIG_HEADERS " in - *" \$am_file "*) - am_dir=\`echo \$am_file |sed 's%:.*%%;s%[^/]*\$%%'\` - if test -n "\$am_dir"; then - am_tmpdir=\`echo \$am_dir |sed 's%^\(/*\).*\$%\1%'\` - for am_subdir in \`echo \$am_dir |sed 's%/% %'\`; do - am_tmpdir=\$am_tmpdir\$am_subdir/ - if test ! -d \$am_tmpdir; then - mkdir \$am_tmpdir - fi - done - fi - echo timestamp > "\$am_dir"stamp-h\$am_indx - ;; - esac - am_indx=\`expr \$am_indx + 1\` -done]) -])]) # AM_CONFIG_HEADER - # _AM_DIRNAME(PATH) # ----------------- # Like AS_DIRNAME, only do it during macro expansion AC_DEFUN([_AM_DIRNAME], - [m4_if(m4_bregexp([$1], [^.*[^/]//*[^/][^/]*/*$]), -1, - m4_if(m4_bregexp([$1], [^//\([^/]\|$\)]), -1, - m4_if(m4_bregexp([$1], [^/.*]), -1, + [m4_if(regexp([$1], [^.*[^/]//*[^/][^/]*/*$]), -1, + m4_if(regexp([$1], [^//\([^/]\|$\)]), -1, + m4_if(regexp([$1], [^/.*]), -1, [.], - m4_bpatsubst([$1], [^\(/\).*], [\1])), - m4_bpatsubst([$1], [^\(//\)\([^/].*\|$\)], [\1])), - m4_bpatsubst([$1], [^\(.*[^/]\)//*[^/][^/]*/*$], [\1]))[]dnl -]) # _AM_DIRNAME + patsubst([$1], [^\(/\).*], [\1])), + patsubst([$1], [^\(//\)\([^/].*\|$\)], [\1])), + patsubst([$1], [^\(.*[^/]\)//*[^/][^/]*/*$], [\1]))[]dnl +])# _AM_DIRNAME + + +# The stamp files are numbered to have different names. +# We could number them on a directory basis, but that's additional +# complications, let's have a unique counter. +m4_define([_AM_STAMP_Count], [0]) + + +# _AM_STAMP(HEADER) +# ----------------- +# The name of the stamp file for HEADER. +AC_DEFUN([_AM_STAMP], +[m4_define([_AM_STAMP_Count], m4_incr(_AM_STAMP_Count))dnl +AS_ESCAPE(_AM_DIRNAME(patsubst([$1], + [:.*])))/stamp-h[]_AM_STAMP_Count]) + + +# _AM_CONFIG_HEADER(HEADER[:SOURCES], COMMANDS, INIT-COMMANDS) +# ------------------------------------------------------------ +# We used to try to get a real timestamp in stamp-h. But the fear is that +# that will cause unnecessary cvs conflicts. +AC_DEFUN([_AM_CONFIG_HEADER], +[# Add the stamp file to the list of files AC keeps track of, +# along with our hook. +AC_CONFIG_HEADERS([$1], + [# update the timestamp +echo 'timestamp for $1' >"_AM_STAMP([$1])" +$2], + [$3]) +])# _AM_CONFIG_HEADER + + +# AM_CONFIG_HEADER(HEADER[:SOURCES]..., COMMANDS, INIT-COMMANDS) +# -------------------------------------------------------------- +AC_DEFUN([AM_CONFIG_HEADER], +[AC_FOREACH([_AM_File], [$1], [_AM_CONFIG_HEADER(_AM_File, [$2], [$3])]) +])# AM_CONFIG_HEADER # Add --enable-maintainer-mode option to configure. # From Jim Meyering +# Copyright 1996, 1998, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + # serial 1 AC_DEFUN([AM_MAINTAINER_MODE], @@ -632,6 +925,24 @@ AC_DEFUN([AM_MAINTAINER_MODE], # AM_PROG_CC_C_O # -------------- # Like AC_PROG_CC_C_O, but changed for automake. + +# Copyright 1999, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + AC_DEFUN([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC_C_O])dnl AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl diff --git a/cfgaux/mkinstalldirs b/cfgaux/mkinstalldirs index 5dc4f5300e..aef3fd5ccf 100755 --- a/cfgaux/mkinstalldirs +++ b/cfgaux/mkinstalldirs @@ -4,7 +4,7 @@ # Created: 1993-05-16 # Public domain -# $Id: mkinstalldirs,v 1.1 2001/08/31 11:19:07 robertc Exp $ +# $Id: mkinstalldirs,v 1.2 2003/01/23 00:34:52 robertc Exp $ errstatus=0 diff --git a/configure b/configure index 4580807fd1..eb11712ef9 100755 --- a/configure +++ b/configure @@ -1,20 +1,12 @@ #! /bin/sh -# From configure.in Revision: 1.314 . +# From configure.in Revision. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.53. +# Generated by GNU Autoconf 2.57. # # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - - ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## @@ -23,11 +15,13 @@ fi if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi -# NLS nuisances. # Support unset when possible. if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset @@ -35,34 +29,42 @@ else as_unset=false fi -(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && - { $as_unset LANG || test "${LANG+set}" != set; } || - { LANG=C; export LANG; } -(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && - { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || - { LC_ALL=C; export LC_ALL; } -(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && - { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || - { LC_TIME=C; export LC_TIME; } -(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && - { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || - { LC_CTYPE=C; export LC_CTYPE; } -(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && - { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || - { LANGUAGE=C; export LANGUAGE; } -(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && - { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || - { LC_COLLATE=C; export LC_COLLATE; } -(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && - { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || - { LC_NUMERIC=C; export LC_NUMERIC; } -(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && - { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || - { LC_MESSAGES=C; export LC_MESSAGES; } + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi # Name of the executable. -as_me=`(basename "$0") 2>/dev/null || +as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ @@ -73,6 +75,7 @@ echo X/"$0" | /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` + # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' @@ -83,15 +86,15 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conftest.sh - echo "exit 0" >>conftest.sh - chmod +x conftest.sh - if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi - rm -f conftest.sh + rm -f conf$$.sh fi @@ -139,6 +142,8 @@ do as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} @@ -211,6 +216,12 @@ else fi rm -f conf$$ conf$$.exe conf$$.file +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. @@ -227,7 +238,7 @@ as_nl=' IFS=" $as_nl" # CDPATH. -$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } +$as_unset CDPATH # Name of the host. @@ -241,6 +252,7 @@ exec 6>&1 # Initializations. # ac_default_prefix=/usr/local +ac_config_libobj_dir=. cross_compiling=no subdirs= MFLAGS= @@ -298,6 +310,8 @@ ac_includes_default="\ # 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 PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE 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 CXX CXXFLAGS ac_ct_CXX CXXDEPMODE build build_cpu build_vendor build_os host host_cpu host_vendor host_os CGIEXT ENABLE_WIN32SPECIFIC_TRUE ENABLE_WIN32SPECIFIC_FALSE 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 EXTERNAL_ACL_HELPERS ENABLE_UNLINKD_TRUE ENABLE_UNLINKD_FALSE ENABLE_XPROF_STATS_TRUE ENABLE_XPROF_STATS_FALSE CPP RANLIB ac_ct_RANLIB LN_S SH FALSE TRUE RM MV MKDIR LN PERL AR AR_R EGREP ALLOCA CRYPTLIB NEED_OWN_SNPRINTF_TRUE NEED_OWN_SNPRINTF_FALSE REGEXLIB LIBREGEX LIBOBJS XTRA_OBJS XTRA_LIBS LTLIBOBJS' +ac_subst_files='' # Initialize some variables set by options. ac_init_help= @@ -721,6 +735,9 @@ if test ! -r $srcdir/$ac_unique_file; then { (exit 1); exit 1; }; } fi fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias @@ -841,10 +858,10 @@ if test -n "$ac_init_help"; then Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-dependency-tracking Speeds up one-time builds - --enable-dependency-tracking Do not reject slow dependency extractors --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer + --disable-dependency-tracking Speeds up one-time builds + --enable-dependency-tracking Do not reject slow dependency extractors --enable-dlmalloc=LIB Compile & use the malloc package by Doug Lea --enable-gnuregex Compile GNUregex --disable-inline Don't compile trivial methods as inline. Squid @@ -936,12 +953,6 @@ Optional Features: performance improvement, but may cause problems when used with async I/O. Truncate uses more filesystem inodes than unlink.. - --enable-hostname-checks - Tells Squid to rejects any host names with - odd characters in their name to conform with - internet standards. This was the default in - prior Squid versions, but since Squid-3 Squid - no longer tries to police the use of DNS --enable-underscores Squid by default rejects any host names with _ in their name to conform with internet standards. If you disagree with this you may allow _ in @@ -1072,7 +1083,7 @@ esac # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be # absolute. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` @@ -1112,7 +1123,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was -generated by GNU Autoconf 2.53. Invocation command line was +generated by GNU Autoconf 2.57. Invocation command line was $ $0 $@ @@ -1164,27 +1175,54 @@ _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= +ac_configure_args0= +ac_configure_args1= ac_sep= -for ac_arg +ac_must_keep_next=false +for ac_pass in 1 2 do - case $ac_arg in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n ) continue ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - ac_sep=" " ;; - esac - # Get rid of the leading space. + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there @@ -1195,6 +1233,7 @@ trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo + cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## @@ -1217,6 +1256,35 @@ _ASBOX esac; } echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## @@ -1224,7 +1292,7 @@ _ASBOX ## ----------- ## _ASBOX echo - sed "/^$/d" confdefs.h + sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && @@ -1382,6 +1450,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + ac_aux_dir= for ac_dir in cfgaux $srcdir/cfgaux; do @@ -1408,6 +1477,7 @@ ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. +am__api_version="1.6" # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: @@ -1545,7 +1615,7 @@ rm conftest.sed # expand $ac_aux_dir to an absolute path -am_aux_dir=`CDPATH=:; cd $ac_aux_dir && pwd` +am_aux_dir=`cd $ac_aux_dir && pwd` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL @@ -1553,9 +1623,8 @@ if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= - am_backtick='`' - { echo "$as_me:$LINENO: WARNING: ${am_backtick}missing' script is too old or missing" >&5 -echo "$as_me: WARNING: ${am_backtick}missing' script is too old or missing" >&2;} + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi for ac_prog in gawk mawk nawk awk @@ -1598,15 +1667,15 @@ fi test -n "$AWK" && break done -echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \${MAKE}" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: - @echo 'ac_maketemp="${MAKE}"' + @echo 'ac_maketemp="$(MAKE)"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` @@ -1627,41 +1696,8 @@ echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi -# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then - enableval="$enable_dependency_tracking" - -fi; -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi - - -if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - - - -rm -f .deps 2>/dev/null -mkdir .deps 2>/dev/null -if test -d .deps; then - DEPDIR=.deps -else - # MS-DOS does not allow filenames that begin with a dot. - DEPDIR=_deps -fi -rmdir .deps 2>/dev/null - - -# test to see if srcdir already configured -if test "`CDPATH=:; cd $srcdir && pwd`" != "`pwd`" && + # test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} @@ -1669,8 +1705,9 @@ echo "$as_me: error: source directory already configured; run \"make distclean\" fi # Define the identity of the package. -PACKAGE=squid -VERSION=3.0-DEVEL + PACKAGE=squid + VERSION=3.0-DEVEL-fixrange + cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" @@ -1681,28 +1718,15 @@ cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF - -# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow -# the ones we care about. - -# Autoconf 2.50 always computes EXEEXT. However we need to be -# compatible with 2.13, for now. So we always define EXEEXT, but we -# don't compute it. - -# Similar for OBJEXT -- only we only use OBJEXT if the user actually -# requests that it be used. This is a bit dumb. -: ${OBJEXT=o} - - # Some tools Automake needs. -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal"} +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake"} +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} @@ -1715,6 +1739,92 @@ AMTAR=${AMTAR-"${am_missing_run}tar"} install_sh=${install_sh-"$am_aux_dir/install-sh"} +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on @@ -1722,8 +1832,11 @@ INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +# Add the stamp file to the list of files AC keeps track of, +# along with our hook. + ac_config_headers="$ac_config_headers include/autoconf.h" + - ac_config_headers="$ac_config_headers include/autoconf.h" echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 @@ -1746,6 +1859,7 @@ else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi + MAINT=$MAINTAINER_MODE_TRUE @@ -1960,9 +2074,7 @@ if test $ac_prog_rejected = yes; then # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift - set dummy "$as_dir/$ac_word" ${1+"$@"} - shift - ac_cv_prog_CC="$@" + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi @@ -2067,8 +2179,10 @@ fi fi -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. @@ -2093,14 +2207,12 @@ ac_compiler=`set X $ac_compile; echo $2` cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -2110,7 +2222,7 @@ main () } _ACEOF ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe" +ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. @@ -2129,26 +2241,39 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 # Be careful to initialize this variable, since it used to be cached. # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ac_cv_exeext= -for ac_file in `ls a_out.exe a.exe conftest.exe 2>/dev/null; - ls a.out conftest 2>/dev/null; - ls a.* conftest.* 2>/dev/null`; do +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb | *.xSYM ) ;; - a.out ) # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool --akim. - export ac_cv_exeext - break;; - * ) break;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; esac done else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables" >&5 -echo "$as_me: error: C compiler cannot create executables" >&2;} +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi @@ -2175,9 +2300,11 @@ if test "$cross_compiling" != yes; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'." >&5 +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'." >&2;} +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi @@ -2185,7 +2312,7 @@ fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 -rm -f a.out a.exe conftest$ac_cv_exeext +rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. @@ -2205,9 +2332,10 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. -for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; @@ -2215,8 +2343,10 @@ for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do esac done else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link" >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link" >&2;} + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi @@ -2234,14 +2364,12 @@ if test "${ac_cv_objext+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -2258,16 +2386,19 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;} +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi @@ -2284,14 +2415,12 @@ if test "${ac_cv_c_compiler_gnu+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -2318,7 +2447,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_compiler_gnu=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -2338,14 +2468,12 @@ if test "${ac_cv_prog_cc_g+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -2369,7 +2497,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_prog_cc_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -2391,16 +2520,67 @@ else CFLAGS= fi fi -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif +#line $LINENO "configure" +/* confdefs.h. */ _ACEOF -rm -f conftest.$ac_objext +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -2412,26 +2592,69 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - for ac_declaration in \ - ''\ - '#include ' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include $ac_declaration -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -2455,20 +2678,19 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 : else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_declaration -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -2492,7 +2714,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 break else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + fi rm -f conftest.$ac_objext conftest.$ac_ext done @@ -2505,7 +2728,8 @@ fi else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + fi rm -f conftest.$ac_objext conftest.$ac_ext ac_ext=c @@ -2513,8 +2737,19 @@ ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu +rm -f .deps 2>/dev/null +mkdir .deps 2>/dev/null +if test -d .deps; then + DEPDIR=.deps +else + # MS-DOS does not allow filenames that begin with a dot. + DEPDIR=_deps +fi +rmdir .deps 2>/dev/null + + + ac_config_commands="$ac_config_commands depfiles" -ac_config_commands="$ac_config_commands default-1" am_make=${MAKE-make} cat > confinc << 'END' @@ -2524,7 +2759,7 @@ END # If we don't find an include directive, just comment out the code. echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 -am__include='#' +am__include="#" am__quote= _am_result=none # First try GNU make style include. @@ -2544,7 +2779,7 @@ if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include - am__quote='"' + am__quote="\"" _am_result=BSD fi fi @@ -2554,6 +2789,27 @@ echo "$as_me:$LINENO: result: $_am_result" >&5 echo "${ECHO_T}$_am_result" >&6 rm -f confinc confmf +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval="$enable_dependency_tracking" + +fi; +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + depcc="$CC" am_compiler_list= @@ -2621,7 +2877,7 @@ fi fi echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 -CCDEPMODE="depmode=$am_cv_CC_dependencies_compiler_type" +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type ac_ext=c @@ -2750,14 +3006,12 @@ if test "${ac_cv_cxx_compiler_gnu+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -2784,7 +3038,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_compiler_gnu=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -2804,14 +3059,12 @@ if test "${ac_cv_prog_cxx_g+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -2835,7 +3088,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_prog_cxx_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -2868,15 +3122,13 @@ for ac_declaration in \ do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include $ac_declaration -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -2900,20 +3152,19 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 : else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_declaration -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -2937,7 +3188,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 break else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + fi rm -f conftest.$ac_objext conftest.$ac_ext done @@ -3020,7 +3272,7 @@ fi fi echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 -CXXDEPMODE="depmode=$am_cv_CXX_dependencies_compiler_type" +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$CC" != xcc; then @@ -3037,14 +3289,12 @@ if eval "test \"\${ac_cv_prog_cc_${ac_cc}_c_o+set}\" = set"; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -3211,6 +3461,7 @@ else ENABLE_WIN32SPECIFIC_TRUE='#' ENABLE_WIN32SPECIFIC_FALSE= fi + ;; *) @@ -3222,6 +3473,7 @@ else ENABLE_WIN32SPECIFIC_TRUE='#' ENABLE_WIN32SPECIFIC_FALSE= fi + ;; esac @@ -3459,9 +3711,7 @@ if test $ac_prog_rejected = yes; then # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift - set dummy "$as_dir/$ac_word" ${1+"$@"} - shift - ac_cv_prog_CC="$@" + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi @@ -3566,8 +3816,10 @@ fi fi -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. @@ -3597,14 +3849,12 @@ if test "${ac_cv_c_compiler_gnu+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -3631,7 +3881,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_compiler_gnu=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -3651,14 +3902,12 @@ if test "${ac_cv_prog_cc_g+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -3682,7 +3931,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_prog_cc_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -3704,6 +3954,102 @@ else CFLAGS= fi fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide @@ -3736,15 +4082,13 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include $ac_declaration -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -3768,20 +4112,19 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 : else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_declaration -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -3805,7 +4148,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 break else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + fi rm -f conftest.$ac_objext conftest.$ac_ext done @@ -3818,7 +4162,8 @@ fi else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + fi rm -f conftest.$ac_objext conftest.$ac_ext ac_ext=c @@ -3893,7 +4238,7 @@ fi fi echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 -CCDEPMODE="depmode=$am_cv_CC_dependencies_compiler_type" +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type @@ -4310,6 +4655,7 @@ else ENABLE_PINGER_TRUE='#' ENABLE_PINGER_FALSE= fi + # Check whether --enable-icmp or --disable-icmp was given. if test "${enable_icmp+set}" = set; then enableval="$enable_icmp" @@ -4329,6 +4675,7 @@ else ENABLE_PINGER_TRUE='#' ENABLE_PINGER_FALSE= fi + fi fi; @@ -4342,6 +4689,7 @@ else USE_DELAY_POOLS_TRUE='#' USE_DELAY_POOLS_FALSE= fi + # Check whether --enable-delay-pools or --disable-delay-pools was given. if test "${enable_delay_pools+set}" = set; then enableval="$enable_delay_pools" @@ -4361,6 +4709,7 @@ else USE_DELAY_POOLS_TRUE='#' USE_DELAY_POOLS_FALSE= fi + fi fi; @@ -4440,6 +4789,7 @@ else USE_SNMP_TRUE='#' USE_SNMP_FALSE= fi + # Check whether --enable-snmp or --disable-snmp was given. if test "${enable_snmp+set}" = set; then enableval="$enable_snmp" @@ -4460,6 +4810,7 @@ else USE_SNMP_TRUE='#' USE_SNMP_FALSE= fi + SNMP_MAKEFILE=./snmplib/Makefile makesnmplib=snmplib fi @@ -4527,6 +4878,7 @@ else ENABLE_HTCP_TRUE='#' ENABLE_HTCP_FALSE= fi + # Check whether --enable-htcp or --disable-htcp was given. if test "${enable_htcp+set}" = set; then enableval="$enable_htcp" @@ -4546,6 +4898,7 @@ else ENABLE_HTCP_TRUE='#' ENABLE_HTCP_FALSE= fi + fi fi; @@ -4560,6 +4913,7 @@ else ENABLE_SSL_FALSE= fi + # Check whether --enable-ssl or --disable-ssl was given. if test "${enable_ssl+set}" = set; then enableval="$enable_ssl" @@ -4579,6 +4933,7 @@ else ENABLE_SSL_TRUE='#' ENABLE_SSL_FALSE= fi + SSLLIB='-lssl -lcrypto' USE_OPENSSL=1 fi @@ -4596,6 +4951,7 @@ else fi + # Check whether --with-openssl or --without-openssl was given. if test "${with_openssl+set}" = set; then withval="$with_openssl" @@ -4631,6 +4987,7 @@ else NEED_OWN_MD5_TRUE='#' NEED_OWN_MD5_FALSE= fi + if test -z "$SSLLIB"; then SSLLIB="-lcrypto" # for MD5 routines fi @@ -4862,6 +5219,7 @@ else MAKE_LEAKFINDER_TRUE='#' MAKE_LEAKFINDER_FALSE= fi + # Check whether --enable-leakfinder or --disable-leakfinder was given. if test "${enable_leakfinder+set}" = set; then enableval="$enable_leakfinder" @@ -4882,6 +5240,7 @@ else MAKE_LEAKFINDER_TRUE='#' MAKE_LEAKFINDER_FALSE= fi + fi fi; @@ -4918,6 +5277,7 @@ else USE_DNSSERVER_TRUE='#' USE_DNSSERVER_FALSE= fi + use_dnsserver= # Check whether --enable-internal-dns or --disable-internal-dns was given. if test "${enable_internal_dns+set}" = set; then @@ -4943,6 +5303,7 @@ else USE_DNSSERVER_TRUE='#' USE_DNSSERVER_FALSE= fi + fi # Check whether --enable-truncate or --disable-truncate was given. @@ -4959,24 +5320,6 @@ _ACEOF fi; -enable_hostname_checks=0 -# Check whether --enable-hostname_checks or --disable-hostname_checks was given. -if test "${enable_hostname_checks+set}" = set; then - enableval="$enable_hostname_checks" - if test "$enableval" = "yes"; then - echo "Disabling hostname sanity checks" - enable_hostname_checks=1 - fi - -fi; -if test "$enable_hostname_checks" = 1; then - -cat >>confdefs.h <<\_ACEOF -#define CHECK_HOSTNAMES 1 -_ACEOF - -fi - # Check whether --enable-underscores or --disable-underscores was given. if test "${enable_underscores+set}" = set; then enableval="$enable_underscores" @@ -5253,6 +5596,7 @@ else ENABLE_UNLINKD_TRUE='#' ENABLE_UNLINKD_FALSE= fi + else echo "unlinkd disabled" @@ -5264,6 +5608,7 @@ else ENABLE_UNLINKD_TRUE='#' ENABLE_UNLINKD_FALSE= fi + fi # Check whether --enable-stacktraces or --disable-stacktraces was given. @@ -5289,6 +5634,7 @@ else ENABLE_XPROF_STATS_TRUE='#' ENABLE_XPROF_STATS_FALSE= fi + # Check whether --enable-cpu-profiling or --disable-cpu-profiling was given. if test "${enable_cpu_profiling+set}" = set; then enableval="$enable_cpu_profiling" @@ -5308,6 +5654,7 @@ else ENABLE_XPROF_STATS_TRUE='#' ENABLE_XPROF_STATS_FALSE= fi + fi fi; @@ -5375,18 +5722,28 @@ for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" -#include +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err + grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 @@ -5403,7 +5760,8 @@ if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + # Broken: fails on valid input. continue fi @@ -5413,13 +5771,17 @@ rm -f conftest.err conftest.$ac_ext # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err + grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 @@ -5437,7 +5799,8 @@ if test -z "$ac_cpp_err"; then continue else echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + # Passes both tests. ac_preproc_ok=: break @@ -5466,18 +5829,28 @@ for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" -#include +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err + grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 @@ -5494,7 +5867,8 @@ if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + # Broken: fails on valid input. continue fi @@ -5504,13 +5878,17 @@ rm -f conftest.err conftest.$ac_ext # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err + grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 @@ -5528,7 +5906,8 @@ if test -z "$ac_cpp_err"; then continue else echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + # Passes both tests. ac_preproc_ok=: break @@ -5541,8 +5920,10 @@ rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi @@ -6118,16 +6499,14 @@ if eval "test \"\${$as_ac_Header+set}\" = set"; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include <$ac_hdr> -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -6152,7 +6531,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + eval "$as_ac_Header=no" fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -6179,7 +6559,11 @@ else ac_cv_search_opendir=no cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus @@ -6188,12 +6572,6 @@ extern "C" /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char opendir (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -6217,7 +6595,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_cv_search_opendir="none required" else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test "$ac_cv_search_opendir" = no; then @@ -6225,7 +6604,11 @@ if test "$ac_cv_search_opendir" = no; then LIBS="-l$ac_lib $ac_func_search_save_LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus @@ -6234,12 +6617,6 @@ extern "C" /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char opendir (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -6264,7 +6641,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 break else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext done @@ -6288,7 +6666,11 @@ else ac_cv_search_opendir=no cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus @@ -6297,12 +6679,6 @@ extern "C" /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char opendir (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -6326,7 +6702,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_cv_search_opendir="none required" else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext if test "$ac_cv_search_opendir" = no; then @@ -6334,7 +6711,11 @@ if test "$ac_cv_search_opendir" = no; then LIBS="-l$ac_lib $ac_func_search_save_LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus @@ -6343,12 +6724,6 @@ extern "C" /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char opendir (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -6373,7 +6748,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 break else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext done @@ -6390,6 +6766,21 @@ fi fi +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then @@ -6397,48 +6788,59 @@ if test "${ac_cv_header_stdc+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include #include #include +int +main () +{ + + ; + return 0; +} _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_stdc=no +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no fi -rm -f conftest.err conftest.$ac_ext +rm -f conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then + $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no @@ -6451,12 +6853,16 @@ if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then + $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no @@ -6472,13 +6878,18 @@ if test $ac_cv_header_stdc = yes; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else -# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) @@ -6511,11 +6922,12 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) ac_cv_header_stdc=no fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi @@ -6551,7 +6963,11 @@ if eval "test \"\${$as_ac_Header+set}\" = set"; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default #include <$ac_header> @@ -6571,7 +6987,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + eval "$as_ac_Header=no" fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -6752,7 +7169,11 @@ echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF @@ -6771,7 +7192,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -6783,13 +7205,17 @@ echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? - egrep -v '^ *\+' conftest.er1 >conftest.err + grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 @@ -6806,7 +7232,8 @@ if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext @@ -6819,14 +7246,32 @@ case $ac_header_compiler:$ac_header_preproc in { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 @@ -6860,7 +7305,11 @@ if eval "test \"\${$as_ac_Header+set}\" = set"; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -6903,7 +7352,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + eval "$as_ac_Header=no" fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -6939,7 +7389,11 @@ if eval "test \"\${$as_ac_Header+set}\" = set"; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types @@ -6995,7 +7449,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + eval "$as_ac_Header=no" fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -7012,103 +7467,6 @@ fi done -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_stdc=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" -#include "confdefs.h" -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext -done -rm -f conftest.$ac_ext conftest.$ac_objext -CC=$ac_save_CC - -fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; - *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; -esac - echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 if test "${ac_cv_c_const+set}" = set; then @@ -7116,14 +7474,12 @@ if test "${ac_cv_c_const+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -7193,7 +7549,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_c_const=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_c_const=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -7216,16 +7573,14 @@ else # See if sys/param.h defines the BYTE_ORDER macro. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -7252,16 +7607,14 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 # It does; now see whether it defined to BIG_ENDIAN or not. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -7288,32 +7641,32 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_c_bigendian=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_c_bigendian=no fi rm -f conftest.$ac_objext conftest.$ac_ext else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + # It does not; compile a test program. if test "$cross_compiling" = yes; then - # try to guess the endianess by grep'ing values into an object file + # try to guess the endianness by grepping values into an object file ac_cv_c_bigendian=unknown cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -7334,10 +7687,10 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - if fgrep BIGenDianSyS conftest.$ac_objext >/dev/null ; then + if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then ac_cv_c_bigendian=yes fi -if fgrep LiTTleEnDian conftest.$ac_objext >/dev/null ; then +if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else @@ -7347,13 +7700,18 @@ if fgrep LiTTleEnDian conftest.$ac_objext >/dev/null ; then fi else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + fi rm -f conftest.$ac_objext conftest.$ac_ext else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ int main () { @@ -7382,11 +7740,12 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) ac_cv_c_bigendian=yes fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -7403,9 +7762,9 @@ _ACEOF no) ;; *) - { { echo "$as_me:$LINENO: error: unknown endianess + { { echo "$as_me:$LINENO: error: unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" >&5 -echo "$as_me: error: unknown endianess +echo "$as_me: error: unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} { (exit 1); exit 1; }; } ;; esac @@ -7419,14 +7778,12 @@ else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ int foo(char *); int foo (char *bar) {return 1;} -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -7450,7 +7807,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_have_ansi_prototypes="yes" else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_have_ansi_prototypes="no" fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -7473,16 +7831,14 @@ if test "${ac_cv_struct_tm+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -7506,7 +7862,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_struct_tm=time.h else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_struct_tm=sys/time.h fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -7528,7 +7885,11 @@ if test "${ac_cv_member_struct_tm_tm_gmtoff+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #if TM_IN_SYS_TIME #if HAVE_SYS_TIME_H @@ -7539,12 +7900,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -7570,11 +7925,58 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_member_struct_tm_tm_gmtoff=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#if TM_IN_SYS_TIME +#if HAVE_SYS_TIME_H +#include +#endif +#elif HAVE_TIME_H +#include +#endif + + +int +main () +{ +static struct tm ac_aggr; +if (sizeof ac_aggr.tm_gmtoff) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_tm_tm_gmtoff=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_member_struct_tm_tm_gmtoff=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_gmtoff" >&5 echo "${ECHO_T}$ac_cv_member_struct_tm_tm_gmtoff" >&6 if test $ac_cv_member_struct_tm_tm_gmtoff = yes; then @@ -7594,7 +7996,11 @@ if test "${ac_cv_type_struct_mallinfo+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #if HAVE_SYS_TYPES_H #include @@ -7603,12 +8009,6 @@ else #include #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -7635,7 +8035,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_struct_mallinfo=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_struct_mallinfo=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -7658,7 +8059,11 @@ if test "${ac_cv_member_struct_mallinfo_mxfast+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #if HAVE_SYS_TYPES_H #include @@ -7667,12 +8072,6 @@ else #include #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -7698,11 +8097,56 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_member_struct_mallinfo_mxfast=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#if HAVE_SYS_TYPES_H +#include +#endif +#if HAVE_MALLOC_H +#include +#endif + +int +main () +{ +static struct mallinfo ac_aggr; +if (sizeof ac_aggr.mxfast) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_mallinfo_mxfast=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_member_struct_mallinfo_mxfast=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi echo "$as_me:$LINENO: result: $ac_cv_member_struct_mallinfo_mxfast" >&5 echo "${ECHO_T}$ac_cv_member_struct_mallinfo_mxfast" >&6 if test $ac_cv_member_struct_mallinfo_mxfast = yes; then @@ -7722,7 +8166,11 @@ if test "${ac_cv_type_struct_rusage+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #if HAVE_SYS_TIME_H #include @@ -7731,12 +8179,6 @@ else #include #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -7763,7 +8205,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_struct_rusage=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_struct_rusage=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -7786,7 +8229,11 @@ if test "${ac_cv_member_struct_iphdr_ip_hl+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #if HAVE_SYS_TYPES_H #include @@ -7803,12 +8250,6 @@ else #endif #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -7834,11 +8275,64 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_member_struct_iphdr_ip_hl=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#if HAVE_SYS_TYPES_H +#include +#endif +#include +#include +#include +#if defined (__linux__) || defined (__CYGWIN__) +#define ip_hl ihl +#endif +#ifndef __linux__ +#ifndef __CYGWIN__ +#define iphdr ip +#endif +#endif + +int +main () +{ +static struct iphdr ac_aggr; +if (sizeof ac_aggr.ip_hl) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_iphdr_ip_hl=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_member_struct_iphdr_ip_hl=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi echo "$as_me:$LINENO: result: $ac_cv_member_struct_iphdr_ip_hl" >&5 echo "${ECHO_T}$ac_cv_member_struct_iphdr_ip_hl" >&6 if test $ac_cv_member_struct_iphdr_ip_hl = yes; then @@ -7858,14 +8352,12 @@ if test "${ac_cv_type_void_p+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -7892,7 +8384,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_void_p=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_void_p=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -7914,14 +8407,12 @@ else # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -7948,14 +8439,12 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 while :; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -7981,7 +8470,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo=`expr $ac_mid + 1` if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= @@ -7993,17 +8483,16 @@ rm -f conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -8030,14 +8519,12 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 while :; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -8063,7 +8550,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_hi=`expr '(' $ac_mid ')' - 1` if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= @@ -8075,7 +8563,8 @@ rm -f conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo= ac_hi= fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -8086,14 +8575,12 @@ while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -8119,37 +8606,40 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo=`expr '(' $ac_mid ')' + 1` fi rm -f conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_void_p=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (void *), 77" >&5 -echo "$as_me: error: cannot compute sizeof (void *), 77" >&2;} +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (void *), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (void *), 77 +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } ;; esac else if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 -echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ $ac_includes_default long longval () { return (long) (sizeof (void *)); } unsigned long ulongval () { return (long) (sizeof (void *)); } #include #include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -8192,13 +8682,16 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (void *), 77" >&5 -echo "$as_me: error: cannot compute sizeof (void *), 77" >&2;} +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (void *), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (void *), 77 +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi rm -f conftest.val @@ -8221,7 +8714,11 @@ if test "${ac_cv_type_int16_t+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -8243,12 +8740,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -8275,7 +8766,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_int16_t=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_int16_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -8298,7 +8790,11 @@ if test "${ac_cv_type_short+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -8320,12 +8816,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -8352,7 +8842,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_short=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_short=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -8368,7 +8859,11 @@ if test "${ac_cv_type_short+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -8393,12 +8888,6 @@ else -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -8425,7 +8914,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_short=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_short=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -8447,7 +8937,11 @@ else # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -8472,12 +8966,6 @@ cat >conftest.$ac_ext <<_ACEOF -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -8504,7 +8992,11 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 while :; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -8529,12 +9021,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -8560,7 +9046,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo=`expr $ac_mid + 1` if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= @@ -8572,10 +9059,15 @@ rm -f conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -8600,12 +9092,6 @@ cat >conftest.$ac_ext <<_ACEOF -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -8632,7 +9118,11 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 while :; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -8657,12 +9147,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -8688,7 +9172,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_hi=`expr '(' $ac_mid ')' - 1` if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= @@ -8700,7 +9185,8 @@ rm -f conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo= ac_hi= fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -8711,7 +9197,11 @@ while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -8736,12 +9226,6 @@ while test "x$ac_lo" != "x$ac_hi"; do -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -8767,26 +9251,35 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo=`expr '(' $ac_mid ')' + 1` fi rm -f conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_short=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77" >&5 -echo "$as_me: error: cannot compute sizeof (short), 77" >&2;} +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } ;; esac else if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 -echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -8815,12 +9308,6 @@ long longval () { return (long) (sizeof (short)); } unsigned long ulongval () { return (long) (sizeof (short)); } #include #include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -8863,13 +9350,16 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77" >&5 -echo "$as_me: error: cannot compute sizeof (short), 77" >&2;} +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi rm -f conftest.val @@ -8900,7 +9390,11 @@ if test "${ac_cv_type_int+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -8922,12 +9416,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -8954,7 +9442,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_int=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_int=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -8970,7 +9459,11 @@ if test "${ac_cv_type_int+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -8995,12 +9488,6 @@ else -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -9027,7 +9514,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_int=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_int=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -9049,7 +9537,11 @@ else # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -9074,12 +9566,6 @@ cat >conftest.$ac_ext <<_ACEOF -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -9106,7 +9592,11 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 while :; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -9131,12 +9621,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -9162,7 +9646,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo=`expr $ac_mid + 1` if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= @@ -9174,10 +9659,15 @@ rm -f conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -9202,12 +9692,6 @@ cat >conftest.$ac_ext <<_ACEOF -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -9234,7 +9718,11 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 while :; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -9259,12 +9747,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -9290,7 +9772,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_hi=`expr '(' $ac_mid ')' - 1` if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= @@ -9302,7 +9785,8 @@ rm -f conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo= ac_hi= fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -9313,7 +9797,11 @@ while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -9338,12 +9826,6 @@ while test "x$ac_lo" != "x$ac_hi"; do -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -9369,26 +9851,35 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo=`expr '(' $ac_mid ')' + 1` fi rm -f conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_int=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77" >&5 -echo "$as_me: error: cannot compute sizeof (int), 77" >&2;} +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } ;; esac else if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 -echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -9417,12 +9908,6 @@ long longval () { return (long) (sizeof (int)); } unsigned long ulongval () { return (long) (sizeof (int)); } #include #include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -9465,13 +9950,16 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77" >&5 -echo "$as_me: error: cannot compute sizeof (int), 77" >&2;} +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi rm -f conftest.val @@ -9502,7 +9990,11 @@ if test "${ac_cv_type_u_int16_t+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -9524,12 +10016,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -9556,7 +10042,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_u_int16_t=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_u_int16_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -9579,7 +10066,11 @@ if test "${ac_cv_type_uint16_t+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -9601,12 +10092,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -9633,7 +10118,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_uint16_t=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_uint16_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -9656,7 +10142,11 @@ if test "${ac_cv_type_int32_t+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -9678,12 +10168,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -9710,7 +10194,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_int32_t=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_int32_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -9733,7 +10218,11 @@ if test "${ac_cv_type_long+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -9755,12 +10244,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -9787,7 +10270,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_long=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_long=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -9803,7 +10287,11 @@ if test "${ac_cv_type_long+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -9828,12 +10316,6 @@ else -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -9860,7 +10342,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_long=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_long=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -9882,7 +10365,11 @@ else # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -9907,12 +10394,6 @@ cat >conftest.$ac_ext <<_ACEOF -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -9939,7 +10420,11 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 while :; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -9964,12 +10449,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -9995,7 +10474,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo=`expr $ac_mid + 1` if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= @@ -10007,10 +10487,15 @@ rm -f conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -10035,12 +10520,6 @@ cat >conftest.$ac_ext <<_ACEOF -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -10067,7 +10546,11 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 while :; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -10092,12 +10575,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -10123,7 +10600,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_hi=`expr '(' $ac_mid ')' - 1` if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= @@ -10135,7 +10613,8 @@ rm -f conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo= ac_hi= fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -10146,7 +10625,11 @@ while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -10171,12 +10654,6 @@ while test "x$ac_lo" != "x$ac_hi"; do -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -10202,26 +10679,35 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo=`expr '(' $ac_mid ')' + 1` fi rm -f conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_long=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77" >&5 -echo "$as_me: error: cannot compute sizeof (long), 77" >&2;} +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } ;; esac else if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 -echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -10250,12 +10736,6 @@ long longval () { return (long) (sizeof (long)); } unsigned long ulongval () { return (long) (sizeof (long)); } #include #include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -10298,13 +10778,16 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77" >&5 -echo "$as_me: error: cannot compute sizeof (long), 77" >&2;} +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi rm -f conftest.val @@ -10335,7 +10818,11 @@ if test "${ac_cv_type_u_int32_t+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -10357,12 +10844,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -10389,7 +10870,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_u_int32_t=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_u_int32_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -10412,7 +10894,11 @@ if test "${ac_cv_type_uint32_t+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -10434,12 +10920,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -10466,7 +10946,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_uint32_t=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_uint32_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -10489,7 +10970,11 @@ if test "${ac_cv_type_int64_t+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -10511,12 +10996,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -10543,7 +11022,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_int64_t=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_int64_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -10566,7 +11046,11 @@ if test "${ac_cv_type___int64+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -10588,12 +11072,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -10620,7 +11098,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type___int64=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type___int64=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -10643,7 +11122,11 @@ if test "${ac_cv_type_long_long+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -10665,12 +11148,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -10697,7 +11174,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_long_long=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_long_long=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -10713,7 +11191,11 @@ if test "${ac_cv_type_long_long+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -10738,12 +11220,6 @@ else -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -10770,7 +11246,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_long_long=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_long_long=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -10792,7 +11269,11 @@ else # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -10817,12 +11298,6 @@ cat >conftest.$ac_ext <<_ACEOF -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -10849,7 +11324,11 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 while :; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -10874,12 +11353,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -10905,7 +11378,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo=`expr $ac_mid + 1` if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= @@ -10917,10 +11391,15 @@ rm -f conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -10945,12 +11424,6 @@ cat >conftest.$ac_ext <<_ACEOF -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -10977,7 +11450,11 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 while :; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -11002,12 +11479,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -11033,7 +11504,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_hi=`expr '(' $ac_mid ')' - 1` if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= @@ -11045,7 +11517,8 @@ rm -f conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo= ac_hi= fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -11056,7 +11529,11 @@ while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -11081,12 +11558,6 @@ while test "x$ac_lo" != "x$ac_hi"; do -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -11112,26 +11583,35 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo=`expr '(' $ac_mid ')' + 1` fi rm -f conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_long_long=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77" >&5 -echo "$as_me: error: cannot compute sizeof (long long), 77" >&2;} +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } ;; esac else if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 -echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -11160,12 +11640,6 @@ long longval () { return (long) (sizeof (long long)); } unsigned long ulongval () { return (long) (sizeof (long long)); } #include #include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -11208,13 +11682,16 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77" >&5 -echo "$as_me: error: cannot compute sizeof (long long), 77" >&2;} +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi rm -f conftest.val @@ -11245,7 +11722,11 @@ if test "${ac_cv_type_u_int64_t+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -11267,12 +11748,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -11299,7 +11774,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_u_int64_t=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_u_int64_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -11322,7 +11798,11 @@ if test "${ac_cv_type_uint64_t+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -11344,12 +11824,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -11376,7 +11850,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_uint64_t=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_uint64_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -11399,7 +11874,11 @@ if test "${ac_cv_type_pid_t+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -11421,12 +11900,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -11453,7 +11926,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_pid_t=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_pid_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -11475,7 +11949,11 @@ if test "${ac_cv_type_size_t+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -11497,12 +11975,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -11529,7 +12001,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_size_t=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_size_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -11544,7 +12017,11 @@ if test "${ac_cv_type_size_t+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -11569,12 +12046,6 @@ else -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -11601,7 +12072,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_size_t=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_size_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -11623,7 +12095,11 @@ else # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -11648,12 +12124,6 @@ cat >conftest.$ac_ext <<_ACEOF -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -11680,7 +12150,11 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 while :; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -11705,12 +12179,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -11736,7 +12204,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo=`expr $ac_mid + 1` if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= @@ -11748,10 +12217,15 @@ rm -f conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -11776,12 +12250,6 @@ cat >conftest.$ac_ext <<_ACEOF -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -11808,7 +12276,11 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 while :; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -11833,12 +12305,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -11864,7 +12330,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_hi=`expr '(' $ac_mid ')' - 1` if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= @@ -11876,7 +12343,8 @@ rm -f conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo= ac_hi= fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -11887,7 +12355,11 @@ while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -11912,12 +12384,6 @@ while test "x$ac_lo" != "x$ac_hi"; do -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -11943,26 +12409,35 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo=`expr '(' $ac_mid ')' + 1` fi rm -f conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_size_t=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (size_t), 77" >&5 -echo "$as_me: error: cannot compute sizeof (size_t), 77" >&2;} +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (size_t), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (size_t), 77 +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } ;; esac else if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 -echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -11991,12 +12466,6 @@ long longval () { return (long) (sizeof (size_t)); } unsigned long ulongval () { return (long) (sizeof (size_t)); } #include #include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -12039,13 +12508,16 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (size_t), 77" >&5 -echo "$as_me: error: cannot compute sizeof (size_t), 77" >&2;} +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (size_t), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (size_t), 77 +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi rm -f conftest.val @@ -12074,7 +12546,11 @@ if test "${ac_cv_type_ssize_t+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -12096,12 +12572,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -12128,7 +12598,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_ssize_t=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_ssize_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -12150,7 +12621,11 @@ if test "${ac_cv_type_off_t+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -12172,12 +12647,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -12204,7 +12673,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_off_t=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_off_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -12219,7 +12689,11 @@ if test "${ac_cv_type_off_t+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -12244,12 +12718,6 @@ else -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -12276,7 +12744,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_off_t=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_off_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -12298,7 +12767,11 @@ else # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -12323,12 +12796,6 @@ cat >conftest.$ac_ext <<_ACEOF -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -12355,7 +12822,11 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 while :; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -12380,12 +12851,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -12411,7 +12876,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo=`expr $ac_mid + 1` if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= @@ -12423,10 +12889,15 @@ rm -f conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -12451,12 +12922,6 @@ cat >conftest.$ac_ext <<_ACEOF -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -12483,7 +12948,11 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 while :; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -12508,12 +12977,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -12539,7 +13002,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_hi=`expr '(' $ac_mid ')' - 1` if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= @@ -12551,7 +13015,8 @@ rm -f conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo= ac_hi= fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -12562,7 +13027,11 @@ while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -12587,12 +13056,6 @@ while test "x$ac_lo" != "x$ac_hi"; do -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -12618,26 +13081,35 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_lo=`expr '(' $ac_mid ')' + 1` fi rm -f conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_off_t=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t), 77" >&5 -echo "$as_me: error: cannot compute sizeof (off_t), 77" >&2;} +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (off_t), 77 +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } ;; esac else if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 -echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include @@ -12666,12 +13138,6 @@ long longval () { return (long) (sizeof (off_t)); } unsigned long ulongval () { return (long) (sizeof (off_t)); } #include #include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -12714,13 +13180,16 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t), 77" >&5 -echo "$as_me: error: cannot compute sizeof (off_t), 77" >&2;} +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (off_t), 77 +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi rm -f conftest.val @@ -12749,7 +13218,11 @@ if test "${ac_cv_type_mode_t+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -12771,12 +13244,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -12803,7 +13270,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_mode_t=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_mode_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -12825,7 +13293,11 @@ if test "${ac_cv_type_fd_mask+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* What a mess.. many systems have added the (now standard) bit types * in their own ways, so we need to scan a wide variety of headers to @@ -12847,12 +13319,6 @@ else #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -12879,7 +13345,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_fd_mask=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_fd_mask=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -12904,14 +13371,12 @@ if test "${ac_cv_working_alloca_h+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -12935,7 +13400,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_cv_working_alloca_h=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_working_alloca_h=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -12957,7 +13423,11 @@ if test "${ac_cv_func_alloca_works+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #ifdef __GNUC__ # define alloca __builtin_alloca #else @@ -12979,12 +13449,6 @@ char *alloca (); # endif #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -13008,7 +13472,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_cv_func_alloca_works=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_func_alloca_works=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -13042,7 +13507,11 @@ if test "${ac_cv_os_cray+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #if defined(CRAY) && ! defined(CRAY2) webecray #else @@ -13051,7 +13520,7 @@ wenotbecray _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "webecray" >/dev/null 2>&1; then + $EGREP "webecray" >/dev/null 2>&1; then ac_cv_os_cray=yes else ac_cv_os_cray=no @@ -13071,37 +13540,44 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ +#ifdef __STDC__ +# include +#else +# include +#endif /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -f = $ac_func; +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif +int +main () +{ +return f != $ac_func; ; return 0; } @@ -13121,7 +13597,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -13150,7 +13627,11 @@ else else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ int find_stack_direction () { @@ -13186,11 +13667,12 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) ac_cv_c_stack_direction=-1 fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 @@ -13211,7 +13693,11 @@ if test "${ac_cv_type_socklen_t+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -13220,12 +13706,6 @@ else #include #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -13252,7 +13732,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_socklen_t=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_socklen_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -13275,17 +13756,15 @@ if test "${ac_cv_type_mtyp_t+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include #include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -13312,7 +13791,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_type_mtyp_t=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_mtyp_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -13338,15 +13818,13 @@ else LIBS="-lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -13370,7 +13848,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_cv_lib_nsl_main=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_lib_nsl_main=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -13397,15 +13876,13 @@ else LIBS="-lsocket $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -13429,7 +13906,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_cv_lib_socket_main=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_lib_socket_main=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -13455,19 +13933,17 @@ else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include #include #include #include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -13494,7 +13970,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 squid_cv_unixsocket=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + squid_cv_unixsocket=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -13522,15 +13999,13 @@ else LIBS="-lgnumalloc $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -13554,7 +14029,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_cv_lib_gnumalloc_main=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_lib_gnumalloc_main=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -13596,15 +14072,13 @@ else LIBS="-lmalloc $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -13628,7 +14102,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_cv_lib_malloc_main=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_lib_malloc_main=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -13660,15 +14135,13 @@ else LIBS="-lbsd $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -13692,7 +14165,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_cv_lib_bsd_main=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_lib_bsd_main=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -13718,15 +14192,13 @@ else LIBS="-lregex $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -13750,7 +14222,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_cv_lib_regex_main=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_lib_regex_main=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -13772,7 +14245,11 @@ else LIBS="-lbind $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus @@ -13781,12 +14258,6 @@ extern "C" /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -13810,7 +14281,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_cv_lib_bind_gethostbyname=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_lib_bind_gethostbyname=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -13842,7 +14314,11 @@ else LIBS="-lresolv $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus @@ -13851,12 +14327,6 @@ extern "C" /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char inet_aton (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -13880,7 +14350,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_cv_lib_resolv_inet_aton=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_lib_resolv_inet_aton=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -13899,7 +14370,11 @@ else LIBS="-l44bsd $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus @@ -13908,12 +14383,6 @@ extern "C" /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char inet_aton (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -13937,7 +14406,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_cv_lib_44bsd_inet_aton=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_lib_44bsd_inet_aton=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -13966,15 +14436,13 @@ else LIBS="-lresolv $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -13998,7 +14466,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_cv_lib_resolv_main=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_lib_resolv_main=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -14028,15 +14497,13 @@ else LIBS="-lm $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -14060,7 +14527,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_cv_lib_m_main=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_lib_m_main=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -14087,7 +14555,11 @@ else LIBS="-lcrypt $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus @@ -14095,13 +14567,7 @@ extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char crypt (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif +char crypt (); int main () { @@ -14125,7 +14591,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_cv_lib_crypt_crypt=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_lib_crypt_crypt=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -14150,7 +14617,11 @@ else LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus @@ -14159,12 +14630,6 @@ extern "C" /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -14188,7 +14653,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_lib_dl_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -14238,15 +14704,13 @@ else LIBS="-lpthread $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -14270,7 +14734,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_cv_lib_pthread_main=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_lib_pthread_main=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -14300,7 +14765,11 @@ else LIBS="-lrt $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus @@ -14309,12 +14778,6 @@ extern "C" /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char aio_read (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -14338,7 +14801,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_cv_lib_rt_aio_read=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_lib_rt_aio_read=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -14369,7 +14833,11 @@ else LIBS="-lintl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus @@ -14378,12 +14846,6 @@ extern "C" /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char strftime (); -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -14407,7 +14869,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_cv_lib_intl_strftime=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_lib_intl_strftime=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -14581,7 +15044,6 @@ fi - for ac_func in \ @@ -14619,7 +15081,6 @@ for ac_func in \ regfree \ res_init \ rint \ - sbrk \ select \ seteuid \ setgroups \ @@ -14646,37 +15107,44 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ +#ifdef __STDC__ +# include +#else +# include +#endif /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -f = $ac_func; +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif +int +main () +{ +return f != $ac_func; ; return 0; } @@ -14696,7 +15164,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -14753,13 +15222,19 @@ if test "${ac_cv_func_setresuid+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 -echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include int main() { @@ -14786,11 +15261,12 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) ac_cv_func_setresuid="no" fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi @@ -14813,6 +15289,7 @@ else NEED_OWN_SNPRINTF_TRUE='#' NEED_OWN_SNPRINTF_FALSE= fi + if test "$ac_cv_func_snprintf" = "no" || test "$ac_cv_func_vsnprintf" = "no" ; then @@ -14823,6 +15300,7 @@ else NEED_OWN_SNPRINTF_TRUE='#' NEED_OWN_SNPRINTF_FALSE= fi + fi if test "$IPF_TRANSPARENT" ; then @@ -14937,15 +15415,13 @@ if test "$ac_cv_func_regcomp" = "no" || test "$USE_GNUREGEX" = "yes" ; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -14969,7 +15445,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 USE_GNUREGEX="no" else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + USE_GNUREGEX="yes" fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -15006,37 +15483,44 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ +#ifdef __STDC__ +# include +#else +# include +#endif /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); -char (*f) (); - -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif -int -main () -{ /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -f = $ac_func; +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif +int +main () +{ +return f != $ac_func; ; return 0; } @@ -15056,7 +15540,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + eval "$as_ac_var=no" fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext @@ -15082,7 +15567,11 @@ if test "$cross_compiling" = yes; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #if HAVE_STDIO_H #include @@ -15121,11 +15610,12 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) DEFAULT_FD_SETSIZE=256 fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $DEFAULT_FD_SETSIZE" >&5 echo "${ECHO_T}$DEFAULT_FD_SETSIZE" >&6 @@ -15155,7 +15645,11 @@ else else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -15229,11 +15723,12 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) SQUID_MAXFD=256 fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $SQUID_MAXFD" >&5 echo "${ECHO_T}$SQUID_MAXFD" >&6 @@ -15259,7 +15754,11 @@ if test "$cross_compiling" = yes; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -15294,11 +15793,12 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) SQUID_DETECT_UDP_SO_SNDBUF=16384 fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $SQUID_DETECT_UDP_SO_SNDBUF" >&5 echo "${ECHO_T}$SQUID_DETECT_UDP_SO_SNDBUF" >&6 @@ -15315,7 +15815,11 @@ if test "$cross_compiling" = yes; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -15350,11 +15854,12 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) SQUID_DETECT_UDP_SO_RCVBUF=16384 fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $SQUID_DETECT_UDP_SO_RCVBUF" >&5 echo "${ECHO_T}$SQUID_DETECT_UDP_SO_RCVBUF" >&6 @@ -15371,7 +15876,11 @@ if test "$cross_compiling" = yes; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -15406,11 +15915,12 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) SQUID_TCP_SO_SNDBUF=16384 fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $SQUID_TCP_SO_SNDBUF" >&5 echo "${ECHO_T}$SQUID_TCP_SO_SNDBUF" >&6 @@ -15427,7 +15937,11 @@ if test "$cross_compiling" = yes; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -15462,11 +15976,12 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) SQUID_TCP_SO_RCVBUF=16384 fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $SQUID_TCP_SO_RCVBUF" >&5 echo "${ECHO_T}$SQUID_TCP_SO_RCVBUF" >&6 @@ -15483,14 +15998,12 @@ if test "${ac_cv_needs_sys_errlist+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -15514,7 +16027,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_needs_sys_errlist="no" else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_needs_sys_errlist="yes" fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -15534,14 +16048,12 @@ echo "$as_me:$LINENO: checking for libresolv _dns_ttl_ hack" >&5 echo $ECHO_N "checking for libresolv _dns_ttl_ hack... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ extern int _dns_ttl_; -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -15571,7 +16083,8 @@ _ACEOF else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -15584,7 +16097,11 @@ if test "$cross_compiling" = yes; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include @@ -15617,11 +16134,12 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) INET_NTOA_RESULT="broken" fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi if test "$INET_NTOA_RESULT" = "1.2.3.4" ; then echo "$as_me:$LINENO: result: \"yes\"" >&5 @@ -15642,19 +16160,17 @@ echo "$as_me:$LINENO: checking for working statvfs() interface" >&5 echo $ECHO_N "checking for working statvfs() interface... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #include #include #include #include -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -15683,7 +16199,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_func_statvfs=yes else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_func_statvfs=no fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -15705,7 +16222,11 @@ if test "${ac_cv_have_res_nsaddr_list+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #if HAVE_SYS_TYPES_H #include @@ -15723,12 +16244,6 @@ else #include #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -15752,7 +16267,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_have_res_nsaddr_list="yes" else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_have_res_nsaddr_list="no" fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -15775,7 +16291,11 @@ if test "${ac_cv_have_res_ns_list+set}" = set; then else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" -#include "confdefs.h" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ #if HAVE_SYS_TYPES_H #include @@ -15793,12 +16313,6 @@ else #include #endif -#ifdef F77_DUMMY_MAIN -# ifdef __cplusplus - extern "C" -# endif - int F77_DUMMY_MAIN() { return 1; } -#endif int main () { @@ -15822,7 +16336,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_cv_have_res_ns_list="yes" else echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_have_res_ns_list="no" fi rm -f conftest.$ac_objext conftest.$ac_ext @@ -15859,7 +16374,7 @@ fi rm -f core -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 src/fs/aufs/Makefile src/fs/coss/Makefile src/fs/diskd/Makefile src/fs/null/Makefile src/fs/ufs/Makefile test-suite/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/multi-domain-NTLM/Makefile helpers/basic_auth/SASL/Makefile helpers/basic_auth/winbind/Makefile helpers/digest_auth/Makefile helpers/digest_auth/password/Makefile helpers/ntlm_auth/Makefile helpers/ntlm_auth/fakeauth/Makefile helpers/ntlm_auth/no_check/Makefile helpers/ntlm_auth/SMB/Makefile helpers/ntlm_auth/SMB/smbval/Makefile helpers/ntlm_auth/winbind/Makefile helpers/external_acl/Makefile helpers/external_acl/ip_user/Makefile helpers/external_acl/ldap_group/Makefile helpers/external_acl/unix_group/Makefile helpers/external_acl/wbinfo_group/Makefile helpers/external_acl/winbind_group/Makefile" + 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 src/fs/aufs/Makefile src/fs/coss/Makefile src/fs/diskd/Makefile src/fs/null/Makefile src/fs/ufs/Makefile test-suite/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/multi-domain-NTLM/Makefile helpers/basic_auth/SASL/Makefile helpers/basic_auth/winbind/Makefile helpers/digest_auth/Makefile helpers/digest_auth/password/Makefile helpers/ntlm_auth/Makefile helpers/ntlm_auth/fakeauth/Makefile helpers/ntlm_auth/no_check/Makefile helpers/ntlm_auth/SMB/Makefile helpers/ntlm_auth/SMB/smbval/Makefile helpers/ntlm_auth/winbind/Makefile helpers/external_acl/Makefile helpers/external_acl/ip_user/Makefile helpers/external_acl/ldap_group/Makefile helpers/external_acl/unix_group/Makefile helpers/external_acl/wbinfo_group/Makefile helpers/external_acl/winbind_group/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -15871,7 +16386,7 @@ cat >confcache <<\_ACEOF # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # -# `ac_cv_env_foo' variables (set or unset) will be overriden when +# `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. @@ -15906,7 +16421,7 @@ _ACEOF t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache -if cmp -s $cache_file confcache; then :; else +if diff $cache_file confcache >/dev/null 2>&1; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file @@ -15937,6 +16452,203 @@ fi DEFS=-DHAVE_CONFIG_H +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${ENABLE_WIN32SPECIFIC_TRUE}" && test -z "${ENABLE_WIN32SPECIFIC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"ENABLE_WIN32SPECIFIC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"ENABLE_WIN32SPECIFIC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${ENABLE_WIN32SPECIFIC_TRUE}" && test -z "${ENABLE_WIN32SPECIFIC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"ENABLE_WIN32SPECIFIC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"ENABLE_WIN32SPECIFIC\" 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 +echo "$as_me: error: conditional \"ENABLE_PINGER\" 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 +echo "$as_me: error: conditional \"ENABLE_PINGER\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${USE_DELAY_POOLS_TRUE}" && test -z "${USE_DELAY_POOLS_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"USE_DELAY_POOLS\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"USE_DELAY_POOLS\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${USE_DELAY_POOLS_TRUE}" && test -z "${USE_DELAY_POOLS_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"USE_DELAY_POOLS\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"USE_DELAY_POOLS\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${USE_SNMP_TRUE}" && test -z "${USE_SNMP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"USE_SNMP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"USE_SNMP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${USE_SNMP_TRUE}" && test -z "${USE_SNMP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"USE_SNMP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"USE_SNMP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${ENABLE_HTCP_TRUE}" && test -z "${ENABLE_HTCP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"ENABLE_HTCP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"ENABLE_HTCP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${ENABLE_HTCP_TRUE}" && test -z "${ENABLE_HTCP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"ENABLE_HTCP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"ENABLE_HTCP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${ENABLE_SSL_TRUE}" && test -z "${ENABLE_SSL_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"ENABLE_SSL\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"ENABLE_SSL\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${ENABLE_SSL_TRUE}" && test -z "${ENABLE_SSL_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"ENABLE_SSL\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"ENABLE_SSL\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${NEED_OWN_MD5_TRUE}" && test -z "${NEED_OWN_MD5_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"NEED_OWN_MD5\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"NEED_OWN_MD5\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${NEED_OWN_MD5_TRUE}" && test -z "${NEED_OWN_MD5_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"NEED_OWN_MD5\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"NEED_OWN_MD5\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${MAKE_LEAKFINDER_TRUE}" && test -z "${MAKE_LEAKFINDER_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"MAKE_LEAKFINDER\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"MAKE_LEAKFINDER\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${MAKE_LEAKFINDER_TRUE}" && test -z "${MAKE_LEAKFINDER_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"MAKE_LEAKFINDER\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"MAKE_LEAKFINDER\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${USE_DNSSERVER_TRUE}" && test -z "${USE_DNSSERVER_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"USE_DNSSERVER\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"USE_DNSSERVER\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${USE_DNSSERVER_TRUE}" && test -z "${USE_DNSSERVER_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"USE_DNSSERVER\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"USE_DNSSERVER\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${ENABLE_UNLINKD_TRUE}" && test -z "${ENABLE_UNLINKD_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"ENABLE_UNLINKD\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"ENABLE_UNLINKD\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${ENABLE_UNLINKD_TRUE}" && test -z "${ENABLE_UNLINKD_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"ENABLE_UNLINKD\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"ENABLE_UNLINKD\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${ENABLE_XPROF_STATS_TRUE}" && test -z "${ENABLE_XPROF_STATS_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"ENABLE_XPROF_STATS\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"ENABLE_XPROF_STATS\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${ENABLE_XPROF_STATS_TRUE}" && test -z "${ENABLE_XPROF_STATS_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"ENABLE_XPROF_STATS\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"ENABLE_XPROF_STATS\" 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 +echo "$as_me: error: conditional \"NEED_OWN_SNPRINTF\" 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 +echo "$as_me: error: conditional \"NEED_OWN_SNPRINTF\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files @@ -15951,11 +16663,12 @@ cat >$CONFIG_STATUS <<_ACEOF # configure, is in config.log if it exists. debug=false +ac_cs_recheck=false +ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF - ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## @@ -15964,11 +16677,13 @@ cat >>$CONFIG_STATUS <<\_ACEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi -# NLS nuisances. # Support unset when possible. if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset @@ -15976,34 +16691,42 @@ else as_unset=false fi -(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && - { $as_unset LANG || test "${LANG+set}" != set; } || - { LANG=C; export LANG; } -(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && - { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || - { LC_ALL=C; export LC_ALL; } -(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && - { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || - { LC_TIME=C; export LC_TIME; } -(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && - { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || - { LC_CTYPE=C; export LC_CTYPE; } -(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && - { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || - { LANGUAGE=C; export LANGUAGE; } -(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && - { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || - { LC_COLLATE=C; export LC_COLLATE; } -(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && - { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || - { LC_NUMERIC=C; export LC_NUMERIC; } -(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && - { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || - { LC_MESSAGES=C; export LC_MESSAGES; } + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi # Name of the executable. -as_me=`(basename "$0") 2>/dev/null || +as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ @@ -16014,6 +16737,7 @@ echo X/"$0" | /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` + # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' @@ -16024,15 +16748,15 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conftest.sh - echo "exit 0" >>conftest.sh - chmod +x conftest.sh - if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi - rm -f conftest.sh + rm -f conf$$.sh fi @@ -16081,6 +16805,8 @@ do as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} @@ -16154,6 +16880,12 @@ else fi rm -f conf$$ conf$$.exe conf$$.file +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. @@ -16170,7 +16902,7 @@ as_nl=' IFS=" $as_nl" # CDPATH. -$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } +$as_unset CDPATH exec 6>&1 @@ -16187,7 +16919,7 @@ _ASBOX cat >&5 <<_CSEOF This file was extended by $as_me, which was -generated by GNU Autoconf 2.53. Invocation command line was +generated by GNU Autoconf 2.57. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -16227,6 +16959,7 @@ Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit + -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] @@ -16249,7 +16982,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ config.status -configured by $0, generated by GNU Autoconf 2.53, +configured by $0, generated by GNU Autoconf 2.57, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 @@ -16270,25 +17003,25 @@ do --*=*) ac_option=`expr "x$1" : 'x\([^=]*\)='` ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - shift - set dummy "$ac_option" "$ac_optarg" ${1+"$@"} - shift + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift ;; - -*);; *) # This is not an option, so the user has probably given explicit # arguments. + ac_option=$1 ac_need_defaults=false;; esac - case $1 in + case $ac_option in # Handling of the options. _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion" - exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;; -_ACEOF cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) @@ -16303,13 +17036,16 @@ Try \`$0 --help' for more information." >&2;} --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) - shift - CONFIG_FILES="$CONFIG_FILES $1" + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) - shift - CONFIG_HEADERS="$CONFIG_HEADERS $1" + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 @@ -16324,6 +17060,20 @@ Try \`$0 --help' for more information." >&2;} shift done +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + _ACEOF cat >>$CONFIG_STATUS <<_ACEOF @@ -16331,8 +17081,7 @@ cat >>$CONFIG_STATUS <<_ACEOF # INIT-COMMANDS section. # -AMDEP_TRUE="$AMDEP_TRUE" -ac_aux_dir="$ac_aux_dir" +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF @@ -16389,7 +17138,7 @@ do "helpers/external_acl/unix_group/Makefile" ) CONFIG_FILES="$CONFIG_FILES helpers/external_acl/unix_group/Makefile" ;; "helpers/external_acl/wbinfo_group/Makefile" ) CONFIG_FILES="$CONFIG_FILES helpers/external_acl/wbinfo_group/Makefile" ;; "helpers/external_acl/winbind_group/Makefile" ) CONFIG_FILES="$CONFIG_FILES helpers/external_acl/winbind_group/Makefile" ;; - "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "include/autoconf.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/autoconf.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} @@ -16407,6 +17156,9 @@ if $ac_need_defaults; then test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. # Create a temporary directory, and hook for its removal unless debugging. $debug || { @@ -16415,17 +17167,17 @@ $debug || } # Create a (secure) tmp directory for tmp files. -: ${TMPDIR=/tmp} + { - tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { - tmp=$TMPDIR/cs$$-$RANDOM + tmp=./confstat$$-$RANDOM (umask 077 && mkdir $tmp) } || { - echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } @@ -16478,8 +17230,6 @@ s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@PACKAGE@,$PACKAGE,;t t s,@VERSION@,$VERSION,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t s,@ACLOCAL@,$ACLOCAL,;t t s,@AUTOCONF@,$AUTOCONF,;t t s,@AUTOMAKE@,$AUTOMAKE,;t t @@ -16487,13 +17237,11 @@ s,@AUTOHEADER@,$AUTOHEADER,;t t s,@MAKEINFO@,$MAKEINFO,;t t s,@AMTAR@,$AMTAR,;t t s,@install_sh@,$install_sh,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t s,@AWK@,$AWK,;t t s,@SET_MAKE@,$SET_MAKE,;t t -s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t -s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t -s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t -s,@DEPDIR@,$DEPDIR,;t t s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t s,@MAINT@,$MAINT,;t t @@ -16502,8 +17250,14 @@ s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@DEPDIR@,$DEPDIR,;t t s,@am__include@,$am__include,;t t s,@am__quote@,$am__quote,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t s,@CCDEPMODE@,$CCDEPMODE,;t t s,@CXX@,$CXX,;t t s,@CXXFLAGS@,$CXXFLAGS,;t t @@ -16576,6 +17330,7 @@ s,@LN@,$LN,;t t s,@PERL@,$PERL,;t t s,@AR@,$AR,;t t s,@AR_R@,$AR_R,;t t +s,@EGREP@,$EGREP,;t t s,@ALLOCA@,$ALLOCA,;t t s,@CRYPTLIB@,$CRYPTLIB,;t t s,@NEED_OWN_SNPRINTF_TRUE@,$NEED_OWN_SNPRINTF_TRUE,;t t @@ -16585,6 +17340,7 @@ s,@LIBREGEX@,$LIBREGEX,;t t s,@LIBOBJS@,$LIBOBJS,;t t s,@XTRA_OBJS@,$XTRA_OBJS,;t t s,@XTRA_LIBS@,$XTRA_LIBS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF _ACEOF @@ -16655,25 +17411,30 @@ echo X"$ac_file" | /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` - { case "$ac_dir" in - [\\/]* | ?:[\\/]* ) as_incr_dir=;; - *) as_incr_dir=.;; -esac -as_dummy="$ac_dir" -for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do - case $as_mkdir_dir in - # Skip DOS drivespec - ?:) as_incr_dir=$as_mkdir_dir ;; - *) - as_incr_dir=$as_incr_dir/$as_mkdir_dir - test -d "$as_incr_dir" || - mkdir "$as_incr_dir" || - { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; } - ;; - esac -done; } + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } ac_builddir=. @@ -16703,7 +17464,7 @@ esac # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be # absolute. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` @@ -16893,7 +17654,7 @@ _ACEOF # Break up conftest.defines because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -echo ' if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS echo ' :' >>$CONFIG_STATUS rm -f conftest.tail @@ -16917,7 +17678,7 @@ do mv conftest.tail conftest.defines done rm -f conftest.defines -echo ' fi # egrep' >>$CONFIG_STATUS +echo ' fi # grep' >>$CONFIG_STATUS echo >>$CONFIG_STATUS # Break up conftest.undefs because some shells have a limit on the size @@ -16957,7 +17718,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF cat $tmp/in >>$tmp/config.h rm -f $tmp/in if test x"$ac_file" != x-; then - if cmp -s $ac_file $tmp/config.h 2>/dev/null; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else @@ -16973,25 +17734,30 @@ echo X"$ac_file" | /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` - { case "$ac_dir" in - [\\/]* | ?:[\\/]* ) as_incr_dir=;; - *) as_incr_dir=.;; -esac -as_dummy="$ac_dir" -for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do - case $as_mkdir_dir in - # Skip DOS drivespec - ?:) as_incr_dir=$as_mkdir_dir ;; - *) - as_incr_dir=$as_incr_dir/$as_mkdir_dir - test -d "$as_incr_dir" || - mkdir "$as_incr_dir" || - { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; } - ;; - esac -done; } + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } rm -f $ac_file mv $tmp/config.h $ac_file @@ -17003,7 +17769,7 @@ done; } # Run the commands associated with the file. case $ac_file in include/autoconf.h ) # update the timestamp -echo timestamp >"include/stamp-h1" +echo 'timestamp for include/autoconf.h' >"include/stamp-h1" ;; esac done @@ -17056,7 +17822,7 @@ esac # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be # absolute. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` @@ -17064,14 +17830,31 @@ ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 echo "$as_me: executing $ac_dest commands" >&6;} case $ac_dest in - default-1 ) -test x"$AMDEP_TRUE" != x"" || -for mf in $CONFIG_FILES; do - case "$mf" in - Makefile) dirpart=.;; - */Makefile) dirpart=`echo "$mf" | sed -e 's|/[^/]*$||'`;; - *) continue;; - esac + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue # Extract the definition of DEP_FILES from the Makefile without # running `make'. @@ -17096,8 +17879,43 @@ for mf in $CONFIG_FILES; do sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue - fdir=`echo "$file" | sed -e 's|/[^/]*$||'` - $ac_aux_dir/mkinstalldirs "$dirpart/$fdir" > /dev/null 2>&1 + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done @@ -17125,8 +17943,11 @@ ac_clean_files=$ac_clean_files_save # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null - $SHELL $CONFIG_STATUS || ac_cs_success=false + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. diff --git a/configure.in b/configure.in index 2c70e33ee7..8ea5053290 100644 --- a/configure.in +++ b/configure.in @@ -3,7 +3,7 @@ dnl Configuration input file for Squid dnl dnl Duane Wessels, wessels@nlanr.net, February 1996 (autoconf v2.9) dnl -dnl $Id: configure.in,v 1.314 2003/01/18 02:30:05 hno Exp $ +dnl $Id: configure.in,v 1.315 2003/01/23 00:34:51 robertc Exp $ dnl dnl dnl @@ -13,7 +13,7 @@ AC_CONFIG_SRCDIR([src/main.cc]) AC_CONFIG_AUX_DIR(cfgaux) AM_INIT_AUTOMAKE(squid, 3.0-DEVEL) AM_CONFIG_HEADER(include/autoconf.h) -AC_REVISION($Revision: 1.314 $)dnl +AC_REVISION($Revision: 1.315 $)dnl AC_PREFIX_DEFAULT(/usr/local/squid) AM_MAINTAINER_MODE diff --git a/contrib/Makefile.in b/contrib/Makefile.in index 7ecd9fbee1..3b60e190ea 100644 --- a/contrib/Makefile.in +++ b/contrib/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -17,7 +18,6 @@ # Makefile for installing Squid startup files on systems # using a SVR4-based startup mechanism/file system layout # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -48,9 +48,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -62,6 +66,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -79,7 +87,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -92,7 +99,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -109,6 +115,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -151,14 +158,11 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign contrib/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) uninstall-info-am: tags: TAGS TAGS: - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = .. @@ -166,15 +170,20 @@ distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) $(mkinstalldirs) $(distdir)/nextstep - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -196,6 +205,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -203,7 +213,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/contrib/rredir.c b/contrib/rredir.c index 6e6374002a..2490256cb9 100644 --- a/contrib/rredir.c +++ b/contrib/rredir.c @@ -1,4 +1,4 @@ -/* $Id: rredir.c,v 1.4 2001/01/07 10:57:13 hno Exp $ */ +/* $Id: rredir.c,v 1.5 2003/01/23 00:34:52 robertc Exp $ */ /* * From: richard@hekkihek.hacom.nl (Richard Huveneers) diff --git a/doc/Makefile.am b/doc/Makefile.am index 00201a074b..2848d90698 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.am,v 1.2 2002/07/20 22:51:17 hno Exp $ +# $Id: Makefile.am,v 1.3 2003/01/23 00:34:53 robertc Exp $ # # Uncomment and customize the following to suit your needs: # diff --git a/doc/Makefile.in b/doc/Makefile.in index 5c0dda5c5a..a598e4fd0d 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,11 +17,10 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.17 2002/10/15 08:10:53 robertc Exp $ +# $Id: Makefile.in,v 1.18 2003/01/23 00:34:53 robertc Exp $ # # Uncomment and customize the following to suit your needs: # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -51,9 +51,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -65,6 +69,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -82,7 +90,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -95,7 +102,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -112,6 +118,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -145,9 +152,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign doc/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) uninstall-info-am: man8dir = $(mandir)/man8 @@ -165,6 +170,10 @@ install-man8: $(man8_MANS) $(man_MANS) if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ else file=$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 8*) ;; \ + *) ext='8' ;; \ + esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ @@ -191,22 +200,26 @@ uninstall-man8: tags: TAGS TAGS: - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = .. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -231,6 +244,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -238,7 +252,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/doc/Programming-Guide/prog-guide.sgml b/doc/Programming-Guide/prog-guide.sgml index 72d73cf717..2fdc561ddf 100644 --- a/doc/Programming-Guide/prog-guide.sgml +++ b/doc/Programming-Guide/prog-guide.sgml @@ -2,7 +2,7 @@
Squid Programmers Guide Squid Developers -$Id: prog-guide.sgml,v 1.53 2002/12/16 19:53:06 robertc Exp $ +$Id: prog-guide.sgml,v 1.54 2003/01/23 00:34:54 robertc Exp $ Squid is a WWW Cache application developed by the National Laboratory diff --git a/doc/release-notes/release-2.5.html b/doc/release-notes/release-2.5.html index 9e2f53d301..d0635ea03e 100644 --- a/doc/release-notes/release-2.5.html +++ b/doc/release-notes/release-2.5.html @@ -7,7 +7,7 @@

Squid 2.5 release notes

-

Squid Developers

$Id: release-2.5.html,v 1.3 2002/09/07 05:41:41 robertc Exp $ +

Squid Developers

$Id: release-2.5.html,v 1.4 2003/01/23 00:34:59 robertc Exp $
This document contains the release notes for version 2.5 of Squid. Squid is a WWW Cache application developed by the National Laboratory diff --git a/doc/release-notes/release-2.5.sgml b/doc/release-notes/release-2.5.sgml index 66b0138dd3..da4f5622b5 100644 --- a/doc/release-notes/release-2.5.sgml +++ b/doc/release-notes/release-2.5.sgml @@ -2,7 +2,7 @@
Squid 2.5 release notes Squid Developers -$Id: release-2.5.sgml,v 1.4 2002/09/07 10:17:00 hno Exp $ +$Id: release-2.5.sgml,v 1.5 2003/01/23 00:34:59 robertc Exp $ This document contains the release notes for version 2.5 of Squid. diff --git a/errors/Makefile.am b/errors/Makefile.am index f768004a62..190ea316da 100644 --- a/errors/Makefile.am +++ b/errors/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to produce Makefile.in # -# $Id: Makefile.am,v 1.9 2002/10/18 21:21:22 hno Exp $ +# $Id: Makefile.am,v 1.10 2003/01/23 00:35:06 robertc Exp $ # errordir = $(datadir)/errors diff --git a/errors/Makefile.in b/errors/Makefile.in index 30944d1791..a3235e282f 100644 --- a/errors/Makefile.in +++ b/errors/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,9 +15,8 @@ @SET_MAKE@ # -# $Id: Makefile.in,v 1.33 2002/10/18 21:25:24 hno Exp $ +# $Id: Makefile.in,v 1.34 2003/01/23 00:35:06 robertc Exp $ # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -47,9 +47,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -61,6 +65,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -78,7 +86,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -91,7 +98,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -108,6 +114,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -164,29 +171,31 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign errors/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) uninstall-info-am: tags: TAGS TAGS: - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = .. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -213,6 +222,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -220,7 +230,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/Makefile.in b/helpers/Makefile.in index 174673f0bf..eae9d6e513 100644 --- a/helpers/Makefile.in +++ b/helpers/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -12,7 +13,6 @@ # PARTICULAR PURPOSE. @SET_MAKE@ - SHELL = @SHELL@ srcdir = @srcdir@ @@ -43,9 +43,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -57,6 +61,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -74,7 +82,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -87,7 +94,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -104,6 +110,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -112,7 +119,6 @@ am__include = @am__include@ am__quote = @am__quote@ install_sh = @install_sh@ makesnmplib = @makesnmplib@ - SUBDIRS = basic_auth ntlm_auth digest_auth external_acl subdir = helpers mkinstalldirs = $(SHELL) $(top_srcdir)/cfgaux/mkinstalldirs @@ -133,9 +139,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd @@ -145,7 +149,7 @@ uninstall-info-am: # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): - @set fnord $(MAKEFLAGS); amf=$$2; \ + @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ @@ -165,7 +169,7 @@ $(RECURSIVE_TARGETS): mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: - @set fnord $(MAKEFLAGS); amf=$$2; \ + @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ @@ -193,16 +197,19 @@ tags-recursive: test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) @@ -213,45 +220,50 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = .. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done - for subdir in $(SUBDIRS); do \ + list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ @@ -281,6 +293,7 @@ install-am: all-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -288,7 +301,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/basic_auth/LDAP/Makefile.am b/helpers/basic_auth/LDAP/Makefile.am index 180960d87c..c3da4d793e 100644 --- a/helpers/basic_auth/LDAP/Makefile.am +++ b/helpers/basic_auth/LDAP/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid LDAP authentication helper # -# $Id: Makefile.am,v 1.4 2002/08/12 01:11:48 hno Exp $ +# $Id: Makefile.am,v 1.5 2003/01/23 00:35:21 robertc Exp $ # # Uncomment and customize the following to suit your needs: # diff --git a/helpers/basic_auth/LDAP/Makefile.in b/helpers/basic_auth/LDAP/Makefile.in index 541d35360f..bdaa0ac4ca 100644 --- a/helpers/basic_auth/LDAP/Makefile.in +++ b/helpers/basic_auth/LDAP/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,11 +17,10 @@ # # Makefile for the Squid LDAP authentication helper # -# $Id: Makefile.in,v 1.26 2002/10/15 08:10:59 robertc Exp $ +# $Id: Makefile.in,v 1.27 2003/01/23 00:35:21 robertc Exp $ # # Uncomment and customize the following to suit your needs: # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -51,9 +51,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -65,6 +69,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -82,7 +90,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -95,7 +102,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -112,6 +118,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -147,7 +154,8 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/squid_ldap_auth.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/squid_ldap_auth.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -168,9 +176,8 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/basic_auth/LDAP/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @@ -178,16 +185,16 @@ install-libexecPROGRAMS: $(libexec_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f; \ + 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; \ else :; fi; \ done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -204,16 +211,16 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/squid_ldap_auth.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/squid_ldap_auth.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .c.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -238,6 +245,10 @@ install-man8: $(man8_MANS) $(man_MANS) if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ else file=$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 8*) ;; \ + *) ext='8' ;; \ + esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ @@ -262,53 +273,61 @@ uninstall-man8: rm -f $(DESTDIR)$(man8dir)/$$inst; \ done +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -333,6 +352,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -340,7 +360,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/basic_auth/MSNT/Makefile.am b/helpers/basic_auth/MSNT/Makefile.am index 9ffb626a1d..09565e16e4 100644 --- a/helpers/basic_auth/MSNT/Makefile.am +++ b/helpers/basic_auth/MSNT/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.am,v 1.9 2002/08/12 01:11:48 hno Exp $ +# $Id: Makefile.am,v 1.10 2003/01/23 00:35:26 robertc Exp $ # # Uncomment and customize the following to suit your needs: # diff --git a/helpers/basic_auth/MSNT/Makefile.in b/helpers/basic_auth/MSNT/Makefile.in index 8045a5c5ce..eac6dd65cd 100644 --- a/helpers/basic_auth/MSNT/Makefile.in +++ b/helpers/basic_auth/MSNT/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,11 +17,10 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.29 2002/10/15 08:11:00 robertc Exp $ +# $Id: Makefile.in,v 1.30 2003/01/23 00:35:26 robertc Exp $ # # Uncomment and customize the following to suit your needs: # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -51,9 +51,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -65,6 +69,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -82,7 +90,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -95,7 +102,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -112,6 +118,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -170,13 +177,15 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/allowusers.Po $(DEPDIR)/confload.Po \ -@AMDEP_TRUE@ $(DEPDIR)/denyusers.Po $(DEPDIR)/md4.Po \ -@AMDEP_TRUE@ $(DEPDIR)/msntauth.Po $(DEPDIR)/rfcnb-io.Po \ -@AMDEP_TRUE@ $(DEPDIR)/rfcnb-util.Po $(DEPDIR)/session.Po \ -@AMDEP_TRUE@ $(DEPDIR)/smbdes.Po $(DEPDIR)/smbencrypt.Po \ -@AMDEP_TRUE@ $(DEPDIR)/smblib-util.Po $(DEPDIR)/smblib.Po \ -@AMDEP_TRUE@ $(DEPDIR)/usersfile.Po $(DEPDIR)/valid.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/allowusers.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/confload.Po ./$(DEPDIR)/denyusers.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/md4.Po ./$(DEPDIR)/msntauth.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/rfcnb-io.Po ./$(DEPDIR)/rfcnb-util.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/session.Po ./$(DEPDIR)/smbdes.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/smbencrypt.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/smblib-util.Po ./$(DEPDIR)/smblib.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/usersfile.Po ./$(DEPDIR)/valid.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -196,9 +205,8 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/basic_auth/MSNT/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @@ -206,16 +214,16 @@ install-libexecPROGRAMS: $(libexec_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f; \ + 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; \ else :; fi; \ done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -232,29 +240,29 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/allowusers.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/confload.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/denyusers.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/md4.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/msntauth.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/rfcnb-io.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/rfcnb-util.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/session.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/smbdes.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/smbencrypt.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/smblib-util.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/smblib.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/usersfile.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/valid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allowusers.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/confload.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/denyusers.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md4.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msntauth.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rfcnb-io.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rfcnb-util.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/session.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smbdes.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smbencrypt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smblib-util.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smblib.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/usersfile.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/valid.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .c.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -263,14 +271,15 @@ distclean-depend: $(COMPILE) -c `cygpath -w $<` CCDEPMODE = @CCDEPMODE@ uninstall-info-am: +sysconfDATA_INSTALL = $(INSTALL_DATA) install-sysconfDATA: $(sysconf_DATA) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(sysconfdir) @list='$(sysconf_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(sysconfdir)/$$f"; \ - $(INSTALL_DATA) $$d$$p $(DESTDIR)$(sysconfdir)/$$f; \ + echo " $(sysconfDATA_INSTALL) $$d$$p $(DESTDIR)$(sysconfdir)/$$f"; \ + $(sysconfDATA_INSTALL) $$d$$p $(DESTDIR)$(sysconfdir)/$$f; \ done uninstall-sysconfDATA: @@ -281,53 +290,61 @@ uninstall-sysconfDATA: rm -f $(DESTDIR)$(sysconfdir)/$$f; \ done +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -352,6 +369,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -359,7 +377,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/basic_auth/Makefile.am b/helpers/basic_auth/Makefile.am index 9a30aeb670..9d3098e092 100644 --- a/helpers/basic_auth/Makefile.am +++ b/helpers/basic_auth/Makefile.am @@ -1,6 +1,6 @@ # Makefile for storage modules in the Squid Object Cache server # -# $Id: Makefile.am,v 1.3 2002/05/20 01:42:50 hno Exp $ +# $Id: Makefile.am,v 1.4 2003/01/23 00:35:16 robertc Exp $ # DIST_SUBDIRS = getpwnam LDAP MSNT multi-domain-NTLM NCSA PAM SMB YP SASL winbind diff --git a/helpers/basic_auth/Makefile.in b/helpers/basic_auth/Makefile.in index 4017c53b01..5c63bfdd0d 100644 --- a/helpers/basic_auth/Makefile.in +++ b/helpers/basic_auth/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -15,9 +16,8 @@ # Makefile for storage modules in the Squid Object Cache server # -# $Id: Makefile.in,v 1.24 2002/10/15 08:10:58 robertc Exp $ +# $Id: Makefile.in,v 1.25 2003/01/23 00:35:16 robertc Exp $ # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -48,9 +48,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -62,6 +66,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -79,7 +87,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -92,7 +99,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -109,6 +115,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -138,9 +145,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/basic_auth/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd @@ -150,7 +155,7 @@ uninstall-info-am: # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): - @set fnord $(MAKEFLAGS); amf=$$2; \ + @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ @@ -170,7 +175,7 @@ $(RECURSIVE_TARGETS): mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: - @set fnord $(MAKEFLAGS); amf=$$2; \ + @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ @@ -198,16 +203,19 @@ tags-recursive: test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) @@ -218,45 +226,50 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done - for subdir in $(DIST_SUBDIRS); do \ + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ @@ -286,6 +299,7 @@ install-am: all-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -293,7 +307,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/basic_auth/NCSA/Makefile.am b/helpers/basic_auth/NCSA/Makefile.am index 4a55e42c9b..e4d292aab5 100644 --- a/helpers/basic_auth/NCSA/Makefile.am +++ b/helpers/basic_auth/NCSA/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.am,v 1.2 2002/08/12 01:11:49 hno Exp $ +# $Id: Makefile.am,v 1.3 2003/01/23 00:35:30 robertc Exp $ # # Uncomment and customize the following to suit your needs: # diff --git a/helpers/basic_auth/NCSA/Makefile.in b/helpers/basic_auth/NCSA/Makefile.in index b4d50afa9a..232c0660cf 100644 --- a/helpers/basic_auth/NCSA/Makefile.in +++ b/helpers/basic_auth/NCSA/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,11 +17,10 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.24 2002/10/15 08:11:04 robertc Exp $ +# $Id: Makefile.in,v 1.25 2003/01/23 00:35:30 robertc Exp $ # # Uncomment and customize the following to suit your needs: # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -51,9 +51,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -65,6 +69,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -82,7 +90,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -95,7 +102,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -112,6 +118,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -144,7 +151,8 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/ncsa_auth.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/ncsa_auth.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -162,9 +170,8 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/basic_auth/NCSA/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @@ -172,16 +179,16 @@ install-libexecPROGRAMS: $(libexec_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f; \ + 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; \ else :; fi; \ done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -198,16 +205,16 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ncsa_auth.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ncsa_auth.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .c.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -217,53 +224,61 @@ distclean-depend: CCDEPMODE = @CCDEPMODE@ uninstall-info-am: +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -288,6 +303,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -295,7 +311,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/basic_auth/PAM/Makefile.am b/helpers/basic_auth/PAM/Makefile.am index be4d46a5d4..1578cadd88 100644 --- a/helpers/basic_auth/PAM/Makefile.am +++ b/helpers/basic_auth/PAM/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid PAM authentication helper # -# $Id: Makefile.am,v 1.4 2002/08/12 01:11:50 hno Exp $ +# $Id: Makefile.am,v 1.5 2003/01/23 00:35:35 robertc Exp $ # # Uncomment and customize the following to suit your needs: # diff --git a/helpers/basic_auth/PAM/Makefile.in b/helpers/basic_auth/PAM/Makefile.in index d1e12991d4..4e532bdfd4 100644 --- a/helpers/basic_auth/PAM/Makefile.in +++ b/helpers/basic_auth/PAM/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,11 +17,10 @@ # # Makefile for the Squid PAM authentication helper # -# $Id: Makefile.in,v 1.25 2002/10/15 08:11:06 robertc Exp $ +# $Id: Makefile.in,v 1.26 2003/01/23 00:35:35 robertc Exp $ # # Uncomment and customize the following to suit your needs: # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -51,9 +51,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -65,6 +69,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -82,7 +90,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -95,7 +102,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -112,6 +118,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -146,7 +153,8 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/pam_auth.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/pam_auth.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -167,9 +175,8 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/basic_auth/PAM/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @@ -177,16 +184,16 @@ install-libexecPROGRAMS: $(libexec_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f; \ + 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; \ else :; fi; \ done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -203,16 +210,16 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pam_auth.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_auth.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .c.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -237,6 +244,10 @@ install-man8: $(man8_MANS) $(man_MANS) if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ else file=$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 8*) ;; \ + *) ext='8' ;; \ + esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ @@ -261,53 +272,61 @@ uninstall-man8: rm -f $(DESTDIR)$(man8dir)/$$inst; \ done +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -332,6 +351,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -339,7 +359,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/basic_auth/PAM/pam_auth.c b/helpers/basic_auth/PAM/pam_auth.c index d815a78ea3..144f2018b1 100644 --- a/helpers/basic_auth/PAM/pam_auth.c +++ b/helpers/basic_auth/PAM/pam_auth.c @@ -1,5 +1,5 @@ /* - * $Id: pam_auth.c,v 1.11 2002/10/11 03:05:41 wessels Exp $ + * $Id: pam_auth.c,v 1.12 2003/01/23 00:35:35 robertc Exp $ * * PAM authenticator module for Squid. * Copyright (C) 1999,2002 Henrik Nordstrom diff --git a/helpers/basic_auth/SASL/Makefile.am b/helpers/basic_auth/SASL/Makefile.am index 9735bdaf3e..f06274a063 100644 --- a/helpers/basic_auth/SASL/Makefile.am +++ b/helpers/basic_auth/SASL/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid SASL authentication helper # -# $Id: Makefile.am,v 1.3 2002/08/12 01:11:51 hno Exp $ +# $Id: Makefile.am,v 1.4 2003/01/23 00:35:37 robertc Exp $ # # Uncomment and customize the following to suit your needs: # diff --git a/helpers/basic_auth/SASL/Makefile.in b/helpers/basic_auth/SASL/Makefile.in index 420f0f3de2..07f39c5bcc 100644 --- a/helpers/basic_auth/SASL/Makefile.in +++ b/helpers/basic_auth/SASL/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,11 +17,10 @@ # # Makefile for the Squid SASL authentication helper # -# $Id: Makefile.in,v 1.22 2002/10/15 08:11:07 robertc Exp $ +# $Id: Makefile.in,v 1.23 2003/01/23 00:35:37 robertc Exp $ # # Uncomment and customize the following to suit your needs: # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -51,9 +51,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -65,6 +69,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -82,7 +90,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -95,7 +102,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -112,6 +118,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -145,7 +152,8 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/sasl_auth.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/sasl_auth.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -163,9 +171,8 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/basic_auth/SASL/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @@ -173,16 +180,16 @@ install-libexecPROGRAMS: $(libexec_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f; \ + 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; \ else :; fi; \ done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -199,16 +206,16 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/sasl_auth.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sasl_auth.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .c.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -218,53 +225,61 @@ distclean-depend: CCDEPMODE = @CCDEPMODE@ uninstall-info-am: +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -289,6 +304,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -296,7 +312,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/basic_auth/SASL/sasl_auth.c b/helpers/basic_auth/SASL/sasl_auth.c index 082ae1e548..f7ddea1fee 100644 --- a/helpers/basic_auth/SASL/sasl_auth.c +++ b/helpers/basic_auth/SASL/sasl_auth.c @@ -1,5 +1,5 @@ /* - * $Id: sasl_auth.c,v 1.4 2002/08/12 16:58:12 hno Exp $ + * $Id: sasl_auth.c,v 1.5 2003/01/23 00:35:38 robertc Exp $ * * SASL authenticator module for Squid. * Copyright (C) 2002 Ian Castle diff --git a/helpers/basic_auth/SMB/Makefile.am b/helpers/basic_auth/SMB/Makefile.am index aedd63d1d1..4d7f8bb58f 100644 --- a/helpers/basic_auth/SMB/Makefile.am +++ b/helpers/basic_auth/SMB/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.am,v 1.4 2002/08/12 01:11:55 hno Exp $ +# $Id: Makefile.am,v 1.5 2003/01/23 00:35:40 robertc Exp $ # # Uncomment and customize the following to suit your needs: # diff --git a/helpers/basic_auth/SMB/Makefile.in b/helpers/basic_auth/SMB/Makefile.in index 512882dc8e..fe58521fdc 100644 --- a/helpers/basic_auth/SMB/Makefile.in +++ b/helpers/basic_auth/SMB/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,7 +17,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.25 2002/10/15 08:11:10 robertc Exp $ +# $Id: Makefile.in,v 1.26 2003/01/23 00:35:40 robertc Exp $ # # Uncomment and customize the following to suit your needs: # @@ -25,7 +26,6 @@ # By default, Samba is installed in /usr/local/samba. If you changed this # by using the --prefix option when configuring Samba, you need to change # SAMBAPREFIX accordingly. - SHELL = @SHELL@ srcdir = @srcdir@ @@ -56,9 +56,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -70,6 +74,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -87,7 +95,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -100,7 +107,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -117,6 +123,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -159,7 +166,8 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/smb_auth-smb_auth.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/smb_auth-smb_auth.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -177,9 +185,8 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/basic_auth/SMB/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @@ -187,16 +194,16 @@ install-libexecPROGRAMS: $(libexec_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f; \ + 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; \ else :; fi; \ done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -207,24 +214,23 @@ smb_auth-smb_auth.$(OBJEXT): smb_auth.c smb_auth$(EXEEXT): $(smb_auth_OBJECTS) $(smb_auth_DEPENDENCIES) @rm -f smb_auth$(EXEEXT) $(LINK) $(smb_auth_LDFLAGS) $(smb_auth_OBJECTS) $(smb_auth_LDADD) $(LIBS) +libexecSCRIPT_INSTALL = $(INSTALL_SCRIPT) install-libexecSCRIPTS: $(libexec_SCRIPTS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @list='$(libexec_SCRIPTS)'; for p in $$list; do \ - f="`echo $$p|sed '$(transform)'`"; \ - if test -f $$p; then \ - echo " $(INSTALL_SCRIPT) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_SCRIPT) $$p $(DESTDIR)$(libexecdir)/$$f; \ - elif test -f $(srcdir)/$$p; then \ - echo " $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(libexecdir)/$$f; \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f $$d$$p; then \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " $(libexecSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(libexecdir)/$$f"; \ + $(libexecSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(libexecdir)/$$f; \ else :; fi; \ done uninstall-libexecSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(libexec_SCRIPTS)'; for p in $$list; do \ - f="`echo $$p|sed '$(transform)'`"; \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -235,16 +241,16 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/smb_auth-smb_auth.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smb_auth-smb_auth.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .c.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -256,7 +262,7 @@ smb_auth-smb_auth.o: smb_auth.c @AMDEP_TRUE@ source='smb_auth.c' object='smb_auth-smb_auth.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/smb_auth-smb_auth.Po' tmpdepfile='$(DEPDIR)/smb_auth-smb_auth.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(smb_auth_CFLAGS) $(CFLAGS) -c -o smb_auth-smb_auth.o `test -f smb_auth.c || echo '$(srcdir)/'`smb_auth.c + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(smb_auth_CFLAGS) $(CFLAGS) -c -o smb_auth-smb_auth.o `test -f 'smb_auth.c' || echo '$(srcdir)/'`smb_auth.c smb_auth-smb_auth.obj: smb_auth.c @AMDEP_TRUE@ source='smb_auth.c' object='smb_auth-smb_auth.obj' libtool=no @AMDEPBACKSLASH@ @@ -266,53 +272,61 @@ smb_auth-smb_auth.obj: smb_auth.c CCDEPMODE = @CCDEPMODE@ uninstall-info-am: +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -337,6 +351,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -344,7 +359,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/basic_auth/YP/Makefile.am b/helpers/basic_auth/YP/Makefile.am index 1f2ba03864..36bdf67934 100644 --- a/helpers/basic_auth/YP/Makefile.am +++ b/helpers/basic_auth/YP/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.am,v 1.4 2002/08/12 01:11:55 hno Exp $ +# $Id: Makefile.am,v 1.5 2003/01/23 00:35:44 robertc Exp $ # # diff --git a/helpers/basic_auth/YP/Makefile.in b/helpers/basic_auth/YP/Makefile.in index f938f60481..0ba55ec2af 100644 --- a/helpers/basic_auth/YP/Makefile.in +++ b/helpers/basic_auth/YP/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,10 +17,9 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.26 2002/10/15 08:11:12 robertc Exp $ +# $Id: Makefile.in,v 1.27 2003/01/23 00:35:44 robertc Exp $ # # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -50,9 +50,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -64,6 +68,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -81,7 +89,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -94,7 +101,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -111,6 +117,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -143,7 +150,9 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/nis_support.Po $(DEPDIR)/yp_auth.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/nis_support.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/yp_auth.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -161,9 +170,8 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/basic_auth/YP/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @@ -171,16 +179,16 @@ install-libexecPROGRAMS: $(libexec_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f; \ + 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; \ else :; fi; \ done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -197,17 +205,17 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/nis_support.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/yp_auth.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nis_support.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yp_auth.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .c.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -217,53 +225,61 @@ distclean-depend: CCDEPMODE = @CCDEPMODE@ uninstall-info-am: +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -288,6 +304,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -295,7 +312,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/basic_auth/getpwnam/Makefile.am b/helpers/basic_auth/getpwnam/Makefile.am index 46f3b32d67..8bc01b6475 100644 --- a/helpers/basic_auth/getpwnam/Makefile.am +++ b/helpers/basic_auth/getpwnam/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.am,v 1.2 2002/08/12 01:11:56 hno Exp $ +# $Id: Makefile.am,v 1.3 2003/01/23 00:35:47 robertc Exp $ # # Uncomment and customize the following to suit your needs: # diff --git a/helpers/basic_auth/getpwnam/Makefile.in b/helpers/basic_auth/getpwnam/Makefile.in index 124ef9b7f0..cf66e5a847 100644 --- a/helpers/basic_auth/getpwnam/Makefile.in +++ b/helpers/basic_auth/getpwnam/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,11 +17,10 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.24 2002/10/15 08:11:12 robertc Exp $ +# $Id: Makefile.in,v 1.25 2003/01/23 00:35:47 robertc Exp $ # # Uncomment and customize the following to suit your needs: # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -51,9 +51,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -65,6 +69,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -82,7 +90,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -95,7 +102,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -112,6 +118,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -146,7 +153,8 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/getpwnam_auth.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/getpwnam_auth.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -164,9 +172,8 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/basic_auth/getpwnam/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @@ -174,16 +181,16 @@ install-libexecPROGRAMS: $(libexec_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f; \ + 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; \ else :; fi; \ done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -200,16 +207,16 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getpwnam_auth.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpwnam_auth.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .c.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -219,53 +226,61 @@ distclean-depend: CCDEPMODE = @CCDEPMODE@ uninstall-info-am: +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -290,6 +305,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -297,7 +313,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/basic_auth/multi-domain-NTLM/Makefile.am b/helpers/basic_auth/multi-domain-NTLM/Makefile.am index 10bf10350e..fa93397181 100644 --- a/helpers/basic_auth/multi-domain-NTLM/Makefile.am +++ b/helpers/basic_auth/multi-domain-NTLM/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.am,v 1.3 2002/05/20 02:03:56 hno Exp $ +# $Id: Makefile.am,v 1.4 2003/01/23 00:35:49 robertc Exp $ # # Uncomment and customize the following to suit your needs: # diff --git a/helpers/basic_auth/multi-domain-NTLM/Makefile.in b/helpers/basic_auth/multi-domain-NTLM/Makefile.in index 66ef022ddb..90c75eddfd 100644 --- a/helpers/basic_auth/multi-domain-NTLM/Makefile.in +++ b/helpers/basic_auth/multi-domain-NTLM/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,11 +17,10 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.22 2002/10/15 08:11:13 robertc Exp $ +# $Id: Makefile.in,v 1.23 2003/01/23 00:35:50 robertc Exp $ # # Uncomment and customize the following to suit your needs: # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -51,9 +51,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -65,6 +69,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -82,7 +90,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -95,7 +102,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -112,6 +118,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -144,27 +151,24 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/basic_auth/multi-domain-NTLM/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecSCRIPT_INSTALL = $(INSTALL_SCRIPT) install-libexecSCRIPTS: $(libexec_SCRIPTS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @list='$(libexec_SCRIPTS)'; for p in $$list; do \ - f="`echo $$p|sed '$(transform)'`"; \ - if test -f $$p; then \ - echo " $(INSTALL_SCRIPT) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_SCRIPT) $$p $(DESTDIR)$(libexecdir)/$$f; \ - elif test -f $(srcdir)/$$p; then \ - echo " $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(libexecdir)/$$f; \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f $$d$$p; then \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " $(libexecSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(libexecdir)/$$f"; \ + $(libexecSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(libexecdir)/$$f; \ else :; fi; \ done uninstall-libexecSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(libexec_SCRIPTS)'; for p in $$list; do \ - f="`echo $$p|sed '$(transform)'`"; \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -172,22 +176,26 @@ uninstall-info-am: tags: TAGS TAGS: - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -212,6 +220,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -219,7 +228,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/basic_auth/multi-domain-NTLM/smb_auth.pl b/helpers/basic_auth/multi-domain-NTLM/smb_auth.pl index c28fe642a2..71898facf5 100644 --- a/helpers/basic_auth/multi-domain-NTLM/smb_auth.pl +++ b/helpers/basic_auth/multi-domain-NTLM/smb_auth.pl @@ -1,5 +1,5 @@ #!/usr/bin/perl -# $Id: smb_auth.pl,v 1.3 2002/08/12 01:11:57 hno Exp $ +# $Id: smb_auth.pl,v 1.4 2003/01/23 00:35:50 robertc Exp $ #if you define this, debugging output will be printed to STDERR. #$debug=1; diff --git a/helpers/basic_auth/winbind/Makefile.am b/helpers/basic_auth/winbind/Makefile.am index 1aeb18d557..128f2aaef1 100644 --- a/helpers/basic_auth/winbind/Makefile.am +++ b/helpers/basic_auth/winbind/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.am,v 1.5 2002/08/12 01:11:57 hno Exp $ +# $Id: Makefile.am,v 1.6 2003/01/23 00:35:52 robertc Exp $ # libexec_PROGRAMS = wb_auth diff --git a/helpers/basic_auth/winbind/Makefile.in b/helpers/basic_auth/winbind/Makefile.in index b3946b812f..942c4e1dd9 100644 --- a/helpers/basic_auth/winbind/Makefile.in +++ b/helpers/basic_auth/winbind/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,9 +17,8 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.16 2002/10/15 08:11:13 robertc Exp $ +# $Id: Makefile.in,v 1.17 2003/01/23 00:35:52 robertc Exp $ # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -49,9 +49,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -63,6 +67,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -80,7 +88,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -93,7 +100,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -110,6 +116,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -142,8 +149,9 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/wb_basic_auth.Po \ -@AMDEP_TRUE@ $(DEPDIR)/wb_common.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/wb_basic_auth.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/wb_common.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -161,9 +169,8 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/basic_auth/winbind/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @@ -171,16 +178,16 @@ install-libexecPROGRAMS: $(libexec_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f; \ + 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; \ else :; fi; \ done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -197,17 +204,17 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/wb_basic_auth.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/wb_common.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wb_basic_auth.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wb_common.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .c.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -217,53 +224,61 @@ distclean-depend: CCDEPMODE = @CCDEPMODE@ uninstall-info-am: +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -288,6 +303,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -295,7 +311,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/digest_auth/Makefile.am b/helpers/digest_auth/Makefile.am index 8adb4a406a..d1fb9d53db 100644 --- a/helpers/digest_auth/Makefile.am +++ b/helpers/digest_auth/Makefile.am @@ -1,6 +1,6 @@ # Makefile for digest auth helpers in the Squid Object Cache server # -# $Id: Makefile.am,v 1.1 2001/08/31 11:19:23 robertc Exp $ +# $Id: Makefile.am,v 1.2 2003/01/23 00:35:53 robertc Exp $ # DIST_SUBDIRS = password diff --git a/helpers/digest_auth/Makefile.in b/helpers/digest_auth/Makefile.in index a3dcce1ccf..7ee6e41d22 100644 --- a/helpers/digest_auth/Makefile.in +++ b/helpers/digest_auth/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -15,9 +16,8 @@ # Makefile for digest auth helpers in the Squid Object Cache server # -# $Id: Makefile.in,v 1.21 2002/10/15 08:11:13 robertc Exp $ +# $Id: Makefile.in,v 1.22 2003/01/23 00:35:53 robertc Exp $ # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -48,9 +48,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -62,6 +66,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -79,7 +87,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -92,7 +99,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -109,6 +115,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -138,9 +145,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/digest_auth/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd @@ -150,7 +155,7 @@ uninstall-info-am: # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): - @set fnord $(MAKEFLAGS); amf=$$2; \ + @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ @@ -170,7 +175,7 @@ $(RECURSIVE_TARGETS): mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: - @set fnord $(MAKEFLAGS); amf=$$2; \ + @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ @@ -198,16 +203,19 @@ tags-recursive: test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) @@ -218,45 +226,50 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done - for subdir in $(DIST_SUBDIRS); do \ + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ @@ -286,6 +299,7 @@ install-am: all-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -293,7 +307,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/digest_auth/password/Makefile.am b/helpers/digest_auth/password/Makefile.am index 0117029b9b..72ab19aab4 100644 --- a/helpers/digest_auth/password/Makefile.am +++ b/helpers/digest_auth/password/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.am,v 1.1 2001/08/31 11:19:24 robertc Exp $ +# $Id: Makefile.am,v 1.2 2003/01/23 00:35:54 robertc Exp $ # # Uncomment and customize the following to suit your needs: # diff --git a/helpers/digest_auth/password/Makefile.in b/helpers/digest_auth/password/Makefile.in index 34daebc720..8eafdf0276 100644 --- a/helpers/digest_auth/password/Makefile.in +++ b/helpers/digest_auth/password/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,11 +17,10 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.23 2002/10/15 08:11:15 robertc Exp $ +# $Id: Makefile.in,v 1.24 2003/01/23 00:35:54 robertc Exp $ # # Uncomment and customize the following to suit your needs: # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -51,9 +51,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -65,6 +69,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -82,7 +90,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -95,7 +102,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -112,6 +118,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -146,7 +153,8 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/digest_pw_auth.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/digest_pw_auth.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -164,9 +172,8 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/digest_auth/password/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @@ -174,16 +181,16 @@ install-libexecPROGRAMS: $(libexec_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f; \ + 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; \ else :; fi; \ done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -200,16 +207,16 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/digest_pw_auth.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/digest_pw_auth.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .c.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -219,53 +226,61 @@ distclean-depend: CCDEPMODE = @CCDEPMODE@ uninstall-info-am: +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -290,6 +305,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -297,7 +313,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/external_acl/Makefile.am b/helpers/external_acl/Makefile.am index e57ed62aeb..39c172c884 100644 --- a/helpers/external_acl/Makefile.am +++ b/helpers/external_acl/Makefile.am @@ -1,6 +1,6 @@ # Makefile for storage modules in the Squid Object Cache server # -# $Id: Makefile.am,v 1.2 2002/07/07 18:18:12 hno Exp $ +# $Id: Makefile.am,v 1.3 2003/01/23 00:35:59 robertc Exp $ # DIST_SUBDIRS = ip_user ldap_group unix_group wbinfo_group winbind_group diff --git a/helpers/external_acl/Makefile.in b/helpers/external_acl/Makefile.in index e3d8f98682..def27a8b39 100644 --- a/helpers/external_acl/Makefile.in +++ b/helpers/external_acl/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -15,9 +16,8 @@ # Makefile for storage modules in the Squid Object Cache server # -# $Id: Makefile.in,v 1.11 2002/10/15 08:11:16 robertc Exp $ +# $Id: Makefile.in,v 1.12 2003/01/23 00:35:59 robertc Exp $ # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -48,9 +48,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -62,6 +66,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -79,7 +87,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -92,7 +99,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -109,6 +115,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -138,9 +145,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/external_acl/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd @@ -150,7 +155,7 @@ uninstall-info-am: # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): - @set fnord $(MAKEFLAGS); amf=$$2; \ + @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ @@ -170,7 +175,7 @@ $(RECURSIVE_TARGETS): mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: - @set fnord $(MAKEFLAGS); amf=$$2; \ + @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ @@ -198,16 +203,19 @@ tags-recursive: test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) @@ -218,45 +226,50 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done - for subdir in $(DIST_SUBDIRS); do \ + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ @@ -286,6 +299,7 @@ install-am: all-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -293,7 +307,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/external_acl/ip_user/Makefile.am b/helpers/external_acl/ip_user/Makefile.am index e378bc7f14..798df2a093 100644 --- a/helpers/external_acl/ip_user/Makefile.am +++ b/helpers/external_acl/ip_user/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the ip_user external_acl helper by Rodrigo Campos # -# $Id: Makefile.am,v 1.2 2002/07/22 00:38:14 robertc Exp $ +# $Id: Makefile.am,v 1.3 2003/01/23 00:36:01 robertc Exp $ # # Uncomment and customize the following to suit your needs: # diff --git a/helpers/external_acl/ip_user/Makefile.in b/helpers/external_acl/ip_user/Makefile.in index ca8f049e79..fa39264d06 100644 --- a/helpers/external_acl/ip_user/Makefile.in +++ b/helpers/external_acl/ip_user/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,11 +17,10 @@ # # Makefile for the ip_user external_acl helper by Rodrigo Campos # -# $Id: Makefile.in,v 1.11 2002/10/15 08:11:17 robertc Exp $ +# $Id: Makefile.in,v 1.12 2003/01/23 00:36:01 robertc Exp $ # # Uncomment and customize the following to suit your needs: # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -51,9 +51,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -65,6 +69,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -82,7 +90,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -95,7 +102,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -112,6 +118,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -163,8 +170,9 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/dict.Po $(DEPDIR)/main.Po \ -@AMDEP_TRUE@ $(DEPDIR)/match.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/dict.Po ./$(DEPDIR)/main.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/match.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -182,9 +190,8 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/external_acl/ip_user/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @@ -192,16 +199,16 @@ install-libexecPROGRAMS: $(libexec_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f; \ + 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; \ else :; fi; \ done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -218,18 +225,18 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/dict.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/match.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dict.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/match.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .c.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -239,53 +246,61 @@ distclean-depend: CCDEPMODE = @CCDEPMODE@ uninstall-info-am: +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -310,6 +325,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -317,7 +333,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/external_acl/ip_user/Makefile.separate b/helpers/external_acl/ip_user/Makefile.separate index e2f38fad59..b755efd92d 100644 --- a/helpers/external_acl/ip_user/Makefile.separate +++ b/helpers/external_acl/ip_user/Makefile.separate @@ -1,4 +1,4 @@ -# $Id: Makefile.separate,v 1.1 2002/07/06 12:23:13 hno Exp $ +# $Id: Makefile.separate,v 1.2 2003/01/23 00:36:01 robertc Exp $ CC=gcc CFLAGS=-Wall LIBS= diff --git a/helpers/external_acl/ip_user/README b/helpers/external_acl/ip_user/README index eaa697a55b..e6d8304141 100644 --- a/helpers/external_acl/ip_user/README +++ b/helpers/external_acl/ip_user/README @@ -1,4 +1,4 @@ -$Id: README,v 1.1 2002/06/23 14:25:16 hno Exp $ +$Id: README,v 1.2 2003/01/23 00:36:01 robertc Exp $ README file for ip_user_check, an external helper for the Squid external acl scheme. diff --git a/helpers/external_acl/ip_user/dict.c b/helpers/external_acl/ip_user/dict.c index cc3fbdd5a2..830355ac6e 100644 --- a/helpers/external_acl/ip_user/dict.c +++ b/helpers/external_acl/ip_user/dict.c @@ -1,4 +1,4 @@ -/* $Id: dict.c,v 1.1 2002/06/23 14:25:17 hno Exp $ +/* $Id: dict.c,v 1.2 2003/01/23 00:36:01 robertc Exp $ * Copyright (C) 2002 Rodrigo Campos * * This program is free software; you can redistribute it and/or modify diff --git a/helpers/external_acl/ip_user/example.conf b/helpers/external_acl/ip_user/example.conf index f994e9025b..72c6354019 100644 --- a/helpers/external_acl/ip_user/example.conf +++ b/helpers/external_acl/ip_user/example.conf @@ -1,4 +1,4 @@ -# $Id: example.conf,v 1.1 2002/06/23 14:25:17 hno Exp $ +# $Id: example.conf,v 1.2 2003/01/23 00:36:01 robertc Exp $ # Lines that begin with a # are ignored # The main format is: # diff --git a/helpers/external_acl/ip_user/ip_user.h b/helpers/external_acl/ip_user/ip_user.h index f8617f461e..b6b8093793 100644 --- a/helpers/external_acl/ip_user/ip_user.h +++ b/helpers/external_acl/ip_user/ip_user.h @@ -1,4 +1,4 @@ -/* $Id: ip_user.h,v 1.1 2002/06/23 14:25:17 hno Exp $ +/* $Id: ip_user.h,v 1.2 2003/01/23 00:36:01 robertc Exp $ * Copyright (C) 2002 Rodrigo Campos * * This program is free software; you can redistribute it and/or modify diff --git a/helpers/external_acl/ip_user/main.c b/helpers/external_acl/ip_user/main.c index 8fe676a699..c692edbf6a 100644 --- a/helpers/external_acl/ip_user/main.c +++ b/helpers/external_acl/ip_user/main.c @@ -1,4 +1,4 @@ -/* $Id: main.c,v 1.2 2002/07/06 12:33:09 hno Exp $ +/* $Id: main.c,v 1.3 2003/01/23 00:36:01 robertc Exp $ * Copyright (C) 2002 Rodrigo Campos * * This program is free software; you can redistribute it and/or modify diff --git a/helpers/external_acl/ip_user/match.c b/helpers/external_acl/ip_user/match.c index 071d529b0b..89e451364d 100644 --- a/helpers/external_acl/ip_user/match.c +++ b/helpers/external_acl/ip_user/match.c @@ -1,4 +1,4 @@ -/* $Id: match.c,v 1.1 2002/06/23 14:25:17 hno Exp $ +/* $Id: match.c,v 1.2 2003/01/23 00:36:01 robertc Exp $ * Copyright (C) 2002 Rodrigo Campos * * This program is free software; you can redistribute it and/or modify diff --git a/helpers/external_acl/ldap_group/Makefile.am b/helpers/external_acl/ldap_group/Makefile.am index 5f0fa6615a..829b31b1f7 100644 --- a/helpers/external_acl/ldap_group/Makefile.am +++ b/helpers/external_acl/ldap_group/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid LDAP authentication helper # -# $Id: Makefile.am,v 1.3 2002/12/22 13:54:50 hno Exp $ +# $Id: Makefile.am,v 1.4 2003/01/23 00:36:05 robertc Exp $ # # Uncomment and customize the following to suit your needs: # diff --git a/helpers/external_acl/ldap_group/Makefile.in b/helpers/external_acl/ldap_group/Makefile.in index f6c318314b..544c68b49a 100644 --- a/helpers/external_acl/ldap_group/Makefile.in +++ b/helpers/external_acl/ldap_group/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,11 +17,10 @@ # # Makefile for the Squid LDAP authentication helper # -# $Id: Makefile.in,v 1.12 2002/12/23 01:12:55 hno Exp $ +# $Id: Makefile.in,v 1.13 2003/01/23 00:36:06 robertc Exp $ # # Uncomment and customize the following to suit your needs: # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -51,9 +51,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -65,6 +69,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -82,7 +90,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -95,7 +102,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -112,6 +118,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -146,7 +153,8 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/squid_ldap_group.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/squid_ldap_group.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -167,9 +175,8 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/external_acl/ldap_group/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @@ -177,16 +184,16 @@ install-libexecPROGRAMS: $(libexec_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f; \ + 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; \ else :; fi; \ done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -203,16 +210,16 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/squid_ldap_group.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/squid_ldap_group.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .c.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -237,6 +244,10 @@ install-man8: $(man8_MANS) $(man_MANS) if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ else file=$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 8*) ;; \ + *) ext='8' ;; \ + esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ @@ -261,53 +272,61 @@ uninstall-man8: rm -f $(DESTDIR)$(man8dir)/$$inst; \ done +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -332,6 +351,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -339,7 +359,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/external_acl/unix_group/Makefile.am b/helpers/external_acl/unix_group/Makefile.am index 51cb88b640..b471458c4a 100644 --- a/helpers/external_acl/unix_group/Makefile.am +++ b/helpers/external_acl/unix_group/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid LDAP authentication helper # -# $Id: Makefile.am,v 1.2 2002/08/12 13:56:35 hno Exp $ +# $Id: Makefile.am,v 1.3 2003/01/23 00:36:12 robertc Exp $ # # Uncomment and customize the following to suit your needs: # diff --git a/helpers/external_acl/unix_group/Makefile.in b/helpers/external_acl/unix_group/Makefile.in index 81be71ff0c..090fa8aeef 100644 --- a/helpers/external_acl/unix_group/Makefile.in +++ b/helpers/external_acl/unix_group/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,11 +17,10 @@ # # Makefile for the Squid LDAP authentication helper # -# $Id: Makefile.in,v 1.11 2002/10/15 08:11:22 robertc Exp $ +# $Id: Makefile.in,v 1.12 2003/01/23 00:36:12 robertc Exp $ # # Uncomment and customize the following to suit your needs: # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -51,9 +51,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -65,6 +69,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -82,7 +90,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -95,7 +102,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -112,6 +118,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -144,7 +151,8 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/check_group.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/check_group.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -165,9 +173,8 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/external_acl/unix_group/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @@ -175,16 +182,16 @@ install-libexecPROGRAMS: $(libexec_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f; \ + 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; \ else :; fi; \ done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -201,16 +208,16 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/check_group.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_group.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .c.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -235,6 +242,10 @@ install-man8: $(man8_MANS) $(man_MANS) if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ else file=$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 8*) ;; \ + *) ext='8' ;; \ + esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ @@ -259,53 +270,61 @@ uninstall-man8: rm -f $(DESTDIR)$(man8dir)/$$inst; \ done +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -330,6 +349,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -337,7 +357,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/external_acl/unix_group/README b/helpers/external_acl/unix_group/README index d365be59df..f4794f2b9f 100644 --- a/helpers/external_acl/unix_group/README +++ b/helpers/external_acl/unix_group/README @@ -1,4 +1,4 @@ -$Id: README,v 1.2 2002/08/12 13:56:35 hno Exp $ +$Id: README,v 1.3 2003/01/23 00:36:13 robertc Exp $ This is the README file for check_group, an external helper fo the External ACL Scheme for Squid. diff --git a/helpers/external_acl/unix_group/check_group.c b/helpers/external_acl/unix_group/check_group.c index 66b54e510b..37539ea33b 100644 --- a/helpers/external_acl/unix_group/check_group.c +++ b/helpers/external_acl/unix_group/check_group.c @@ -1,5 +1,5 @@ /* - * $Id: check_group.c,v 1.2 2002/10/22 09:45:16 hno Exp $ + * $Id: check_group.c,v 1.3 2003/01/23 00:36:13 robertc Exp $ * * This is a helper for the external ACL interface for Squid Cache * Copyright (C) 2002 Rodrigo Albani de Campos (rodrigo@geekbunker.org) diff --git a/helpers/external_acl/wbinfo_group/Makefile.am b/helpers/external_acl/wbinfo_group/Makefile.am index f19bbbffca..7637c4827c 100644 --- a/helpers/external_acl/wbinfo_group/Makefile.am +++ b/helpers/external_acl/wbinfo_group/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid LDAP authentication helper # -# $Id: Makefile.am,v 1.1 2002/07/06 12:23:14 hno Exp $ +# $Id: Makefile.am,v 1.2 2003/01/23 00:36:16 robertc Exp $ # # Uncomment and customize the following to suit your needs: # diff --git a/helpers/external_acl/wbinfo_group/Makefile.in b/helpers/external_acl/wbinfo_group/Makefile.in index 2ed8505e6c..eafaebb804 100644 --- a/helpers/external_acl/wbinfo_group/Makefile.in +++ b/helpers/external_acl/wbinfo_group/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,11 +17,10 @@ # # Makefile for the Squid LDAP authentication helper # -# $Id: Makefile.in,v 1.10 2002/10/15 08:11:23 robertc Exp $ +# $Id: Makefile.in,v 1.11 2003/01/23 00:36:16 robertc Exp $ # # Uncomment and customize the following to suit your needs: # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -51,9 +51,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -65,6 +69,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -82,7 +90,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -95,7 +102,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -112,6 +118,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -140,27 +147,24 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/external_acl/wbinfo_group/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecSCRIPT_INSTALL = $(INSTALL_SCRIPT) install-libexecSCRIPTS: $(libexec_SCRIPTS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @list='$(libexec_SCRIPTS)'; for p in $$list; do \ - f="`echo $$p|sed '$(transform)'`"; \ - if test -f $$p; then \ - echo " $(INSTALL_SCRIPT) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_SCRIPT) $$p $(DESTDIR)$(libexecdir)/$$f; \ - elif test -f $(srcdir)/$$p; then \ - echo " $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(libexecdir)/$$f; \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f $$d$$p; then \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " $(libexecSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(libexecdir)/$$f"; \ + $(libexecSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(libexecdir)/$$f; \ else :; fi; \ done uninstall-libexecSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(libexec_SCRIPTS)'; for p in $$list; do \ - f="`echo $$p|sed '$(transform)'`"; \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -168,22 +172,26 @@ uninstall-info-am: tags: TAGS TAGS: - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -208,6 +216,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -215,7 +224,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/external_acl/winbind_group/Makefile.am b/helpers/external_acl/winbind_group/Makefile.am index a54369a6ac..2d47c44793 100755 --- a/helpers/external_acl/winbind_group/Makefile.am +++ b/helpers/external_acl/winbind_group/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the wb_group external_acl helper # -# $Id: Makefile.am,v 1.3 2002/09/10 22:22:27 hno Exp $ +# $Id: Makefile.am,v 1.4 2003/01/23 00:36:20 robertc Exp $ # libexec_PROGRAMS = wb_group diff --git a/helpers/external_acl/winbind_group/Makefile.in b/helpers/external_acl/winbind_group/Makefile.in index 7fdd29c5de..17404e21a6 100644 --- a/helpers/external_acl/winbind_group/Makefile.in +++ b/helpers/external_acl/winbind_group/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,9 +17,8 @@ # # Makefile for the wb_group external_acl helper # -# $Id: Makefile.in,v 1.11 2002/10/15 08:11:24 robertc Exp $ +# $Id: Makefile.in,v 1.12 2003/01/23 00:36:20 robertc Exp $ # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -49,9 +49,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -63,6 +67,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -80,7 +88,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -93,7 +100,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -110,6 +116,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -145,8 +152,9 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/wb_check_group.Po \ -@AMDEP_TRUE@ $(DEPDIR)/wb_common.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/wb_check_group.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/wb_common.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -164,9 +172,8 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/external_acl/winbind_group/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @@ -174,16 +181,16 @@ install-libexecPROGRAMS: $(libexec_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f; \ + 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; \ else :; fi; \ done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -200,17 +207,17 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/wb_check_group.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/wb_common.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wb_check_group.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wb_common.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .c.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -220,53 +227,61 @@ distclean-depend: CCDEPMODE = @CCDEPMODE@ uninstall-info-am: +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -291,6 +306,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -298,7 +314,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/external_acl/winbind_group/wb_check_group.c b/helpers/external_acl/winbind_group/wb_check_group.c index 9ed948c0fd..e6255abb6c 100755 --- a/helpers/external_acl/winbind_group/wb_check_group.c +++ b/helpers/external_acl/winbind_group/wb_check_group.c @@ -1,5 +1,5 @@ /* - * $Id: wb_check_group.c,v 1.7 2002/11/29 21:35:07 hno Exp $ + * $Id: wb_check_group.c,v 1.8 2003/01/23 00:36:20 robertc Exp $ * * This is a helper for the external ACL interface for Squid Cache * Copyright (C) 2002 Guido Serassio diff --git a/helpers/ntlm_auth/Makefile.am b/helpers/ntlm_auth/Makefile.am index 131b350771..c40b5bf6be 100644 --- a/helpers/ntlm_auth/Makefile.am +++ b/helpers/ntlm_auth/Makefile.am @@ -1,6 +1,6 @@ # Makefile for storage modules in the Squid Object Cache server # -# $Id: Makefile.am,v 1.5 2002/05/19 23:42:42 hno Exp $ +# $Id: Makefile.am,v 1.6 2003/01/23 00:36:25 robertc Exp $ # DIST_SUBDIRS = fakeauth no_check SMB winbind diff --git a/helpers/ntlm_auth/Makefile.in b/helpers/ntlm_auth/Makefile.in index 0c52c803f8..2fb5082646 100644 --- a/helpers/ntlm_auth/Makefile.in +++ b/helpers/ntlm_auth/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -15,9 +16,8 @@ # Makefile for storage modules in the Squid Object Cache server # -# $Id: Makefile.in,v 1.24 2002/10/15 08:11:25 robertc Exp $ +# $Id: Makefile.in,v 1.25 2003/01/23 00:36:25 robertc Exp $ # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -48,9 +48,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -62,6 +66,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -79,7 +87,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -92,7 +99,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -109,6 +115,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -138,9 +145,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/ntlm_auth/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd @@ -150,7 +155,7 @@ uninstall-info-am: # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): - @set fnord $(MAKEFLAGS); amf=$$2; \ + @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ @@ -170,7 +175,7 @@ $(RECURSIVE_TARGETS): mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: - @set fnord $(MAKEFLAGS); amf=$$2; \ + @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ @@ -198,16 +203,19 @@ tags-recursive: test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) @@ -218,45 +226,50 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done - for subdir in $(DIST_SUBDIRS); do \ + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ @@ -286,6 +299,7 @@ install-am: all-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -293,7 +307,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/ntlm_auth/SMB/Makefile.am b/helpers/ntlm_auth/SMB/Makefile.am index 493877fd04..91b14d730b 100644 --- a/helpers/ntlm_auth/SMB/Makefile.am +++ b/helpers/ntlm_auth/SMB/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.am,v 1.1 2001/08/31 11:19:26 robertc Exp $ +# $Id: Makefile.am,v 1.2 2003/01/23 00:36:27 robertc Exp $ # SUBDIRS = smbval diff --git a/helpers/ntlm_auth/SMB/Makefile.in b/helpers/ntlm_auth/SMB/Makefile.in index 0f87053bc8..cf7325f420 100644 --- a/helpers/ntlm_auth/SMB/Makefile.in +++ b/helpers/ntlm_auth/SMB/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,9 +17,8 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.24 2002/10/15 08:11:26 robertc Exp $ +# $Id: Makefile.in,v 1.25 2003/01/23 00:36:27 robertc Exp $ # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -49,9 +49,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -63,6 +67,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -80,7 +88,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -93,7 +100,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -110,6 +116,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -148,7 +155,9 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/libntlmssp.Po $(DEPDIR)/ntlm_auth.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/libntlmssp.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/ntlm_auth.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -172,9 +181,8 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/ntlm_auth/SMB/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @@ -182,16 +190,16 @@ install-libexecPROGRAMS: $(libexec_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f; \ + 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; \ else :; fi; \ done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -208,17 +216,17 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libntlmssp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ntlm_auth.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libntlmssp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntlm_auth.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .c.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -235,7 +243,7 @@ uninstall-info-am: # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): - @set fnord $(MAKEFLAGS); amf=$$2; \ + @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ @@ -255,7 +263,7 @@ $(RECURSIVE_TARGETS): mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: - @set fnord $(MAKEFLAGS); amf=$$2; \ + @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ @@ -283,16 +291,19 @@ tags-recursive: test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) @@ -303,45 +314,50 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done - for subdir in $(SUBDIRS); do \ + list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ @@ -372,6 +388,7 @@ install-am: all-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -379,7 +396,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/ntlm_auth/SMB/smbval/Makefile.in b/helpers/ntlm_auth/SMB/smbval/Makefile.in index edb615839d..5aab265a25 100644 --- a/helpers/ntlm_auth/SMB/smbval/Makefile.in +++ b/helpers/ntlm_auth/SMB/smbval/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,7 +15,6 @@ @SET_MAKE@ # makefile for smblib - SHELL = @SHELL@ srcdir = @srcdir@ @@ -45,9 +45,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -59,6 +63,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -76,7 +84,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -89,7 +96,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -106,6 +112,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -146,11 +153,12 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/md4.Po $(DEPDIR)/rfcnb-io.Po \ -@AMDEP_TRUE@ $(DEPDIR)/rfcnb-util.Po $(DEPDIR)/session.Po \ -@AMDEP_TRUE@ $(DEPDIR)/smbdes.Po $(DEPDIR)/smbencrypt.Po \ -@AMDEP_TRUE@ $(DEPDIR)/smblib-util.Po $(DEPDIR)/smblib.Po \ -@AMDEP_TRUE@ $(DEPDIR)/valid.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/md4.Po ./$(DEPDIR)/rfcnb-io.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/rfcnb-util.Po ./$(DEPDIR)/session.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/smbdes.Po ./$(DEPDIR)/smbencrypt.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/smblib-util.Po ./$(DEPDIR)/smblib.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/valid.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -168,11 +176,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/ntlm_auth/SMB/smbval/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status - -AR = ar + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) @@ -187,24 +191,24 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/md4.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/rfcnb-io.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/rfcnb-util.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/session.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/smbdes.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/smbencrypt.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/smblib-util.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/smblib.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/valid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md4.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rfcnb-io.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rfcnb-util.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/session.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smbdes.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smbencrypt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smblib-util.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smblib.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/valid.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .c.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -214,53 +218,61 @@ distclean-depend: CCDEPMODE = @CCDEPMODE@ uninstall-info-am: +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -284,6 +296,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -291,7 +304,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/ntlm_auth/fakeauth/Makefile.am b/helpers/ntlm_auth/fakeauth/Makefile.am index afe307d8a7..bde765a187 100644 --- a/helpers/ntlm_auth/fakeauth/Makefile.am +++ b/helpers/ntlm_auth/fakeauth/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.am,v 1.1 2001/08/31 11:19:27 robertc Exp $ +# $Id: Makefile.am,v 1.2 2003/01/23 00:36:34 robertc Exp $ # # Uncomment and customize the following to suit your needs: # diff --git a/helpers/ntlm_auth/fakeauth/Makefile.in b/helpers/ntlm_auth/fakeauth/Makefile.in index 9d87cd1949..322b5242ae 100644 --- a/helpers/ntlm_auth/fakeauth/Makefile.in +++ b/helpers/ntlm_auth/fakeauth/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,11 +17,10 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.23 2002/10/15 08:11:29 robertc Exp $ +# $Id: Makefile.in,v 1.24 2003/01/23 00:36:35 robertc Exp $ # # Uncomment and customize the following to suit your needs: # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -51,9 +51,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -65,6 +69,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -82,7 +90,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -95,7 +102,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -112,6 +118,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -146,7 +153,8 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/fakeauth_auth.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/fakeauth_auth.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -164,9 +172,8 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/ntlm_auth/fakeauth/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @@ -174,16 +181,16 @@ install-libexecPROGRAMS: $(libexec_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f; \ + 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; \ else :; fi; \ done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -200,16 +207,16 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fakeauth_auth.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fakeauth_auth.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .c.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -219,53 +226,61 @@ distclean-depend: CCDEPMODE = @CCDEPMODE@ uninstall-info-am: +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -290,6 +305,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -297,7 +313,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/ntlm_auth/fakeauth/ntlm.h b/helpers/ntlm_auth/fakeauth/ntlm.h index 9327e68663..08deda83d7 100644 --- a/helpers/ntlm_auth/fakeauth/ntlm.h +++ b/helpers/ntlm_auth/fakeauth/ntlm.h @@ -1,5 +1,5 @@ /* - * $Id: ntlm.h,v 1.4 2001/08/29 14:57:38 robertc Exp $ + * $Id: ntlm.h,v 1.5 2003/01/23 00:36:35 robertc Exp $ * * AUTHOR: Andrew Doran * diff --git a/helpers/ntlm_auth/no_check/Makefile.am b/helpers/ntlm_auth/no_check/Makefile.am index f1516ef75a..6ff9968444 100644 --- a/helpers/ntlm_auth/no_check/Makefile.am +++ b/helpers/ntlm_auth/no_check/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.am,v 1.3 2002/05/20 02:03:57 hno Exp $ +# $Id: Makefile.am,v 1.4 2003/01/23 00:36:38 robertc Exp $ # # Uncomment and customize the following to suit your needs: # diff --git a/helpers/ntlm_auth/no_check/Makefile.in b/helpers/ntlm_auth/no_check/Makefile.in index 72087a7f8e..adb983aa19 100644 --- a/helpers/ntlm_auth/no_check/Makefile.in +++ b/helpers/ntlm_auth/no_check/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,11 +17,10 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.25 2002/10/15 08:11:31 robertc Exp $ +# $Id: Makefile.in,v 1.26 2003/01/23 00:36:38 robertc Exp $ # # Uncomment and customize the following to suit your needs: # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -51,9 +51,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -65,6 +69,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -82,7 +90,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -95,7 +102,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -112,6 +118,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -142,27 +149,24 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/ntlm_auth/no_check/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecSCRIPT_INSTALL = $(INSTALL_SCRIPT) install-libexecSCRIPTS: $(libexec_SCRIPTS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @list='$(libexec_SCRIPTS)'; for p in $$list; do \ - f="`echo $$p|sed '$(transform)'`"; \ - if test -f $$p; then \ - echo " $(INSTALL_SCRIPT) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_SCRIPT) $$p $(DESTDIR)$(libexecdir)/$$f; \ - elif test -f $(srcdir)/$$p; then \ - echo " $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(libexecdir)/$$f; \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f $$d$$p; then \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " $(libexecSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(libexecdir)/$$f"; \ + $(libexecSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(libexecdir)/$$f; \ else :; fi; \ done uninstall-libexecSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(libexec_SCRIPTS)'; for p in $$list; do \ - f="`echo $$p|sed '$(transform)'`"; \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -170,22 +174,26 @@ uninstall-info-am: tags: TAGS TAGS: - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -210,6 +218,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -217,7 +226,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/helpers/ntlm_auth/winbind/Makefile.am b/helpers/ntlm_auth/winbind/Makefile.am index 934ea64d07..6983fd1980 100644 --- a/helpers/ntlm_auth/winbind/Makefile.am +++ b/helpers/ntlm_auth/winbind/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.am,v 1.5 2002/05/23 14:01:20 hno Exp $ +# $Id: Makefile.am,v 1.6 2003/01/23 00:36:40 robertc Exp $ # libexec_PROGRAMS = wb_ntlmauth diff --git a/helpers/ntlm_auth/winbind/Makefile.in b/helpers/ntlm_auth/winbind/Makefile.in index 5d9a7bdf4d..068c480d0a 100644 --- a/helpers/ntlm_auth/winbind/Makefile.in +++ b/helpers/ntlm_auth/winbind/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,9 +17,8 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.16 2002/10/15 08:11:32 robertc Exp $ +# $Id: Makefile.in,v 1.17 2003/01/23 00:36:40 robertc Exp $ # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -49,9 +49,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -63,6 +67,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -80,7 +88,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -93,7 +100,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -110,6 +116,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -148,7 +155,9 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/wb_common.Po $(DEPDIR)/wb_ntlm_auth.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/wb_common.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/wb_ntlm_auth.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -166,9 +175,8 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign helpers/ntlm_auth/winbind/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @@ -176,16 +184,16 @@ install-libexecPROGRAMS: $(libexec_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f; \ + 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; \ else :; fi; \ done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -202,17 +210,17 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/wb_common.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/wb_ntlm_auth.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wb_common.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wb_ntlm_auth.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .c.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -222,38 +230,41 @@ distclean-depend: CCDEPMODE = @CCDEPMODE@ uninstall-info-am: +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. @@ -261,15 +272,20 @@ distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) $(mkinstalldirs) $(distdir)/patches - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -294,6 +310,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -301,7 +318,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/icons/Makefile.am b/icons/Makefile.am index aef29f9278..2636e02821 100644 --- a/icons/Makefile.am +++ b/icons/Makefile.am @@ -1,4 +1,4 @@ -# $Id: Makefile.am,v 1.5 2001/11/30 15:27:13 hno Exp $ +# $Id: Makefile.am,v 1.6 2003/01/23 00:36:43 robertc Exp $ # ICON1 = anthony-binhex.gif diff --git a/icons/Makefile.in b/icons/Makefile.in index ca20b851d3..b2aa693536 100644 --- a/icons/Makefile.in +++ b/icons/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -13,9 +14,8 @@ @SET_MAKE@ -# $Id: Makefile.in,v 1.35 2002/10/15 08:11:35 robertc Exp $ +# $Id: Makefile.in,v 1.36 2003/01/23 00:36:43 robertc Exp $ # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -46,9 +46,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -60,6 +64,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -77,7 +85,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -90,7 +97,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -107,6 +113,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -164,18 +171,17 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign icons/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) uninstall-info-am: +iconDATA_INSTALL = $(INSTALL_DATA) install-iconDATA: $(icon_DATA) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(icondir) @list='$(icon_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(icondir)/$$f"; \ - $(INSTALL_DATA) $$d$$p $(DESTDIR)$(icondir)/$$f; \ + echo " $(iconDATA_INSTALL) $$d$$p $(DESTDIR)$(icondir)/$$f"; \ + $(iconDATA_INSTALL) $$d$$p $(DESTDIR)$(icondir)/$$f; \ done uninstall-iconDATA: @@ -188,22 +194,26 @@ uninstall-iconDATA: tags: TAGS TAGS: - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = .. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -228,6 +238,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -235,7 +246,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: diff --git a/include/Array.h b/include/Array.h index 9129cc9bd0..17808f7c2a 100644 --- a/include/Array.h +++ b/include/Array.h @@ -1,5 +1,5 @@ /* - * $Id: Array.h,v 1.9 2003/01/18 14:06:33 robertc Exp $ + * $Id: Array.h,v 1.10 2003/01/23 00:36:46 robertc Exp $ * * AUTHOR: Alex Rousskov * diff --git a/include/GNUregex.h b/include/GNUregex.h index 048b921433..f4af992cb3 100644 --- a/include/GNUregex.h +++ b/include/GNUregex.h @@ -1,5 +1,5 @@ /* - * $Id: GNUregex.h,v 1.7 2001/10/08 16:18:31 hno Exp $ + * $Id: GNUregex.h,v 1.8 2003/01/23 00:36:47 robertc Exp $ */ #ifndef SQUID_REGEXP_LIBRARY_H diff --git a/include/Range.h b/include/Range.h index 5e7f5b863b..84779415c8 100644 --- a/include/Range.h +++ b/include/Range.h @@ -1,6 +1,6 @@ /* - * $Id: Range.h,v 1.1 2003/01/22 11:05:49 robertc Exp $ + * $Id: Range.h,v 1.2 2003/01/23 00:36:47 robertc Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -35,8 +35,13 @@ #define SQUID_RANGE_H /* represents [start, end) */ -template class Range { - public: + +template + +class Range +{ + +public: Range (C start_, C end_); C start; C end; @@ -44,17 +49,20 @@ template class Range { size_t size() const; }; -template +template Range::Range (C start_, C end_) : start(start_), end(end_){} -template class Range -Range::intersection (Range const &rhs) +template + +class Range + Range::intersection (Range const &rhs) { Range result (XMAX(start, rhs.start), XMIN(end, rhs.end)); return result; } -template size_t +template +size_t Range::size() const { return end > start ? end - start : 0; diff --git a/include/RefCount.h b/include/RefCount.h index 911e1252d8..5f02d6a99b 100644 --- a/include/RefCount.h +++ b/include/RefCount.h @@ -1,6 +1,6 @@ /* - * $Id: RefCount.h,v 1.2 2002/12/13 03:41:28 robertc Exp $ + * $Id: RefCount.h,v 1.3 2003/01/23 00:36:47 robertc Exp $ * * DEBUG: section xx Refcount allocator * AUTHOR: Robert Collins diff --git a/include/Stack.h b/include/Stack.h index c044cbced1..c03a0f2655 100644 --- a/include/Stack.h +++ b/include/Stack.h @@ -1,5 +1,5 @@ /* - * $Id: Stack.h,v 1.13 2003/01/22 10:05:42 robertc Exp $ + * $Id: Stack.h,v 1.14 2003/01/23 00:36:47 robertc Exp $ * * AUTHOR: Alex Rousskov * diff --git a/include/asn1.h b/include/asn1.h index 4c6792701c..328c4ca369 100644 --- a/include/asn1.h +++ b/include/asn1.h @@ -28,7 +28,7 @@ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. * - * $Id: asn1.h,v 1.12 2001/10/08 16:18:31 hno Exp $ + * $Id: asn1.h,v 1.13 2003/01/23 00:36:47 robertc Exp $ * **********************************************************************/ diff --git a/include/cache_snmp.h b/include/cache_snmp.h index e129e4163b..714131c2dc 100644 --- a/include/cache_snmp.h +++ b/include/cache_snmp.h @@ -1,5 +1,5 @@ /* - * $Id: cache_snmp.h,v 1.26 2001/10/08 16:55:25 hno Exp $ + * $Id: cache_snmp.h,v 1.27 2003/01/23 00:36:47 robertc Exp $ */ #ifndef SQUID_CACHE_SNMP_H diff --git a/include/config.h b/include/config.h index b7244cd8d8..78db763474 100644 --- a/include/config.h +++ b/include/config.h @@ -1,5 +1,5 @@ /* - * $Id: config.h,v 1.7 2002/10/13 20:34:51 robertc Exp $ + * $Id: config.h,v 1.8 2003/01/23 00:36:47 robertc Exp $ * * AUTHOR: Duane Wessels * diff --git a/include/hash.h b/include/hash.h index 99bd430cbb..7e05d1d9fa 100644 --- a/include/hash.h +++ b/include/hash.h @@ -1,5 +1,5 @@ /* - * $Id: hash.h,v 1.7 2002/10/15 09:25:32 robertc Exp $ + * $Id: hash.h,v 1.8 2003/01/23 00:36:47 robertc Exp $ */ #ifndef SQUID_HASH_H diff --git a/include/heap.h b/include/heap.h index 6e256a2cc3..f1e4a3f52b 100644 --- a/include/heap.h +++ b/include/heap.h @@ -1,5 +1,5 @@ /* - * $Id: heap.h,v 1.5 2002/10/13 20:34:51 robertc Exp $ + * $Id: heap.h,v 1.6 2003/01/23 00:36:47 robertc Exp $ * * AUTHOR: John Dilley, Hewlett Packard * diff --git a/include/md5.h b/include/md5.h index 5252d45a56..70a370bbd0 100644 --- a/include/md5.h +++ b/include/md5.h @@ -1,5 +1,5 @@ /* - * $Id: md5.h,v 1.14 2002/10/13 20:34:51 robertc Exp $ + * $Id: md5.h,v 1.15 2003/01/23 00:36:47 robertc Exp $ */ #ifndef SQUID_MD5_H diff --git a/include/ntlmauth.h b/include/ntlmauth.h index 10232902cf..9a5b59ac3f 100644 --- a/include/ntlmauth.h +++ b/include/ntlmauth.h @@ -1,5 +1,5 @@ /* - * $Id: ntlmauth.h,v 1.9 2002/10/06 02:05:22 robertc Exp $ + * $Id: ntlmauth.h,v 1.10 2003/01/23 00:36:47 robertc Exp $ * * * * * * * * * Legal stuff * * * * * * * * diff --git a/include/parse.h b/include/parse.h index 06e4469e08..db79e02b95 100644 --- a/include/parse.h +++ b/include/parse.h @@ -1,5 +1,5 @@ /* - * $Id: parse.h,v 1.11 2001/10/17 19:05:37 hno Exp $ + * $Id: parse.h,v 1.12 2003/01/23 00:36:47 robertc Exp $ */ #ifndef SQUID_PARSE_H diff --git a/include/radix.h b/include/radix.h index c38067acda..76bee3668e 100644 --- a/include/radix.h +++ b/include/radix.h @@ -1,5 +1,5 @@ /* - * $Id: radix.h,v 1.15 2002/10/14 07:50:38 hno Exp $ + * $Id: radix.h,v 1.16 2003/01/23 00:36:47 robertc Exp $ */ #ifndef SQUID_RADIX_H diff --git a/include/rfc1035.h b/include/rfc1035.h index b3196fbb19..9c5f5c065e 100644 --- a/include/rfc1035.h +++ b/include/rfc1035.h @@ -1,5 +1,5 @@ /* - * $Id: rfc1035.h,v 1.8 2002/10/13 20:34:51 robertc Exp $ + * $Id: rfc1035.h,v 1.9 2003/01/23 00:36:47 robertc Exp $ * * AUTHOR: Duane Wessels * diff --git a/include/rfc2617.h b/include/rfc2617.h index ee14507b59..ab38cd6357 100644 --- a/include/rfc2617.h +++ b/include/rfc2617.h @@ -14,7 +14,7 @@ /* - * $Id: rfc2617.h,v 1.4 2002/10/13 20:34:51 robertc Exp $ + * $Id: rfc2617.h,v 1.5 2003/01/23 00:36:47 robertc Exp $ * * DEBUG: * AUTHOR: RFC 2617 & Robert Collins diff --git a/include/snmp-internal.h b/include/snmp-internal.h index 2da0b22e3a..020342f6d6 100644 --- a/include/snmp-internal.h +++ b/include/snmp-internal.h @@ -24,7 +24,7 @@ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. * - * $Id: snmp-internal.h,v 1.3 2001/10/08 16:18:31 hno Exp $ + * $Id: snmp-internal.h,v 1.4 2003/01/23 00:36:47 robertc Exp $ * **********************************************************************/ diff --git a/include/snmp-mib.h b/include/snmp-mib.h index 71ca7b9c01..33e56ca04e 100644 --- a/include/snmp-mib.h +++ b/include/snmp-mib.h @@ -26,7 +26,7 @@ * * Author: Ryan Troll * - * $Id: snmp-mib.h,v 1.3 2001/10/08 16:18:31 hno Exp $ + * $Id: snmp-mib.h,v 1.4 2003/01/23 00:36:47 robertc Exp $ * ***************************************************************************/ diff --git a/include/snmp.h b/include/snmp.h index c316ab4a8f..203eb07e00 100644 --- a/include/snmp.h +++ b/include/snmp.h @@ -27,7 +27,7 @@ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. * - * $Id: snmp.h,v 1.15 2002/02/13 02:01:10 hno Exp $ + * $Id: snmp.h,v 1.16 2003/01/23 00:36:47 robertc Exp $ * **********************************************************************/ diff --git a/include/snmp_api.h b/include/snmp_api.h index e8a13131b3..80caab04bc 100644 --- a/include/snmp_api.h +++ b/include/snmp_api.h @@ -1,5 +1,5 @@ /* - * $Id: snmp_api.h,v 1.12 2001/10/08 16:18:31 hno Exp $ + * $Id: snmp_api.h,v 1.13 2003/01/23 00:36:47 robertc Exp $ */ #ifndef SQUID_SNMP_API_H diff --git a/include/snmp_api_error.h b/include/snmp_api_error.h index 83a6525ac3..3fbd14073b 100644 --- a/include/snmp_api_error.h +++ b/include/snmp_api_error.h @@ -26,7 +26,7 @@ * * Author: Ryan Troll * - * $Id: snmp_api_error.h,v 1.4 2001/10/17 19:05:37 hno Exp $ + * $Id: snmp_api_error.h,v 1.5 2003/01/23 00:36:47 robertc Exp $ * ***************************************************************************/ diff --git a/include/snmp_api_util.h b/include/snmp_api_util.h index cb1f1884e0..cb9aa8fb38 100644 --- a/include/snmp_api_util.h +++ b/include/snmp_api_util.h @@ -1,5 +1,5 @@ /* - * $Id: snmp_api_util.h,v 1.4 2001/10/08 16:18:31 hno Exp $ + * $Id: snmp_api_util.h,v 1.5 2003/01/23 00:36:47 robertc Exp $ */ #ifndef SQUID_SNMP_API_UTIL_H diff --git a/include/snmp_client.h b/include/snmp_client.h index e269f3ba1f..3158e34931 100644 --- a/include/snmp_client.h +++ b/include/snmp_client.h @@ -1,5 +1,5 @@ /* - * $Id: snmp_client.h,v 1.8 2001/10/08 16:18:31 hno Exp $ + * $Id: snmp_client.h,v 1.9 2003/01/23 00:36:47 robertc Exp $ */ #ifndef SQUID_SNMP_CLIENT_H diff --git a/include/snmp_coexist.h b/include/snmp_coexist.h index b150944417..4095345fa5 100644 --- a/include/snmp_coexist.h +++ b/include/snmp_coexist.h @@ -26,7 +26,7 @@ * * Author: Ryan Troll * - * $Id: snmp_coexist.h,v 1.3 2001/10/08 16:18:31 hno Exp $ + * $Id: snmp_coexist.h,v 1.4 2003/01/23 00:36:47 robertc Exp $ * **********************************************************************/ diff --git a/include/snmp_debug.h b/include/snmp_debug.h index a293624a84..349c275b6d 100644 --- a/include/snmp_debug.h +++ b/include/snmp_debug.h @@ -1,5 +1,5 @@ /* - * $Id: snmp_debug.h,v 1.12 2002/10/13 20:34:51 robertc Exp $ + * $Id: snmp_debug.h,v 1.13 2003/01/23 00:36:47 robertc Exp $ */ #ifndef SQUID_SNMP_DEBUG_H diff --git a/include/snmp_error.h b/include/snmp_error.h index eb1c7ad238..03c5c51b18 100644 --- a/include/snmp_error.h +++ b/include/snmp_error.h @@ -24,7 +24,7 @@ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. * - * $Id: snmp_error.h,v 1.4 2001/10/17 19:05:37 hno Exp $ + * $Id: snmp_error.h,v 1.5 2003/01/23 00:36:47 robertc Exp $ * **********************************************************************/ diff --git a/include/snmp_impl.h b/include/snmp_impl.h index 36972451f1..901c66862d 100644 --- a/include/snmp_impl.h +++ b/include/snmp_impl.h @@ -1,5 +1,5 @@ /* - * $Id: snmp_impl.h,v 1.14 2002/02/19 00:27:43 hno Exp $ + * $Id: snmp_impl.h,v 1.15 2003/01/23 00:36:48 robertc Exp $ */ #ifndef SQUID_SNMP_IMPL_H diff --git a/include/snmp_msg.h b/include/snmp_msg.h index 7c6f44b6e6..633ae5b49e 100644 --- a/include/snmp_msg.h +++ b/include/snmp_msg.h @@ -26,7 +26,7 @@ * * Author: Ryan Troll * - * $Id: snmp_msg.h,v 1.3 2001/10/08 16:18:31 hno Exp $ + * $Id: snmp_msg.h,v 1.4 2003/01/23 00:36:48 robertc Exp $ * **********************************************************************/ diff --git a/include/snmp_pdu.h b/include/snmp_pdu.h index e949a64151..a60addb3e9 100644 --- a/include/snmp_pdu.h +++ b/include/snmp_pdu.h @@ -25,7 +25,7 @@ * * Author: Ryan Troll * - * $Id: snmp_pdu.h,v 1.10 2002/10/13 20:34:51 robertc Exp $ + * $Id: snmp_pdu.h,v 1.11 2003/01/23 00:36:48 robertc Exp $ * **********************************************************************/ diff --git a/include/snmp_session.h b/include/snmp_session.h index 3462f7d135..0d87de033f 100644 --- a/include/snmp_session.h +++ b/include/snmp_session.h @@ -24,7 +24,7 @@ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. * - * $Id: snmp_session.h,v 1.4 2001/10/17 19:05:37 hno Exp $ + * $Id: snmp_session.h,v 1.5 2003/01/23 00:36:48 robertc Exp $ * **********************************************************************/ diff --git a/include/snmp_util.h b/include/snmp_util.h index 1d84646f0e..c86ba178e8 100644 --- a/include/snmp_util.h +++ b/include/snmp_util.h @@ -1,5 +1,5 @@ /* - * $Id: snmp_util.h,v 1.9 2002/10/13 20:34:51 robertc Exp $ + * $Id: snmp_util.h,v 1.10 2003/01/23 00:36:48 robertc Exp $ */ #ifndef SQUID_SNMP_UTIL_H diff --git a/include/snmp_vars.h b/include/snmp_vars.h index 16ea4b6547..b0ba155498 100644 --- a/include/snmp_vars.h +++ b/include/snmp_vars.h @@ -25,7 +25,7 @@ * * Author: Ryan Troll * - * $Id: snmp_vars.h,v 1.12 2002/10/13 20:34:51 robertc Exp $ + * $Id: snmp_vars.h,v 1.13 2003/01/23 00:36:48 robertc Exp $ * **********************************************************************/ diff --git a/include/snprintf.h b/include/snprintf.h index c4c5c9216a..8268285891 100644 --- a/include/snprintf.h +++ b/include/snprintf.h @@ -1,5 +1,5 @@ /* - * $Id: snprintf.h,v 1.6 2001/10/08 16:18:31 hno Exp $ + * $Id: snprintf.h,v 1.7 2003/01/23 00:36:48 robertc Exp $ */ #ifndef SQUID_SNPRINTF_H diff --git a/include/splay.h b/include/splay.h index 69a0365e78..23d4c19535 100644 --- a/include/splay.h +++ b/include/splay.h @@ -1,5 +1,5 @@ /* - * $Id: splay.h,v 1.12 2002/10/13 20:34:51 robertc Exp $ + * $Id: splay.h,v 1.13 2003/01/23 00:36:48 robertc Exp $ */ #ifndef SQUID_SPLAY_H diff --git a/include/squid_types.h b/include/squid_types.h index ef5981e4ef..7dd34f9ecb 100644 --- a/include/squid_types.h +++ b/include/squid_types.h @@ -1,5 +1,5 @@ /* - * $Id: squid_types.h,v 1.6 2002/10/07 14:15:32 hno Exp $ + * $Id: squid_types.h,v 1.7 2003/01/23 00:36:48 robertc Exp $ * * * * * * * * * Legal stuff * * * * * * * * diff --git a/include/tempnam.h b/include/tempnam.h index 92516d825d..1de398b628 100644 --- a/include/tempnam.h +++ b/include/tempnam.h @@ -1,5 +1,5 @@ /* - * $Id: tempnam.h,v 1.11 2001/10/08 16:18:31 hno Exp $ + * $Id: tempnam.h,v 1.12 2003/01/23 00:36:48 robertc Exp $ */ diff --git a/include/util.h b/include/util.h index 0593a27d9f..838cf696d8 100644 --- a/include/util.h +++ b/include/util.h @@ -1,5 +1,5 @@ /* - * $Id: util.h,v 1.66 2003/01/17 04:53:35 robertc Exp $ + * $Id: util.h,v 1.67 2003/01/23 00:36:48 robertc Exp $ * * AUTHOR: Harvest Derived * diff --git a/include/version.h b/include/version.h index 730456bd5b..529043e6fa 100644 --- a/include/version.h +++ b/include/version.h @@ -1,5 +1,5 @@ /* - * $Id: version.h,v 1.133 2001/08/31 11:19:09 robertc Exp $ + * $Id: version.h,v 1.134 2003/01/23 00:36:48 robertc Exp $ * * SQUID_VERSION - String for version id of this distribution */ diff --git a/lib/Array.cc b/lib/Array.cc index 65b478af00..0b1cfd805f 100644 --- a/lib/Array.cc +++ b/lib/Array.cc @@ -1,5 +1,5 @@ /* - * $Id: Array.cc,v 1.9 2003/01/18 14:06:32 robertc Exp $ + * $Id: Array.cc,v 1.10 2003/01/23 00:37:00 robertc Exp $ * * AUTHOR: Alex Rousskov * diff --git a/lib/GNUregex.c b/lib/GNUregex.c index 7c5bd5a720..3788434972 100644 --- a/lib/GNUregex.c +++ b/lib/GNUregex.c @@ -1,5 +1,5 @@ /* - * $Id: GNUregex.c,v 1.12 2001/01/07 09:55:22 hno Exp $ + * $Id: GNUregex.c,v 1.13 2003/01/23 00:37:00 robertc Exp $ */ /* Extended regular expression matching and search library, diff --git a/lib/Makefile.am b/lib/Makefile.am index ea39f86fc5..87390f9ca8 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to produce Makefile.in # -# $Id: Makefile.am,v 1.7 2003/01/22 10:05:41 robertc Exp $ +# $Id: Makefile.am,v 1.8 2003/01/23 00:37:01 robertc Exp $ # if ENABLE_XPROF_STATS diff --git a/lib/MemPool.c b/lib/MemPool.c index e2150c8125..63478c3073 100644 --- a/lib/MemPool.c +++ b/lib/MemPool.c @@ -1,6 +1,6 @@ /* - * $Id: MemPool.c,v 1.14 2002/11/15 13:07:25 hno Exp $ + * $Id: MemPool.c,v 1.15 2003/01/23 00:37:01 robertc Exp $ * * DEBUG: section 63 Low Level Memory Pool Management * AUTHOR: Alex Rousskov, Andres Kroonmaa diff --git a/lib/Profiler.c b/lib/Profiler.c index 025c81454a..cc2ba67834 100644 --- a/lib/Profiler.c +++ b/lib/Profiler.c @@ -1,6 +1,6 @@ /* - * $Id: Profiler.c,v 1.1 2002/10/02 11:06:30 robertc Exp $ + * $Id: Profiler.c,v 1.2 2003/01/23 00:37:01 robertc Exp $ * * DEBUG: section 81 CPU Profiling Routines * AUTHOR: Andres Kroonmaa, Sep.2000 diff --git a/lib/base64.c b/lib/base64.c index adee8e334a..f829c6d65a 100644 --- a/lib/base64.c +++ b/lib/base64.c @@ -1,5 +1,5 @@ /* - * $Id: base64.c,v 1.20 2002/04/19 21:03:48 hno Exp $ + * $Id: base64.c,v 1.21 2003/01/23 00:37:01 robertc Exp $ */ #include "config.h" diff --git a/lib/dlmalloc.c b/lib/dlmalloc.c index 5602027449..658c0c7370 100644 --- a/lib/dlmalloc.c +++ b/lib/dlmalloc.c @@ -1,5 +1,5 @@ /* - * $Id: dlmalloc.c,v 1.4 2001/02/23 20:05:16 hno Exp $ + * $Id: dlmalloc.c,v 1.5 2003/01/23 00:37:01 robertc Exp $ */ /* ---------- To make a malloc.h, start cutting here ------------ */ diff --git a/lib/getfullhostname.c b/lib/getfullhostname.c index 8ccfb8cb18..89c5057279 100644 --- a/lib/getfullhostname.c +++ b/lib/getfullhostname.c @@ -1,6 +1,6 @@ /* - * $Id: getfullhostname.c,v 1.19 2001/01/12 00:37:12 wessels Exp $ + * $Id: getfullhostname.c,v 1.20 2003/01/23 00:37:01 robertc Exp $ * * DEBUG: * AUTHOR: Harvest Derived diff --git a/lib/hash.c b/lib/hash.c index a001d9a196..ee1fc5e92d 100644 --- a/lib/hash.c +++ b/lib/hash.c @@ -1,6 +1,6 @@ /* - * $Id: hash.c,v 1.14 2002/10/15 09:25:32 robertc Exp $ + * $Id: hash.c,v 1.15 2003/01/23 00:37:01 robertc Exp $ * * DEBUG: section 0 Hash Tables * AUTHOR: Harvest Derived diff --git a/lib/heap.c b/lib/heap.c index 1c62db91b7..3fbc9dc03f 100644 --- a/lib/heap.c +++ b/lib/heap.c @@ -1,6 +1,6 @@ /* - * $Id: heap.c,v 1.8 2001/02/07 18:56:50 hno Exp $ + * $Id: heap.c,v 1.9 2003/01/23 00:37:01 robertc Exp $ * * AUTHOR: John Dilley, Hewlett Packard * diff --git a/lib/html_quote.c b/lib/html_quote.c index 43c4aa6a66..27937a5cd4 100644 --- a/lib/html_quote.c +++ b/lib/html_quote.c @@ -1,5 +1,5 @@ /* - * $Id: html_quote.c,v 1.4 2001/10/17 19:46:43 hno Exp $ + * $Id: html_quote.c,v 1.5 2003/01/23 00:37:01 robertc Exp $ * * DEBUG: * AUTHOR: Robert Collins diff --git a/lib/iso3307.c b/lib/iso3307.c index 2b5f764eb6..245c21b53b 100644 --- a/lib/iso3307.c +++ b/lib/iso3307.c @@ -1,5 +1,5 @@ /* - * $Id: iso3307.c,v 1.5 2001/02/07 18:56:50 hno Exp $ + * $Id: iso3307.c,v 1.6 2003/01/23 00:37:01 robertc Exp $ */ #include "config.h" diff --git a/lib/md5-test.c b/lib/md5-test.c index 1d9ae485d7..1ba2bdac29 100644 --- a/lib/md5-test.c +++ b/lib/md5-test.c @@ -1,5 +1,5 @@ /* - * $Id: md5-test.c,v 1.2 1998/09/23 17:16:11 wessels Exp $ + * $Id: md5-test.c,v 1.3 2003/01/23 00:37:01 robertc Exp $ */ /* diff --git a/lib/md5.c b/lib/md5.c index 4b8322498a..88a017b553 100644 --- a/lib/md5.c +++ b/lib/md5.c @@ -1,5 +1,5 @@ /* - * $Id: md5.c,v 1.15 2002/08/09 10:57:42 robertc Exp $ + * $Id: md5.c,v 1.16 2003/01/23 00:37:01 robertc Exp $ */ /* taken from RFC-1321/Appendix A.3 */ diff --git a/lib/ntlmauth.c b/lib/ntlmauth.c index 06a4bc3e0f..44fb912a89 100644 --- a/lib/ntlmauth.c +++ b/lib/ntlmauth.c @@ -1,5 +1,5 @@ /* - * $Id: ntlmauth.c,v 1.7 2002/07/22 02:05:00 hno Exp $ + * $Id: ntlmauth.c,v 1.8 2003/01/23 00:37:01 robertc Exp $ * * * * * * * * * Legal stuff * * * * * * * * diff --git a/lib/radix.c b/lib/radix.c index 110240a147..1e5ebfe25e 100644 --- a/lib/radix.c +++ b/lib/radix.c @@ -1,5 +1,5 @@ /* - * $Id: radix.c,v 1.18 2002/10/18 22:42:00 hno Exp $ + * $Id: radix.c,v 1.19 2003/01/23 00:37:01 robertc Exp $ * * DEBUG: section 53 Radix tree data structure implementation * AUTHOR: NetBSD Derived diff --git a/lib/rfc1035.c b/lib/rfc1035.c index 41800562a8..64d5f942ce 100644 --- a/lib/rfc1035.c +++ b/lib/rfc1035.c @@ -1,6 +1,6 @@ /* - * $Id: rfc1035.c,v 1.28 2002/10/18 22:42:00 hno Exp $ + * $Id: rfc1035.c,v 1.29 2003/01/23 00:37:01 robertc Exp $ * * Low level DNS protocol routines * AUTHOR: Duane Wessels diff --git a/lib/rfc1123.c b/lib/rfc1123.c index 8acad0f08f..6f2cadd395 100644 --- a/lib/rfc1123.c +++ b/lib/rfc1123.c @@ -1,6 +1,6 @@ /* - * $Id: rfc1123.c,v 1.30 2002/10/06 02:05:22 robertc Exp $ + * $Id: rfc1123.c,v 1.31 2003/01/23 00:37:01 robertc Exp $ * * DEBUG: * AUTHOR: Harvest Derived diff --git a/lib/rfc1738.c b/lib/rfc1738.c index 9a2d429e63..dc5fb2f7a4 100644 --- a/lib/rfc1738.c +++ b/lib/rfc1738.c @@ -1,5 +1,5 @@ /* - * $Id: rfc1738.c,v 1.23 2001/02/07 18:56:51 hno Exp $ + * $Id: rfc1738.c,v 1.24 2003/01/23 00:37:01 robertc Exp $ * * DEBUG: * AUTHOR: Harvest Derived diff --git a/lib/rfc2617.c b/lib/rfc2617.c index 5ae2730c0d..752d50e714 100644 --- a/lib/rfc2617.c +++ b/lib/rfc2617.c @@ -13,7 +13,7 @@ /* - * $Id: rfc2617.c,v 1.6 2002/10/18 22:42:00 hno Exp $ + * $Id: rfc2617.c,v 1.7 2003/01/23 00:37:01 robertc Exp $ * * DEBUG: * AUTHOR: RFC 2617 & Robert Collins diff --git a/lib/safe_inet_addr.c b/lib/safe_inet_addr.c index 04a042e246..1a0c1453d6 100644 --- a/lib/safe_inet_addr.c +++ b/lib/safe_inet_addr.c @@ -1,6 +1,6 @@ /* - * $Id: safe_inet_addr.c,v 1.12 2001/02/07 18:56:51 hno Exp $ + * $Id: safe_inet_addr.c,v 1.13 2003/01/23 00:37:01 robertc Exp $ */ #include "config.h" diff --git a/lib/snprintf.c b/lib/snprintf.c index a44f342821..5ceac2cca3 100644 --- a/lib/snprintf.c +++ b/lib/snprintf.c @@ -1,5 +1,5 @@ /* - * $Id: snprintf.c,v 1.18 2001/01/07 10:57:14 hno Exp $ + * $Id: snprintf.c,v 1.19 2003/01/23 00:37:01 robertc Exp $ */ /* ==================================================================== diff --git a/lib/splay.c b/lib/splay.c index 0d8e778e7c..7b9494478f 100644 --- a/lib/splay.c +++ b/lib/splay.c @@ -1,5 +1,5 @@ /* - * $Id: splay.c,v 1.14 2002/10/18 22:42:00 hno Exp $ + * $Id: splay.c,v 1.15 2003/01/23 00:37:01 robertc Exp $ * * based on ftp://ftp.cs.cmu.edu/user/sleator/splaying/top-down-splay.c * http://bobo.link.cs.cmu.edu/cgi-bin/splay/splay-cgi.pl diff --git a/lib/strerror.c b/lib/strerror.c index f03978b219..5c92771381 100644 --- a/lib/strerror.c +++ b/lib/strerror.c @@ -1,5 +1,5 @@ /* - * $Id: strerror.c,v 1.6 2001/01/12 00:37:13 wessels Exp $ + * $Id: strerror.c,v 1.7 2003/01/23 00:37:02 robertc Exp $ * * DEBUG: * AUTHOR: Duane Wessels diff --git a/lib/stub_memaccount.c b/lib/stub_memaccount.c index 3f3b4f4f19..111474f49c 100644 --- a/lib/stub_memaccount.c +++ b/lib/stub_memaccount.c @@ -1,5 +1,5 @@ /* - * $Id: stub_memaccount.c,v 1.5 2001/02/07 18:56:51 hno Exp $ + * $Id: stub_memaccount.c,v 1.6 2003/01/23 00:37:02 robertc Exp $ */ /* Stub function for programs not implementing statMemoryAccounted */ diff --git a/lib/tempnam.c b/lib/tempnam.c index c1a7615424..6695d40e80 100644 --- a/lib/tempnam.c +++ b/lib/tempnam.c @@ -1,5 +1,5 @@ /* - * $Id: tempnam.c,v 1.10 1998/09/23 17:14:24 wessels Exp $ + * $Id: tempnam.c,v 1.11 2003/01/23 00:37:02 robertc Exp $ */ /* A reasonably functional tmpnam. */ diff --git a/lib/util.c b/lib/util.c index 06fc0a46d3..c56f4f31e1 100644 --- a/lib/util.c +++ b/lib/util.c @@ -1,6 +1,6 @@ /* - * $Id: util.c,v 1.88 2002/10/18 22:42:00 hno Exp $ + * $Id: util.c,v 1.89 2003/01/23 00:37:02 robertc Exp $ * * DEBUG: * AUTHOR: Harvest Derived diff --git a/lib/uudecode.c b/lib/uudecode.c index 0fa66e3127..73ada954a9 100644 --- a/lib/uudecode.c +++ b/lib/uudecode.c @@ -1,5 +1,5 @@ /* - * $Id: uudecode.c,v 1.9 1998/09/23 17:16:13 wessels Exp $ + * $Id: uudecode.c,v 1.10 2003/01/23 00:37:02 robertc Exp $ */ #include "config.h" diff --git a/scripts/Makefile.in b/scripts/Makefile.in index d3c89f2161..35c43ef110 100644 --- a/scripts/Makefile.in +++ b/scripts/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -17,7 +18,6 @@ # This file is a Makefile for compiling and installing Cache Manager. # Cache Manager is a manager program for Internet Object Cache. # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -48,9 +48,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -62,6 +66,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -79,7 +87,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -92,7 +99,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -109,6 +115,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -139,31 +146,28 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign scripts/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) RunCache: $(top_builddir)/config.status RunCache.in - cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= CONFIG_LINKS= $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ RunAccel: $(top_builddir)/config.status RunAccel.in - cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= CONFIG_LINKS= $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +binSCRIPT_INSTALL = $(INSTALL_SCRIPT) install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_SCRIPTS)'; for p in $$list; do \ - f="`echo $$p|sed '$(transform)'`"; \ - if test -f $$p; then \ - echo " $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/$$f"; \ - $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/$$f; \ - elif test -f $(srcdir)/$$p; then \ - echo " $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(bindir)/$$f"; \ - $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(bindir)/$$f; \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f $$d$$p; then \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " $(binSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(bindir)/$$f"; \ + $(binSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(bindir)/$$f; \ else :; fi; \ done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; for p in $$list; do \ - f="`echo $$p|sed '$(transform)'`"; \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ rm -f $(DESTDIR)$(bindir)/$$f; \ done @@ -171,22 +175,26 @@ uninstall-info-am: tags: TAGS TAGS: - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = .. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -211,6 +219,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -218,7 +227,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/scripts/RunAccel.in b/scripts/RunAccel.in index 0f17f86d33..0720a906e2 100644 --- a/scripts/RunAccel.in +++ b/scripts/RunAccel.in @@ -1,6 +1,6 @@ #!/bin/sh # -# $Id: RunAccel.in,v 1.6 2003/01/09 11:39:53 hno Exp $ +# $Id: RunAccel.in,v 1.7 2003/01/23 00:37:06 robertc Exp $ # enable HTTP requests on port 80 port="-a 80" diff --git a/scripts/RunCache.in b/scripts/RunCache.in index 2d285ac4f5..6f918422df 100644 --- a/scripts/RunCache.in +++ b/scripts/RunCache.in @@ -1,6 +1,6 @@ #!/bin/sh # -# $Id: RunCache.in,v 1.10 2003/01/09 11:39:53 hno Exp $ +# $Id: RunCache.in,v 1.11 2003/01/23 00:37:06 robertc Exp $ prefix=@prefix@ exec_prefix=@exec_prefix@ diff --git a/scripts/check_cache.pl b/scripts/check_cache.pl index 6133d89dfb..45d2f74b01 100755 --- a/scripts/check_cache.pl +++ b/scripts/check_cache.pl @@ -8,7 +8,7 @@ # Check the Squid-1.1.x cache directory for stale objects - i.e. those # which exist on disk but aren't listed in cached's log file. -# $Id: check_cache.pl,v 1.4 1997/02/03 23:42:21 wessels Exp $ +# $Id: check_cache.pl,v 1.5 2003/01/23 00:37:06 robertc Exp $ require "getopts.pl"; &Getopts("c:drt:vh"); diff --git a/scripts/fileno-to-pathname.pl b/scripts/fileno-to-pathname.pl index befae1176f..b0caa8d0c7 100755 --- a/scripts/fileno-to-pathname.pl +++ b/scripts/fileno-to-pathname.pl @@ -1,6 +1,6 @@ #!/usr/bin/perl -w -# $Id: fileno-to-pathname.pl,v 1.3 2002/04/07 02:33:40 hno Exp $ +# $Id: fileno-to-pathname.pl,v 1.4 2003/01/23 00:37:06 robertc Exp $ # Convert hexadecimal cache file numbers (from swap log) into full pathnames. # Duane Wessels 6/30/97 diff --git a/scripts/flag_truncs.pl b/scripts/flag_truncs.pl index 024b96a8aa..6aa9e0a96e 100755 --- a/scripts/flag_truncs.pl +++ b/scripts/flag_truncs.pl @@ -6,7 +6,7 @@ # - i.e. those for which there is a "Content-length:" HTTP header, # and this does not match the size of the cached object -# $Id: flag_truncs.pl,v 1.1 1996/02/22 06:23:57 wessels Exp $ +# $Id: flag_truncs.pl,v 1.2 2003/01/23 00:37:06 robertc Exp $ require "getopts.pl"; require "stat.pl"; diff --git a/scripts/upgrade-1.0-store.pl b/scripts/upgrade-1.0-store.pl index 0dbe98e4c6..52b4be75c5 100755 --- a/scripts/upgrade-1.0-store.pl +++ b/scripts/upgrade-1.0-store.pl @@ -1,6 +1,6 @@ #!/usr/local/bin/perl -# $Id: upgrade-1.0-store.pl,v 1.2 1996/10/11 19:56:06 wessels Exp $ +# $Id: upgrade-1.0-store.pl,v 1.3 2003/01/23 00:37:06 robertc Exp $ select(STDERR); $|=1; select(STDOUT); $|=1; diff --git a/snmplib/Makefile.in b/snmplib/Makefile.in index 9f2cfdc6e8..b7a3d58a05 100644 --- a/snmplib/Makefile.in +++ b/snmplib/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -12,7 +13,6 @@ # PARTICULAR PURPOSE. @SET_MAKE@ - SHELL = @SHELL@ srcdir = @srcdir@ @@ -43,9 +43,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -57,6 +61,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -74,7 +82,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -87,7 +94,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -104,16 +110,16 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ + +VERSION = 3.4 XTRA_LIBS = @XTRA_LIBS@ XTRA_OBJS = @XTRA_OBJS@ am__include = @am__include@ am__quote = @am__quote@ install_sh = @install_sh@ makesnmplib = @makesnmplib@ - -VERSION = 3.4 - noinst_LIBRARIES = libsnmp.a libsnmp_a_SOURCES = asn1.c parse.c snmp_vars.c \ coexistance.c snmp_api.c snmp_error.c \ @@ -141,12 +147,14 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/asn1.Po $(DEPDIR)/coexistance.Po \ -@AMDEP_TRUE@ $(DEPDIR)/mib.Po $(DEPDIR)/parse.Po \ -@AMDEP_TRUE@ $(DEPDIR)/snmp_api.Po $(DEPDIR)/snmp_api_error.Po \ -@AMDEP_TRUE@ $(DEPDIR)/snmp_error.Po $(DEPDIR)/snmp_msg.Po \ -@AMDEP_TRUE@ $(DEPDIR)/snmp_pdu.Po $(DEPDIR)/snmp_vars.Po \ -@AMDEP_TRUE@ $(DEPDIR)/snmplib_debug.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/asn1.Po ./$(DEPDIR)/coexistance.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/mib.Po ./$(DEPDIR)/parse.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/snmp_api.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/snmp_api_error.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/snmp_error.Po ./$(DEPDIR)/snmp_msg.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/snmp_pdu.Po ./$(DEPDIR)/snmp_vars.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/snmplib_debug.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -164,11 +172,7 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign snmplib/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status - -AR = ar + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) @@ -183,26 +187,26 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/asn1.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/coexistance.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/mib.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/parse.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/snmp_api.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/snmp_api_error.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/snmp_error.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/snmp_msg.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/snmp_pdu.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/snmp_vars.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/snmplib_debug.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asn1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coexistance.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mib.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snmp_api.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snmp_api_error.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snmp_error.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snmp_msg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snmp_pdu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snmp_vars.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snmplib_debug.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .c.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -212,53 +216,61 @@ distclean-depend: CCDEPMODE = @CCDEPMODE@ uninstall-info-am: +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = .. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -282,6 +294,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -289,7 +302,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/src/CacheDigest.cc b/src/CacheDigest.cc index b85d1f10f9..dc5638e073 100644 --- a/src/CacheDigest.cc +++ b/src/CacheDigest.cc @@ -1,6 +1,6 @@ /* - * $Id: CacheDigest.cc,v 1.34 2002/10/13 20:34:56 robertc Exp $ + * $Id: CacheDigest.cc,v 1.35 2003/01/23 00:37:12 robertc Exp $ * * DEBUG: section 70 Cache Digest * AUTHOR: Alex Rousskov diff --git a/src/Debug.h b/src/Debug.h index 58f385c3ee..1839d37bbc 100644 --- a/src/Debug.h +++ b/src/Debug.h @@ -1,6 +1,6 @@ /* - * $Id: Debug.h,v 1.1 2003/01/17 05:14:29 robertc Exp $ + * $Id: Debug.h,v 1.2 2003/01/23 00:37:12 robertc Exp $ * * DEBUG: section 0 Debug Routines * AUTHOR: Harvest Derived diff --git a/src/ETag.cc b/src/ETag.cc index 27d7d0db05..f802ec3260 100644 --- a/src/ETag.cc +++ b/src/ETag.cc @@ -1,6 +1,6 @@ /* - * $Id: ETag.cc,v 1.8 2001/01/12 00:37:13 wessels Exp $ + * $Id: ETag.cc,v 1.9 2003/01/23 00:37:12 robertc Exp $ * * DEBUG: none ETag parsing support * AUTHOR: Alex Rousskov diff --git a/src/Generic.h b/src/Generic.h index 19e9454d4c..fba0c374b4 100644 --- a/src/Generic.h +++ b/src/Generic.h @@ -1,6 +1,6 @@ /* - * $Id: Generic.h,v 1.2 2002/10/25 03:57:30 robertc Exp $ + * $Id: Generic.h,v 1.3 2003/01/23 00:37:12 robertc Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ diff --git a/src/HttpBody.cc b/src/HttpBody.cc index 21c75a08c2..be776c7746 100644 --- a/src/HttpBody.cc +++ b/src/HttpBody.cc @@ -1,6 +1,6 @@ /* - * $Id: HttpBody.cc,v 1.18 2001/01/12 00:37:13 wessels Exp $ + * $Id: HttpBody.cc,v 1.19 2003/01/23 00:37:12 robertc Exp $ * * DEBUG: section 56 HTTP Message Body * AUTHOR: Alex Rousskov diff --git a/src/HttpHdrCc.cc b/src/HttpHdrCc.cc index d4188056df..1ca31e13c9 100644 --- a/src/HttpHdrCc.cc +++ b/src/HttpHdrCc.cc @@ -1,6 +1,6 @@ /* - * $Id: HttpHdrCc.cc,v 1.23 2002/10/13 20:34:56 robertc Exp $ + * $Id: HttpHdrCc.cc,v 1.24 2003/01/23 00:37:12 robertc Exp $ * * DEBUG: section 65 HTTP Cache Control Header * AUTHOR: Alex Rousskov @@ -123,12 +123,12 @@ httpHdrCcParseInit(HttpHdrCc * cc, const String * str) type = (http_hdr_cc_type ) httpHeaderIdByName(item, ilen, CcFieldsInfo, CC_ENUM_END); if (type < 0) { - debug(65, 2) ("hdr cc: unknown cache-directive: near '%s' in '%s'\n", item, strBuf(*str)); + debug(65, 2) ("hdr cc: unknown cache-directive: near '%s' in '%s'\n", item, str->buf()); type = CC_OTHER; } if (EBIT_TEST(cc->mask, type)) { if (type != CC_OTHER) - debug(65, 2) ("hdr cc: ignoring duplicate cache-directive: near '%s' in '%s'\n", item, strBuf(*str)); + debug(65, 2) ("hdr cc: ignoring duplicate cache-directive: near '%s' in '%s'\n", item, str->buf()); CcFieldsInfo[type].stat.repCount++; continue; } @@ -194,7 +194,7 @@ httpHdrCcPackInto(const HttpHdrCc * cc, Packer * p) if (EBIT_TEST(cc->mask, flag) && flag != CC_OTHER) { /* print option name */ - packerPrintf(p, (pcount ? ", %s" : "%s"), strBuf(CcFieldsInfo[flag].name)); + packerPrintf(p, (pcount ? ", %s" : "%s"), CcFieldsInfo[flag].name.buf()); /* handle options with values */ if (flag == CC_MAX_AGE) @@ -264,7 +264,7 @@ httpHdrCcStatDumper(StoreEntry * sentry, int idx, double val, double size, int c extern const HttpHeaderStat *dump_stat; /* argh! */ const int id = (int) val; const int valid_id = id >= 0 && id < CC_ENUM_END; - const char *name = valid_id ? strBuf(CcFieldsInfo[id].name) : "INVALID"; + const char *name = valid_id ? CcFieldsInfo[id].name.buf() : "INVALID"; if (count || valid_id) storeAppendPrintf(sentry, "%2d\t %-20s\t %5d\t %6.2f\n", id, name, count, xdiv(count, dump_stat->ccParsedCount)); diff --git a/src/HttpHdrContRange.cc b/src/HttpHdrContRange.cc index 6752714c19..8e79e39c08 100644 --- a/src/HttpHdrContRange.cc +++ b/src/HttpHdrContRange.cc @@ -1,6 +1,6 @@ /* - * $Id: HttpHdrContRange.cc,v 1.15 2002/10/13 20:34:56 robertc Exp $ + * $Id: HttpHdrContRange.cc,v 1.16 2003/01/23 00:37:12 robertc Exp $ * * DEBUG: section 68 HTTP Content-Range Header * AUTHOR: Alex Rousskov @@ -34,6 +34,7 @@ */ #include "squid.h" +#include "HttpHdrContRange.h" /* * Currently only byte ranges are supported @@ -90,7 +91,7 @@ httpHdrRangeRespSpecParseInit(HttpHdrRangeSpec * spec, const char *field, int fl assert (spec->length >= 0); /* we managed to parse, check if the result makes sence */ - if (known_spec((size_t)spec->length) && spec->length != 0) { + if (known_spec((size_t)spec->length) && spec->length == 0) { debug(68, 2) ("invalid range (%ld += %ld) in resp-range-spec near: '%s'\n", (long int) spec->offset, (long int) spec->length, field); return 0; diff --git a/src/HttpHdrContRange.h b/src/HttpHdrContRange.h new file mode 100644 index 0000000000..af5bda361a --- /dev/null +++ b/src/HttpHdrContRange.h @@ -0,0 +1,57 @@ + +/* + * $Id: HttpHdrContRange.h,v 1.1 2003/01/23 00:37:12 robertc Exp $ + * + * + * 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. + * + */ + +#ifndef SQUID_HTTPHDRCONTRANGE_H +#define SQUID_HTTPHDRCONTRANGE_H + +#include "HttpHeaderRange.h" + +/* http content-range header field */ +class HttpHdrContRange { +public: + HttpHdrRangeSpec spec; + ssize_t elength; /* entity length, not content length */ +}; + +/* Http Content Range Header Field */ +SQUIDCEXTERN HttpHdrContRange *httpHdrContRangeCreate(void); +SQUIDCEXTERN HttpHdrContRange *httpHdrContRangeParseCreate(const char *crange_spec); +/* returns true if range is valid; inits HttpHdrContRange */ +SQUIDCEXTERN int httpHdrContRangeParseInit(HttpHdrContRange * crange, const char *crange_spec); +SQUIDCEXTERN void httpHdrContRangeDestroy(HttpHdrContRange * crange); +SQUIDCEXTERN HttpHdrContRange *httpHdrContRangeDup(const HttpHdrContRange * crange); +SQUIDCEXTERN void httpHdrContRangePackInto(const HttpHdrContRange * crange, Packer * p); +/* inits with given spec */ +SQUIDCEXTERN void httpHdrContRangeSet(HttpHdrContRange *, HttpHdrRangeSpec, ssize_t); +; +#endif /* SQUID_HTTPHDRCONTRANGE_H */ diff --git a/src/HttpHdrExtField.cc b/src/HttpHdrExtField.cc index 4af50f0837..6f74371346 100644 --- a/src/HttpHdrExtField.cc +++ b/src/HttpHdrExtField.cc @@ -1,6 +1,6 @@ /* - * $Id: HttpHdrExtField.cc,v 1.9 2001/01/12 00:37:13 wessels Exp $ + * $Id: HttpHdrExtField.cc,v 1.10 2003/01/23 00:37:12 robertc Exp $ * * DEBUG: section 69 HTTP Header: Extension Field * AUTHOR: Alex Rousskov @@ -85,8 +85,8 @@ void httpHdrExtFieldDestroy(HttpHdrExtField * f) { assert(f); - stringClean(&f->name); - stringClean(&f->value); + f->name.clean(); + f->value.clean(); xfree(f); } @@ -95,6 +95,6 @@ httpHdrExtFieldDup(HttpHdrExtField * f) { assert(f); return httpHdrExtFieldDoCreate( - strBuf(f->name), strLen(f->name), - strBuf(f->value), strLen(f->value)); + f->name.buf(), f->name.size(), + f->value.buf(), f->value.size()); } diff --git a/src/HttpHdrRange.cc b/src/HttpHdrRange.cc index 7abe5eecac..fc27bf74f0 100644 --- a/src/HttpHdrRange.cc +++ b/src/HttpHdrRange.cc @@ -1,6 +1,6 @@ /* - * $Id: HttpHdrRange.cc,v 1.29 2003/01/22 10:05:43 robertc Exp $ + * $Id: HttpHdrRange.cc,v 1.30 2003/01/23 00:37:12 robertc Exp $ * * DEBUG: section 64 HTTP Range Header * AUTHOR: Alex Rousskov @@ -35,6 +35,8 @@ #include "squid.h" #include "Store.h" +#include "HttpHeaderRange.h" +#include "client_side_request.h" /* * Currently only byte ranges are supported @@ -48,146 +50,157 @@ * * When Range field is parsed, we have no clue about the content * length of the document. Thus, we simply code an "absent" part - * using range_spec_unknown constant. + * using HttpHdrRangeSpec::UnknownPosition constant. * * Note: when response length becomes known, we convert any range * spec into type one above. (Canonization process). */ -/* local constants */ -#define range_spec_unknown ((ssize_t)-1) - /* local routines */ -#define known_spec(s) ((s) != range_spec_unknown) -#define size_min(a,b) ((a) <= (b) ? (a) : (b)) -#define size_diff(a,b) ((a) >= (b) ? ((a)-(b)) : 0) -static HttpHdrRangeSpec *httpHdrRangeSpecDup(const HttpHdrRangeSpec * spec); -static int httpHdrRangeSpecCanonize(HttpHdrRangeSpec * spec, size_t clen); -static void httpHdrRangeSpecPackInto(const HttpHdrRangeSpec * spec, Packer * p); +#define known_spec(s) ((s) > HttpHdrRangeSpec::UnknownPosition) /* globals */ -static int RangeParsedCount = 0; +size_t HttpHdrRange::ParsedCount = 0; +ssize_t const HttpHdrRangeSpec::UnknownPosition = -1; /* * Range-Spec */ -static HttpHdrRangeSpec * -httpHdrRangeSpecCreate(void) +MemPool *HttpHdrRangeSpec::Pool = NULL; + +void * +HttpHdrRangeSpec::operator new(size_t size) +{ + assert (size == sizeof (HttpHdrRangeSpec)); + if (!Pool) + Pool = memPoolCreate ("HttpHdrRangeSpec", sizeof (HttpHdrRangeSpec)); + return memPoolAlloc(Pool); +} + +void +HttpHdrRangeSpec::operator delete (void *spec) { - return (HttpHdrRangeSpec *)memAllocate(MEM_HTTP_HDR_RANGE_SPEC); + memPoolFree(Pool, spec); } +void +HttpHdrRangeSpec::deleteSelf() const +{ + delete this; +} + +HttpHdrRangeSpec::HttpHdrRangeSpec() : offset(UnknownPosition), length(UnknownPosition){} + /* parses range-spec and returns new object on success */ -static HttpHdrRangeSpec * -httpHdrRangeSpecParseCreate(const char *field, int flen) +HttpHdrRangeSpec * +HttpHdrRangeSpec::Create(const char *field, int flen) +{ + HttpHdrRangeSpec spec; + if (!spec.parseInit(field, flen)) + return NULL; + return new HttpHdrRangeSpec(spec); +} + +bool +HttpHdrRangeSpec::parseInit(const char *field, int flen) { - HttpHdrRangeSpec spec = - {range_spec_unknown, range_spec_unknown}; const char *p; if (flen < 2) - return NULL; + return false; /* is it a suffix-byte-range-spec ? */ if (*field == '-') { - if (!httpHeaderParseSize(field + 1, &spec.length)) - return NULL; + if (!httpHeaderParseSize(field + 1, &length)) + return false; } else /* must have a '-' somewhere in _this_ field */ if (!((p = strchr(field, '-')) || (p - field >= flen))) { debug(64, 2) ("ignoring invalid (missing '-') range-spec near: '%s'\n", field); - return NULL; + return false; } else { - if (!httpHeaderParseSize(field, &spec.offset)) - return NULL; + if (!httpHeaderParseSize(field, &offset)) + return false; p++; /* do we have last-pos ? */ if (p - field < flen) { ssize_t last_pos; if (!httpHeaderParseSize(p, &last_pos)) - return NULL; - spec.length = size_diff(last_pos + 1, spec.offset); + return false; + HttpHdrRangeSpec::HttpRange aSpec (offset, last_pos + 1); + length = aSpec.size(); } } /* we managed to parse, check if the result makes sence */ - if (known_spec(spec.length) && !spec.length) { + if (length == 0) { debug(64, 2) ("ignoring invalid (zero length) range-spec near: '%s'\n", field); - return NULL; + return false; } - return httpHdrRangeSpecDup(&spec); -} - -static void -httpHdrRangeSpecDestroy(HttpHdrRangeSpec * spec) -{ - memFree(spec, MEM_HTTP_HDR_RANGE_SPEC); + return true; } - -static HttpHdrRangeSpec * -httpHdrRangeSpecDup(const HttpHdrRangeSpec * spec) +void +HttpHdrRangeSpec::packInto(Packer * packer) const { - HttpHdrRangeSpec *dup = httpHdrRangeSpecCreate(); - dup->offset = spec->offset; - dup->length = spec->length; - return dup; + if (!known_spec(offset)) /* suffix */ + packerPrintf(packer, "-%ld", (long int) length); + else if (!known_spec(length)) /* trailer */ + packerPrintf(packer, "%ld-", (long int) offset); + else /* range */ + packerPrintf(packer, "%ld-%ld", + (long int) offset, (long int) offset + length - 1); } -static void -httpHdrRangeSpecPackInto(const HttpHdrRangeSpec * spec, Packer * p) +void +HttpHdrRangeSpec::outputInfo( char const *note) const { - if (!known_spec(spec->offset)) /* suffix */ - packerPrintf(p, "-%ld", (long int) spec->length); - else if (!known_spec(spec->length)) /* trailer */ - packerPrintf(p, "%ld-", (long int) spec->offset); - else /* range */ - packerPrintf(p, "%ld-%ld", - (long int) spec->offset, (long int) spec->offset + spec->length - 1); + debug(64, 5) ("HttpHdrRangeSpec::canonize: %s: [%ld, %ld) len: %ld\n", + note, (long int) offset, (long int) offset + length, (long int) length); } /* fills "absent" positions in range specification based on response body size * returns true if the range is still valid * range is valid if its intersection with [0,length-1] is not empty */ -static int -httpHdrRangeSpecCanonize(HttpHdrRangeSpec * spec, size_t clen) -{ - debug(64, 5) ("httpHdrRangeSpecCanonize: have: [%ld, %ld) len: %ld\n", - (long int) spec->offset, (long int) spec->offset + spec->length, (long int) spec->length); - /* ensure the type casts are safe */ - assert (spec->length >= 0); - assert (spec->offset >= 0); - if (!known_spec(spec->offset)) /* suffix */ - spec->offset = size_diff(clen, (size_t)spec->length); - else if (!known_spec(spec->length)) /* trailer */ - spec->length = size_diff(clen, (size_t)spec->offset); +int +HttpHdrRangeSpec::canonize(size_t clen) +{ + outputInfo ("have"); + HttpRange object(0, clen); + if (!known_spec(offset)) /* suffix */ { + assert(known_spec(length)); + offset = object.intersection(HttpRange (clen - length, clen)).start; + } else if (!known_spec(length)) /* trailer */ { + assert(known_spec(offset)); + HttpRange newRange = object.intersection(HttpRange (offset, clen)); + length = newRange.size(); + } /* we have a "range" now, adjust length if needed */ - assert(known_spec(spec->length)); - assert(known_spec(spec->offset)); - spec->length = size_min(size_diff(clen, (size_t)spec->offset), (size_t)spec->length); - /* check range validity */ - debug(64, 5) ("httpHdrRangeSpecCanonize: done: [%ld, %ld) len: %ld\n", - (long int) spec->offset, (long int) spec->offset + (long int) spec->length, (long int) spec->length); - return spec->length > 0; + assert(known_spec(length)); + assert(known_spec(offset)); + HttpRange newRange = object.intersection (HttpRange (offset, offset + length)); + length = newRange.size(); + outputInfo ("done"); + return length > 0; } /* merges recepient with donor if possible; returns true on success * both specs must be canonized prior to merger, of course */ -static int -httpHdrRangeSpecMergeWith(HttpHdrRangeSpec * recep, const HttpHdrRangeSpec * donor) +bool +HttpHdrRangeSpec::mergeWith(const HttpHdrRangeSpec * donor) { - int merged = 0; + bool merged (false); #if MERGING_BREAKS_NOTHING /* Note: this code works, but some clients may not like its effects */ - size_t rhs = recep->offset + recep->length; /* no -1 ! */ + size_t rhs = offset + length; /* no -1 ! */ const size_t donor_rhs = donor->offset + donor->length; /* no -1 ! */ - assert(known_spec(recep->offset)); + assert(known_spec(offset)); assert(known_spec(donor->offset)); - assert(recep->length > 0); + assert(length > 0); assert(donor->length > 0); /* do we have a left hand side overlap? */ - if (donor->offset < recep->offset && recep->offset <= donor_rhs) { - recep->offset = donor->offset; /* decrease left offset */ + if (donor->offset < offset && offset <= donor_rhs) { + offset = donor->offset; /* decrease left offset */ merged = 1; } /* do we have a right hand side overlap? */ @@ -197,12 +210,12 @@ httpHdrRangeSpecMergeWith(HttpHdrRangeSpec * recep, const HttpHdrRangeSpec * don } /* adjust length if offsets have been changed */ if (merged) { - assert(rhs > recep->offset); - recep->length = rhs - recep->offset; + assert(rhs > offset); + length = rhs - offset; } else { /* does recepient contain donor? */ merged = - recep->offset <= donor->offset && donor->offset < rhs; + offset <= donor->offset && donor->offset < rhs; } #endif return merged; @@ -212,93 +225,165 @@ httpHdrRangeSpecMergeWith(HttpHdrRangeSpec * recep, const HttpHdrRangeSpec * don * Range */ -static HttpHdrRange * -httpHdrRangeCreate(void) +MemPool *HttpHdrRange::Pool = NULL; + +void * +HttpHdrRange::operator new(size_t size) +{ + assert (size == sizeof (HttpHdrRange)); + if (!Pool) + Pool = memPoolCreate ("HttpHdrRange", sizeof (HttpHdrRange)); + return memPoolAlloc(Pool); +} + +void +HttpHdrRange::operator delete (void *address) +{ + memPoolFree(Pool, address); +} + +void +HttpHdrRange::deleteSelf() const +{ + delete this; +} + +HttpHdrRange::HttpHdrRange () : clen (HttpHdrRangeSpec::UnknownPosition) { - HttpHdrRange *r = (HttpHdrRange *)memAllocate(MEM_HTTP_HDR_RANGE); - stackInit(&r->specs); - return r; } HttpHdrRange * -httpHdrRangeParseCreate(const String * str) +HttpHdrRange::ParseCreate(const String * range_spec) { - HttpHdrRange *r = httpHdrRangeCreate(); - if (!httpHdrRangeParseInit(r, str)) { - httpHdrRangeDestroy(r); + HttpHdrRange *r = new HttpHdrRange; + if (!r->parseInit(range_spec)) { + r->deleteSelf(); r = NULL; } return r; } /* returns true if ranges are valid; inits HttpHdrRange */ -int -httpHdrRangeParseInit(HttpHdrRange * range, const String * str) +bool +HttpHdrRange::parseInit(const String * range_spec) { const char *item; const char *pos = NULL; int ilen; int count = 0; - assert(range && str); - RangeParsedCount++; - debug(64, 8) ("parsing range field: '%s'\n", strBuf(*str)); + assert(this && range_spec); + ++ParsedCount; + debug(64, 8) ("parsing range field: '%s'\n", range_spec->buf()); /* check range type */ - if (strNCaseCmp(*str, "bytes=", 6)) + if (range_spec->nCaseCmp("bytes=", 6)) return 0; /* skip "bytes="; hack! */ - pos = strBuf(*str) + 5; + pos = range_spec->buf() + 5; /* iterate through comma separated list */ - while (strListGetItem(str, ',', &item, &ilen, &pos)) { - HttpHdrRangeSpec *spec = httpHdrRangeSpecParseCreate(item, ilen); + while (strListGetItem(range_spec, ',', &item, &ilen, &pos)) { + HttpHdrRangeSpec *spec = HttpHdrRangeSpec::Create(item, ilen); /* * HTTP/1.1 draft says we must ignore the whole header field if one spec * is invalid. However, RFC 2068 just says that we must ignore that spec. */ if (spec) - stackPush(&range->specs, spec); - count++; + specs.push_back(spec); + ++count; } - debug(64, 8) ("parsed range range count: %d\n", range->specs.count); - return range->specs.count; + debug(64, 8) ("parsed range range count: %d, kept %d\n", count, specs.size()); + return specs.count != 0; +} + +HttpHdrRange::~HttpHdrRange() +{ + while (specs.size()) + specs.pop_back()->deleteSelf(); +} + +HttpHdrRange::HttpHdrRange(HttpHdrRange const &old) : specs() +{ + specs.reserve(old.specs.size()); + for (const_iterator i = old.begin(); i != old.end(); ++i) + specs.push_back(new HttpHdrRangeSpec ( **i)); + assert(old.specs.size() == specs.size()); +} + +HttpHdrRange::iterator +HttpHdrRange::begin() +{ + return specs.begin(); +} + +HttpHdrRange::iterator +HttpHdrRange::end() +{ + return specs.end(); +} + +HttpHdrRange::const_iterator +HttpHdrRange::begin() const +{ + return specs.begin(); +} + +HttpHdrRange::const_iterator +HttpHdrRange::end() const +{ + return specs.end(); } void -httpHdrRangeDestroy(HttpHdrRange * range) +HttpHdrRange::packInto(Packer * packer) const { - assert(range); - while (range->specs.count) - httpHdrRangeSpecDestroy((HttpHdrRangeSpec *)stackPop(&range->specs)); - stackClean(&range->specs); - memFree(range, MEM_HTTP_HDR_RANGE); + const_iterator pos = begin(); + assert(this); + while (pos != end()) { + if (pos != begin()) + packerAppend(packer, ",", 1); + (*pos)->packInto(packer); + ++pos; + } } -HttpHdrRange * -httpHdrRangeDup(const HttpHdrRange * range) +void +HttpHdrRange::merge (Vector &basis) { - HttpHdrRange *dup; - size_t i; - assert(range); - dup = httpHdrRangeCreate(); - stackPrePush(&dup->specs, range->specs.count); - for (i = 0; i < range->specs.count; i++) - stackPush(&dup->specs, httpHdrRangeSpecDup((HttpHdrRangeSpec *)range->specs.items[i])); - assert(range->specs.count == dup->specs.count); - return dup; + /* reset old array */ + specs.clean(); + /* merge specs: + * take one spec from "goods" and merge it with specs from + * "specs" (if any) until there is no overlap */ + iterator i = basis.begin(); + while (i != basis.end()) { + if (specs.size() && (*i)->mergeWith(specs.back())) { + /* merged with current so get rid of the prev one */ + specs.pop_back()->deleteSelf(); + continue; /* re-iterate */ + } + specs.push_back (*i); + ++i; /* progress */ + } + debug(64, 3) ("HttpHdrRange::merge: had %d specs, merged %d specs\n", + basis.size(), basis.size() - specs.size()); } + void -httpHdrRangePackInto(const HttpHdrRange * range, Packer * p) -{ - HttpHdrRangePos pos = HttpHdrRangeInitPos; - const HttpHdrRangeSpec *spec; - assert(range); - while ((spec = httpHdrRangeGetSpec(range, &pos))) { - if (pos != HttpHdrRangeInitPos) - packerAppend(p, ",", 1); - httpHdrRangeSpecPackInto(spec, p); +HttpHdrRange::getCanonizedSpecs (Vector ©) +{ + /* canonize each entry and destroy bad ones if any */ + for (iterator pos (begin()); pos != end(); ++pos) { + if ((*pos)->canonize(clen)) + copy.push_back (*pos); + else + (*pos)->deleteSelf(); } + debug(64, 3) ("HttpHdrRange::getCanonizedSpecs: found %d bad specs\n", + specs.size() - copy.size()); } +#include "HttpHdrContRange.h" + /* * canonizes all range specs within a set preserving the order * returns true if the set is valid after canonization; @@ -307,132 +392,89 @@ httpHdrRangePackInto(const HttpHdrRange * range, Packer * p) * - there is at least one range spec */ int -httpHdrRangeCanonize(HttpHdrRange * range, ssize_t clen) +HttpHdrRange::canonize(HttpReply *rep) { - size_t i; - HttpHdrRangeSpec *spec; - HttpHdrRangePos pos = HttpHdrRangeInitPos; - Stack goods; - assert(range); - assert(clen >= 0); - stackInit(&goods); - debug(64, 3) ("httpHdrRangeCanonize: started with %d specs, clen: %ld\n", range->specs.count, (long int) clen); - - /* canonize each entry and destroy bad ones if any */ - while ((spec = httpHdrRangeGetSpec(range, &pos))) { - if (httpHdrRangeSpecCanonize(spec, clen)) - stackPush(&goods, spec); - else - httpHdrRangeSpecDestroy(spec); - } - debug(64, 3) ("httpHdrRangeCanonize: found %d bad specs\n", - range->specs.count - goods.count); - /* reset old array */ - stackClean(&range->specs); - stackInit(&range->specs); - spec = NULL; - /* merge specs: - * take one spec from "goods" and merge it with specs from - * "range->specs" (if any) until there is no overlap */ - for (i = 0; i < goods.count;) { - HttpHdrRangeSpec *prev_spec = (HttpHdrRangeSpec *)stackTop(&range->specs); - spec = (HttpHdrRangeSpec *)goods.items[i]; - if (prev_spec) { - if (httpHdrRangeSpecMergeWith(spec, prev_spec)) { - /* merged with current so get rid of the prev one */ - assert(prev_spec == stackPop(&range->specs)); - httpHdrRangeSpecDestroy(prev_spec); - continue; /* re-iterate */ - } - } - stackPush(&range->specs, spec); - spec = NULL; - i++; /* progress */ - } - if (spec) /* last "merge" may not be pushed yet */ - stackPush(&range->specs, spec); - debug(64, 3) ("httpHdrRangeCanonize: had %d specs, merged %d specs\n", - goods.count, goods.count - range->specs.count); - debug(64, 3) ("httpHdrRangeCanonize: finished with %d specs\n", - range->specs.count); - stackClean(&goods); - return range->specs.count > 0; + assert(this && rep); + if (rep->content_range) + clen = rep->content_range->elength; + else + clen = rep->content_length; + return canonize (clen); } -/* searches for next range, returns true if found */ -HttpHdrRangeSpec * -httpHdrRangeGetSpec(const HttpHdrRange * range, HttpHdrRangePos * pos) +int +HttpHdrRange::canonize (size_t newClen) { - assert(range); - assert(pos && *pos >= -1 && *pos < (ssize_t)range->specs.count); - (*pos)++; - if (*pos < (ssize_t)range->specs.count) - return (HttpHdrRangeSpec *) range->specs.items[*pos]; - else - return NULL; + clen = newClen; + debug(64, 3) ("HttpHdrRange::canonize: started with %d specs, clen: %ld\n", specs.count, (long int) clen); + Vector goods; + getCanonizedSpecs(goods); + merge (goods); + debug(64, 3) ("HttpHdrRange::canonize: finished with %d specs\n", + specs.count); + return specs.count > 0; } /* hack: returns true if range specs are too "complex" for Squid to handle */ /* requires that specs are "canonized" first! */ -int -httpHdrRangeIsComplex(const HttpHdrRange * range) +bool +HttpHdrRange::isComplex() const { - HttpHdrRangePos pos = HttpHdrRangeInitPos; - const HttpHdrRangeSpec *spec; size_t offset = 0; - assert(range); + assert(this); /* check that all rangers are in "strong" order */ - while ((spec = httpHdrRangeGetSpec(range, &pos))) { + const_iterator pos (begin()); + while (pos != end()) { /* Ensure typecasts is safe */ - assert (spec->offset >= 0); - if ((unsigned int)spec->offset < offset) + assert ((*pos)->offset >= 0); + if ((unsigned int)(*pos)->offset < offset) return 1; - offset = spec->offset + spec->length; + offset = (*pos)->offset + (*pos)->length; + ++pos; } return 0; } /* * hack: returns true if range specs may be too "complex" when "canonized". - * see also: httpHdrRangeIsComplex. + * see also: HttpHdrRange::isComplex. */ -int -httpHdrRangeWillBeComplex(const HttpHdrRange * range) +bool +HttpHdrRange::willBeComplex() const { - HttpHdrRangePos pos = HttpHdrRangeInitPos; - const HttpHdrRangeSpec *spec; - size_t offset = 0; - assert(range); + assert(this); /* check that all rangers are in "strong" order, */ /* as far as we can tell without the content length */ - while ((spec = httpHdrRangeGetSpec(range, &pos))) { - if (!known_spec(spec->offset)) /* ignore unknowns */ + size_t offset = 0; + for (const_iterator pos (begin()); pos != end(); ++pos) { + if (!known_spec((*pos)->offset)) /* ignore unknowns */ continue; /* Ensure typecasts is safe */ - assert (spec->offset >= 0); - if ((size_t) spec->offset < offset) - return 1; - offset = spec->offset; - if (known_spec(spec->length)) /* avoid unknowns */ - offset += spec->length; + assert ((*pos)->offset >= 0); + if ((size_t) (*pos)->offset < offset) + return true; + offset = (*pos)->offset; + if (known_spec((*pos)->length)) /* avoid unknowns */ + offset += (*pos)->length; } - return 0; + return false; } /* - * Returns lowest known offset in range spec(s), or range_spec_unknown + * Returns lowest known offset in range spec(s), + * or HttpHdrRangeSpec::UnknownPosition * this is used for size limiting */ ssize_t -httpHdrRangeFirstOffset(const HttpHdrRange * range) -{ - ssize_t offset = range_spec_unknown; - HttpHdrRangePos pos = HttpHdrRangeInitPos; - const HttpHdrRangeSpec *spec; - assert(range); - while ((spec = httpHdrRangeGetSpec(range, &pos))) { - if (spec->offset < offset || !known_spec(offset)) - offset = spec->offset; +HttpHdrRange::firstOffset() const +{ + ssize_t offset = HttpHdrRangeSpec::UnknownPosition; + assert(this); + const_iterator pos = begin(); + while (pos != end()) { + if ((*pos)->offset < offset || !known_spec(offset)) + offset = (*pos)->offset; + ++pos; } return offset; } @@ -444,56 +486,72 @@ httpHdrRangeFirstOffset(const HttpHdrRange * range) * Use 0 for size if unknown */ ssize_t -httpHdrRangeLowestOffset(const HttpHdrRange * range, ssize_t size) -{ - ssize_t offset = range_spec_unknown; - ssize_t current; - HttpHdrRangePos pos = HttpHdrRangeInitPos; - const HttpHdrRangeSpec *spec; - assert(range); - while ((spec = httpHdrRangeGetSpec(range, &pos))) { - current = spec->offset; +HttpHdrRange::lowestOffset(ssize_t size) const +{ + ssize_t offset = HttpHdrRangeSpec::UnknownPosition; + const_iterator pos = begin(); + assert(this); + while (pos != end()) { + ssize_t current = (*pos)->offset; if (!known_spec(current)) { - if (spec->length > size || !known_spec(spec->length)) + if ((*pos)->length > size || !known_spec((*pos)->length)) return 0; /* Unknown. Assume start of file */ - current = size - spec->length; + current = size - (*pos)->length; } if (current < offset || !known_spec(offset)) offset = current; + ++pos; } return known_spec(offset) ? offset : 0; } -/* generates a "unique" boundary string for multipart responses - * the caller is responsible for cleaning the string */ -String -httpHdrRangeBoundaryStr(clientHttpRequest * http) -{ - const char *key; - String b = StringNull; - assert(http); - stringAppend(&b, full_appname_string, strlen(full_appname_string)); - stringAppend(&b, ":", 1); - key = http->entry->getMD5Text(); - stringAppend(&b, key, strlen(key)); - return b; -} - /* * Return true if the first range offset is larger than the configured * limit. */ -int -httpHdrRangeOffsetLimit(HttpHdrRange * range) +bool +HttpHdrRange::offsetLimitExceeded() const { - if (NULL == range) + if (NULL == this) /* not a range request */ - return 0; + return false; if (-1 == (ssize_t)Config.rangeOffsetLimit) /* disabled */ - return 0; - if ((ssize_t)Config.rangeOffsetLimit >= httpHdrRangeFirstOffset(range)) + return false; + if ((ssize_t)Config.rangeOffsetLimit >= firstOffset()) /* below the limit */ - return 0; - return 1; + return false; + return true; +} + +const HttpHdrRangeSpec * +HttpHdrRangeIter::currentSpec() const +{ + if (pos.incrementable()) + return *pos; + return NULL; +} + +void +HttpHdrRangeIter::updateSpec() +{ + assert (debt_size == 0); + if (pos.incrementable()) { + debt(currentSpec()->length); + } +} + +ssize_t +HttpHdrRangeIter::debt() const +{ + debug(64, 3) ("HttpHdrRangeIter::debt: debt is %d\n", + (int)debt_size); + return debt_size; +} + +void HttpHdrRangeIter::debt(ssize_t newDebt) +{ + debug(64, 3) ("HttpHdrRangeIter::debt: was %d now %d\n", + (int)debt_size, (int)newDebt); + debt_size = newDebt; } diff --git a/src/HttpHeader.cc b/src/HttpHeader.cc index 3f4f937f7e..8d2ce64824 100644 --- a/src/HttpHeader.cc +++ b/src/HttpHeader.cc @@ -1,6 +1,6 @@ /* - * $Id: HttpHeader.cc,v 1.83 2003/01/22 10:05:43 robertc Exp $ + * $Id: HttpHeader.cc,v 1.84 2003/01/23 00:37:12 robertc Exp $ * * DEBUG: section 55 HTTP Header * AUTHOR: Alex Rousskov @@ -36,6 +36,7 @@ #include "squid.h" #include "Store.h" #include "HttpHeader.h" +#include "HttpHdrContRange.h" /* * On naming conventions: @@ -381,7 +382,7 @@ httpHeaderUpdate(HttpHeader * old, const HttpHeader * fresh, const HttpHeaderMas /* deny bad guys (ok to check for HDR_OTHER) here */ if (denied_mask && CBIT_TEST(*denied_mask, e->id)) continue; - httpHeaderDelByName(old, strBuf(e->name)); + httpHeaderDelByName(old, e->name.buf()); httpHeaderAddEntry(old, httpHeaderEntryClone(e)); } } @@ -574,7 +575,7 @@ httpHeaderDelAt(HttpHeader * hdr, HttpHeaderPos pos) e = (HttpHeaderEntry*)hdr->entries.items[pos]; hdr->entries.items[pos] = NULL; /* decrement header length, allow for ": " and crlf */ - hdr->len -= strLen(e->name) + 2 + strLen(e->value) + 2; + hdr->len -= e->name.size() + 2 + e->value.size() + 2; assert(hdr->len >= 0); httpHeaderEntryDestroy(e); } @@ -597,7 +598,7 @@ httpHeaderAddEntry(HttpHeader * hdr, HttpHeaderEntry * e) CBIT_SET(hdr->mask, e->id); arrayAppend(&hdr->entries, e); /* increment header length, allow for ": " and crlf */ - hdr->len += strLen(e->name) + 2 + strLen(e->value) + 2; + hdr->len += e->name.size() + 2 + e->value.size() + 2; } /* return a list of entries with the same id separated by ',' and ws */ @@ -614,17 +615,17 @@ httpHeaderGetList(const HttpHeader * hdr, http_hdr_type id) return s; while ((e = httpHeaderGetEntry(hdr, &pos))) { if (e->id == id) - strListAdd(&s, strBuf(e->value), ','); + strListAdd(&s, e->value.buf(), ','); } /* * note: we might get an empty (len==0) string if there was an "empty" * header; we must not get a NULL string though. */ - assert(strBuf(s)); + assert(s.buf()); /* temporary warning: remove it! @?@ @?@ @?@ */ - if (!strLen(s)) - debug(55, 3) ("empty list header: %s (%d)\n", strBuf(Headers[id].name), id); - debug(55, 6) ("%p: joined for id %d: %s\n", hdr, id, strBuf(s)); + if (!s.size()) + debug(55, 3) ("empty list header: %s (%d)\n", Headers[id].name.buf(), id); + debug(55, 6) ("%p: joined for id %d: %s\n", hdr, id, s.buf()); return s; } @@ -636,12 +637,9 @@ httpHeaderGetStrOrList(const HttpHeader * hdr, http_hdr_type id) if (CBIT_TEST(ListHeadersMask, id)) return httpHeaderGetList(hdr, id); - if ((e = httpHeaderFindEntry(hdr, id))) { - String s; - stringInit(&s, strBuf(e->value)); - return s; - } - return StringNull; + if ((e = httpHeaderFindEntry(hdr, id))) + return e->value; + return String::Null; } /* @@ -666,7 +664,7 @@ httpHeaderGetByName(const HttpHeader * hdr, const char *name) /* Sorry, an unknown header name. Do linear search */ while ((e = httpHeaderGetEntry(hdr, &pos))) { if (e->id == HDR_OTHER && strCaseCmp(e->name, name) == 0) { - strListAdd(&result, strBuf(e->value), ','); + strListAdd(&result, e->value.buf(), ','); } } return result; @@ -692,7 +690,7 @@ httpHeaderGetByNameListMember(const HttpHeader * hdr, const char *name, const ch while (strListGetItem(&header, separator, &item, &ilen, &pos)) { if (strncmp(item, member, mlen) == 0 && item[mlen] == '=') { - stringAppend(&result, item + mlen + 1, ilen - mlen - 1); + result.append(item + mlen + 1, ilen - mlen - 1); break; } } @@ -719,11 +717,11 @@ httpHeaderGetListMember(const HttpHeader * hdr, http_hdr_type id, const char *me while (strListGetItem(&header, separator, &item, &ilen, &pos)) { if (strncmp(item, member, mlen) == 0 && item[mlen] == '=') { - stringAppend(&result, item + mlen + 1, ilen - mlen - 1); + result.append(item + mlen + 1, ilen - mlen - 1); break; } } - stringClean(&header); + header.clean(); return result; } @@ -821,7 +819,7 @@ httpHeaderPutRange(HttpHeader * hdr, const HttpHdrRange * range) /* pack into mb */ memBufDefInit(&mb); packerToMemInit(&p, &mb); - httpHdrRangePackInto(range, &p); + range->packInto(&p); /* put */ httpHeaderAddEntry(hdr, httpHeaderEntryCreate(HDR_RANGE, NULL, mb.buf)); /* cleanup */ @@ -839,18 +837,30 @@ httpHeaderPutExt(HttpHeader * hdr, const char *name, const char *value) } int -httpHeaderGetInt(const HttpHeader * hdr, http_hdr_type id) +httpHeaderEntryGetInt (const HttpHeaderEntry * e) { - HttpHeaderEntry *e; int value = -1; int ok; + assert (e); + assert_eid (e->id); + assert (Headers[e->id].type == ftInt); + ok = httpHeaderParseInt(e->value.buf(), &value); + httpHeaderNoteParsedEntry(e->id, e->value, !ok); + /* XXX: Should we check ok - ie + * return ok ? -1 : value; + */ + return value; +} + +int +httpHeaderGetInt(const HttpHeader * hdr, http_hdr_type id) +{ assert_eid(id); assert(Headers[id].type == ftInt); /* must be of an appropriate type */ - if ((e = httpHeaderFindEntry(hdr, id))) { - ok = httpHeaderParseInt(strBuf(e->value), &value); - httpHeaderNoteParsedEntry(e->id, e->value, !ok); - } - return value; + HttpHeaderEntry *e; + if ((e = httpHeaderFindEntry(hdr, id))) + return httpHeaderEntryGetInt (e); + return -1; } time_t @@ -861,7 +871,7 @@ httpHeaderGetTime(const HttpHeader * hdr, http_hdr_type id) assert_eid(id); assert(Headers[id].type == ftDate_1123); /* must be of an appropriate type */ if ((e = httpHeaderFindEntry(hdr, id))) { - value = parse_rfc1123(strBuf(e->value)); + value = parse_rfc1123(e->value.buf()); httpHeaderNoteParsedEntry(e->id, e->value, value < 0); } return value; @@ -876,7 +886,7 @@ httpHeaderGetStr(const HttpHeader * hdr, http_hdr_type id) assert(Headers[id].type == ftStr); /* must be of an appropriate type */ if ((e = httpHeaderFindEntry(hdr, id))) { httpHeaderNoteParsedEntry(e->id, e->value, 0); /* no errors are possible */ - return strBuf(e->value); + return e->value.buf(); } return NULL; } @@ -890,7 +900,7 @@ httpHeaderGetLastStr(const HttpHeader * hdr, http_hdr_type id) assert(Headers[id].type == ftStr); /* must be of an appropriate type */ if ((e = httpHeaderFindLastEntry(hdr, id))) { httpHeaderNoteParsedEntry(e->id, e->value, 0); /* no errors are possible */ - return strBuf(e->value); + return e->value.buf(); } return NULL; } @@ -908,7 +918,7 @@ httpHeaderGetCc(const HttpHeader * hdr) if (cc) httpHdrCcUpdateStats(cc, &HttpHeaderStats[hdr->owner].ccTypeDistr); httpHeaderNoteParsedEntry(HDR_CACHE_CONTROL, s, !cc); - stringClean(&s); + s.clean(); return cc; } @@ -923,7 +933,7 @@ httpHeaderGetRange(const HttpHeader * hdr) * hopefully no clients send mismatched headers! */ if ((e = httpHeaderFindEntry(hdr, HDR_RANGE)) || (e = httpHeaderFindEntry(hdr, HDR_REQUEST_RANGE))) { - r = httpHdrRangeParseCreate(&e->value); + r = HttpHdrRange::ParseCreate(&e->value); httpHeaderNoteParsedEntry(e->id, e->value, !r); } return r; @@ -935,7 +945,7 @@ httpHeaderGetContRange(const HttpHeader * hdr) HttpHdrContRange *cr = NULL; HttpHeaderEntry *e; if ((e = httpHeaderFindEntry(hdr, HDR_CONTENT_RANGE))) { - cr = httpHdrContRangeParseCreate(strBuf(e->value)); + cr = httpHdrContRangeParseCreate(e->value.buf()); httpHeaderNoteParsedEntry(e->id, e->value, !cr); } return cr; @@ -971,7 +981,7 @@ httpHeaderGetETag(const HttpHeader * hdr, http_hdr_type id) HttpHeaderEntry *e; assert(Headers[id].type == ftETag); /* must be of an appropriate type */ if ((e = httpHeaderFindEntry(hdr, id))) - etagParseInit(&etag, strBuf(e->value)); + etagParseInit(&etag, e->value.buf()); return etag; } @@ -983,7 +993,7 @@ httpHeaderGetTimeOrTag(const HttpHeader * hdr, http_hdr_type id) assert(Headers[id].type == ftDate_1123_or_ETag); /* must be of an appropriate type */ memset(&tot, 0, sizeof(tot)); if ((e = httpHeaderFindEntry(hdr, id))) { - const char *str = strBuf(e->value); + const char *str = e->value.buf(); /* try as an ETag */ if (etagParseInit(&tot.tag, str)) { tot.valid = tot.tag.str != NULL; @@ -1013,10 +1023,10 @@ httpHeaderEntryCreate(http_hdr_type id, const char *name, const char *value) if (id != HDR_OTHER) e->name = Headers[id].name; else - stringInit(&e->name, name); - stringInit(&e->value, value); + e->name = name; + e->value = value; Headers[id].stat.aliveCount++; - debug(55, 9) ("created entry %p: '%s: %s'\n", e, strBuf(e->name), strBuf(e->value)); + debug(55, 9) ("created entry %p: '%s: %s'\n", e, e->name.buf(), e->value.buf()); return e; } @@ -1025,11 +1035,11 @@ httpHeaderEntryDestroy(HttpHeaderEntry * e) { assert(e); assert_eid(e->id); - debug(55, 9) ("destroying entry %p: '%s: %s'\n", e, strBuf(e->name), strBuf(e->value)); + debug(55, 9) ("destroying entry %p: '%s: %s'\n", e, e->name.buf(), e->value.buf()); /* clean name if needed */ if (e->id == HDR_OTHER) - stringClean(&e->name); - stringClean(&e->value); + e->name.clean(); + e->value.clean(); assert(Headers[e->id].stat.aliveCount); Headers[e->id].stat.aliveCount--; e->id = HDR_BAD_HDR; @@ -1069,7 +1079,7 @@ httpHeaderEntryParseCreate(const char *field_start, const char *field_end) e->id = id; /* set field name */ if (id == HDR_OTHER) - stringLimitInit(&e->name, field_start, name_len); + e->name.limitInit(field_start, name_len); else e->name = Headers[id].name; /* trim field value */ @@ -1078,33 +1088,33 @@ httpHeaderEntryParseCreate(const char *field_start, const char *field_end) if (field_end - value_start > 65536) { /* String has a 64K limit */ debug(55, 1) ("WARNING: ignoring '%s' header of %d bytes\n", - strBuf(e->name), (int) (field_end - value_start)); + e->name.buf(), (int) (field_end - value_start)); if (e->id == HDR_OTHER) - stringClean(&e->name); + e->name.clean(); memFree(e, MEM_HTTP_HDR_ENTRY); return NULL; } /* set field value */ - stringLimitInit(&e->value, value_start, field_end - value_start); + e->value.limitInit(value_start, field_end - value_start); Headers[id].stat.seenCount++; Headers[id].stat.aliveCount++; - debug(55, 9) ("created entry %p: '%s: %s'\n", e, strBuf(e->name), strBuf(e->value)); + debug(55, 9) ("created entry %p: '%s: %s'\n", e, e->name.buf(), e->value.buf()); return e; } HttpHeaderEntry * httpHeaderEntryClone(const HttpHeaderEntry * e) { - return httpHeaderEntryCreate(e->id, strBuf(e->name), strBuf(e->value)); + return httpHeaderEntryCreate(e->id, e->name.buf(), e->value.buf()); } void httpHeaderEntryPackInto(const HttpHeaderEntry * e, Packer * p) { assert(e && p); - packerAppend(p, strBuf(e->name), strLen(e->name)); + packerAppend(p, e->name.buf(), e->name.size()); packerAppend(p, ": ", 2); - packerAppend(p, strBuf(e->value), strLen(e->value)); + packerAppend(p, e->value.buf(), e->value.size()); packerAppend(p, "\r\n", 2); } @@ -1115,7 +1125,7 @@ httpHeaderNoteParsedEntry(http_hdr_type id, String context, int error) if (error) { Headers[id].stat.errCount++; debug(55, 2) ("cannot parse hdr field: '%s: %s'\n", - strBuf(Headers[id].name), strBuf(context)); + Headers[id].name.buf(), context.buf()); } } @@ -1132,7 +1142,7 @@ httpHeaderFieldStatDumper(StoreEntry * sentry, int idx, double val, double size, { const int id = (int) val; const int valid_id = id >= 0 && id < HDR_ENUM_END; - const char *name = valid_id ? strBuf(Headers[id].name) : "INVALID"; + const char *name = valid_id ? Headers[id].name.buf() : "INVALID"; int visible = count > 0; /* for entries with zero count, list only those that belong to current type of message */ if (!visible && valid_id && dump_stat->owner_mask) @@ -1201,7 +1211,7 @@ httpHeaderStoreReport(StoreEntry * e) for (ht = (http_hdr_type)0; ht < HDR_ENUM_END; ++ht) { HttpHeaderFieldInfo *f = Headers + ht; storeAppendPrintf(e, "%2d\t %-20s\t %5d\t %6.3f\t %6.3f\n", - f->id, strBuf(f->name), f->stat.aliveCount, + f->id, f->name.buf(), f->stat.aliveCount, xpercent(f->stat.errCount, f->stat.parsCount), xpercent(f->stat.repCount, f->stat.seenCount)); } @@ -1217,10 +1227,10 @@ httpHeaderIdByName(const char *name, int name_len, const HttpHeaderFieldInfo * i { int i; for (i = 0; i < end; ++i) { - if (name_len >= 0 && name_len != strLen(info[i].name)) + if (name_len >= 0 && name_len != info[i].name.size()) continue; - if (!strncasecmp(name, strBuf(info[i].name), - name_len < 0 ? strLen(info[i].name) + 1 : name_len)) + if (!strncasecmp(name, info[i].name.buf(), + name_len < 0 ? info[i].name.size() + 1 : name_len)) return info[i].id; } return HDR_BAD_HDR; diff --git a/src/HttpHeader.h b/src/HttpHeader.h index 830e021d65..dbb65aab92 100644 --- a/src/HttpHeader.h +++ b/src/HttpHeader.h @@ -1,6 +1,6 @@ /* - * $Id: HttpHeader.h,v 1.1 2002/10/13 20:34:56 robertc Exp $ + * $Id: HttpHeader.h,v 1.2 2003/01/23 00:37:12 robertc Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -34,8 +34,8 @@ #ifndef SQUID_HTTPHEADER_H #define SQUID_HTTPHEADER_H -#ifdef __cplusplus -#endif +/* because we pass a spec by value */ +#include "HttpHeaderRange.h" /* constant attributes of http header fields */ struct _HttpHeaderFieldAttrs { @@ -44,4 +44,6 @@ struct _HttpHeaderFieldAttrs { field_type type; }; +SQUIDCEXTERN void httpHeaderAddContRange(HttpHeader *, HttpHdrRangeSpec, ssize_t); + #endif /* SQUID_HTTPHEADER_H */ diff --git a/src/HttpHeaderRange.h b/src/HttpHeaderRange.h new file mode 100644 index 0000000000..7056872b32 --- /dev/null +++ b/src/HttpHeaderRange.h @@ -0,0 +1,121 @@ + +/* + * $Id: HttpHeaderRange.h,v 1.1 2003/01/23 00:37:12 robertc Exp $ + * + * + * 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. + * + */ + +#ifndef SQUID_HTTPHEADERRANGE_H +#define SQUID_HTTPHEADERRANGE_H + +#include "Range.h" + +typedef struct _HttpReply HttpReply; +/* http byte-range-spec */ +class HttpHdrRangeSpec { + public: + void *operator new(size_t); + void operator delete (void *); + void deleteSelf() const; + typedef Range HttpRange; + static ssize_t const UnknownPosition; + + HttpHdrRangeSpec(); + static HttpHdrRangeSpec *Create(const char *field, int fieldLen); + + bool parseInit(const char *field, int flen); + int canonize(size_t clen); + void outputInfo( char const *note) const; + void packInto(Packer * p) const; + bool mergeWith(const HttpHdrRangeSpec * donor); + ssize_t offset; + ssize_t length; +private: + static MemPool *Pool; +}; + +/* There may be more than one byte range specified in the request. + * This object holds all range specs in order of their appearence + * in the request because we SHOULD preserve that order. + */ +class HttpHdrRange { +public: + void *operator new(size_t); + void operator delete (void *); + void deleteSelf() const; + + static size_t ParsedCount; + /* Http Range Header Field */ + static HttpHdrRange *ParseCreate(const String * range_spec); + + HttpHdrRange(); + HttpHdrRange(HttpHdrRange const &); + ~HttpHdrRange(); + HttpHdrRange &operator= (HttpHdrRange const &); + + typedef Vector::iterator iterator; + typedef Vector::const_iterator const_iterator; + iterator begin(); + const_iterator begin () const; + iterator end(); + const_iterator end() const; + + /* adjust specs after the length is known */ + int canonize(size_t); + int canonize(HttpReply *rep); + /* returns true if ranges are valid; inits HttpHdrRange */ + bool parseInit(const String * range_spec); + void packInto(Packer * p) const; + /* other */ + bool isComplex() const; + bool willBeComplex() const; + ssize_t firstOffset() const; + ssize_t lowestOffset(ssize_t) const; + bool offsetLimitExceeded() const; + Vector specs; +private: + static MemPool *Pool; + void getCanonizedSpecs (Vector ©); + void merge (Vector &basis); + ssize_t clen; +}; + +/* data for iterating thru range specs */ +class HttpHdrRangeIter { + public: + HttpHdrRange::iterator pos; + const HttpHdrRangeSpec *currentSpec() const; + void updateSpec(); + ssize_t debt() const; + void debt(ssize_t); + ssize_t debt_size; /* bytes left to send from the current spec */ + String boundary; /* boundary for multipart responses */ + bool valid; +}; +#endif /* SQUID_HTTPHEADERRANGE_H */ diff --git a/src/HttpHeaderTools.cc b/src/HttpHeaderTools.cc index 0ce931780f..49610fd800 100644 --- a/src/HttpHeaderTools.cc +++ b/src/HttpHeaderTools.cc @@ -1,6 +1,6 @@ /* - * $Id: HttpHeaderTools.cc,v 1.34 2003/01/17 05:14:29 robertc Exp $ + * $Id: HttpHeaderTools.cc,v 1.35 2003/01/23 00:37:12 robertc Exp $ * * DEBUG: section 66 HTTP Header Tools * AUTHOR: Alex Rousskov @@ -35,6 +35,7 @@ #include "squid.h" #include "HttpHeader.h" +#include "HttpHdrContRange.h" #if UNUSED_CODE static int httpHeaderStrCmp(const char *h1, const char *h2, int len); @@ -62,8 +63,8 @@ httpHeaderBuildFieldsInfo(const HttpHeaderFieldAttrs * attrs, int count) /* copy and init fields */ info->id = id; info->type = attrs[i].type; - stringInit(&info->name, attrs[i].name); - assert(strLen(info->name)); + info->name = attrs[i].name; + assert(info->name.size()); /* init stats */ memset(&info->stat, 0, sizeof(info->stat)); } @@ -75,7 +76,7 @@ httpHeaderDestroyFieldsInfo(HttpHeaderFieldInfo * table, int count) { int i; for (i = 0; i < count; ++i) - stringClean(&table[i].name); + table[i].name.clean(); xfree(table); } @@ -170,7 +171,7 @@ httpHeaderHasConnDir(const HttpHeader * hdr, const char *directive) list = httpHeaderGetList(hdr, ht); res = strListIsMember(&list, directive, ','); - stringClean(&list); + list.clean(); return res; } @@ -223,14 +224,14 @@ void strListAdd(String * str, const char *item, char del) { assert(str && item); - if (strLen(*str)) { + if (str->size()) { char buf[3]; buf[0] = del; buf[1] = ' '; buf[2] = '\0'; - stringAppend(str, buf, 2); + str->append(buf, 2); } - stringAppend(str, item, strlen(item)); + str->append(item, strlen(item)); } /* @@ -252,7 +253,7 @@ strListGetItem(const String * str, char del, const char **item, int *ilen, const else (*pos)++; } else { - *pos = strBuf(*str); + *pos = str->buf(); if (!*pos) return 0; } @@ -425,7 +426,7 @@ httpHdrMangle(HttpHeaderEntry * e, request_t * request) * header on the fly, and return that the new header * is allowed. */ - stringReset(&e->value, hm->replacement); + e->value = hm->replacement; retval = 1; } diff --git a/src/HttpMsg.cc b/src/HttpMsg.cc index 35f229d028..4fc11286da 100644 --- a/src/HttpMsg.cc +++ b/src/HttpMsg.cc @@ -1,6 +1,6 @@ /* - * $Id: HttpMsg.cc,v 1.10 2001/01/12 00:37:14 wessels Exp $ + * $Id: HttpMsg.cc,v 1.11 2003/01/23 00:37:12 robertc Exp $ * * DEBUG: section 74 HTTP Message * AUTHOR: Alex Rousskov diff --git a/src/HttpReply.cc b/src/HttpReply.cc index 1ff35324a8..b0d12b767c 100644 --- a/src/HttpReply.cc +++ b/src/HttpReply.cc @@ -1,6 +1,6 @@ /* - * $Id: HttpReply.cc,v 1.50 2002/10/13 20:34:57 robertc Exp $ + * $Id: HttpReply.cc,v 1.51 2003/01/23 00:37:13 robertc Exp $ * * DEBUG: section 58 HTTP Reply (Response) * AUTHOR: Alex Rousskov @@ -33,7 +33,11 @@ * */ +#include "HttpReply.h" #include "squid.h" +#include "Store.h" +#include "HttpHeader.h" +#include "HttpHdrContRange.h" /* local constants */ @@ -130,6 +134,7 @@ httpReplyAbsorb(HttpReply * rep, HttpReply * new_rep) assert(rep && new_rep); httpReplyClean(rep); *rep = *new_rep; + new_rep->header.entries.clean(); /* cannot use Clean() on new reply now! */ httpReplyDoDestroy(new_rep); } @@ -165,12 +170,18 @@ httpReplyParse(HttpReply * rep, const char *buf, ssize_t end) } void -httpReplyPackInto(const HttpReply * rep, Packer * p) +httpReplyPackHeadersInto(const HttpReply * rep, Packer * p) { assert(rep); httpStatusLinePackInto(&rep->sline, p); httpHeaderPackInto(&rep->header, p); packerAppend(p, "\r\n", 2); +} + +void +httpReplyPackInto(const HttpReply * rep, Packer * p) +{ + httpReplyPackHeadersInto(rep, p); httpBodyPackInto(&rep->body, p); } @@ -189,16 +200,15 @@ httpReplyPack(const HttpReply * rep) return mb; } -/* swap: create swap-based packer, pack, destroy packer */ +/* swap: create swap-based packer, pack, destroy packer + * This eats the reply. + */ void -httpReplySwapOut(const HttpReply * rep, StoreEntry * e) +httpReplySwapOut(HttpReply * rep, StoreEntry * e) { - Packer p; assert(rep && e); - packerToStoreInit(&p, e); - httpReplyPackInto(rep, &p); - packerClean(&p); + storeEntryReplaceObject(e, rep); } MemBuf @@ -213,26 +223,48 @@ httpPackedReply(http_version_t ver, http_status status, const char *ctype, return mb; } -MemBuf -httpPacked304Reply(const HttpReply * rep) +HttpReply * +httpReplyMake304 (const HttpReply * rep) { static const http_hdr_type ImsEntries[] = - {HDR_DATE, HDR_CONTENT_TYPE, HDR_EXPIRES, HDR_LAST_MODIFIED, /* eof */ HDR_OTHER}; + {HDR_DATE, HDR_CONTENT_TYPE, HDR_EXPIRES, HDR_LAST_MODIFIED, /* eof */ HDR_OTHER}; + HttpReply *rv; int t; - MemBuf mb; - Packer p; HttpHeaderEntry *e; + http_version_t ver; assert(rep); - memBufDefInit(&mb); - packerToMemInit(&p, &mb); - memBufPrintf(&mb, "%s", "HTTP/1.0 304 Not Modified\r\n"); + rv = httpReplyCreate (); + /* rv->content_length; */ + rv->date = rep->date; + rv->last_modified = rep->last_modified; + rv->expires = rep->expires; + rv->content_type = rep->content_type; + /* rv->cache_control */ + /* rv->content_range */ + /* rv->keep_alive */ + httpBuildVersion(&ver, 1, 0); + httpStatusLineSet(&rv->sline, ver, + HTTP_NOT_MODIFIED, ""); for (t = 0; ImsEntries[t] != HDR_OTHER; ++t) - if ((e = httpHeaderFindEntry(&rep->header, ImsEntries[t]))) - httpHeaderEntryPackInto(e, &p); - memBufAppend(&mb, "\r\n", 2); - packerClean(&p); - return mb; + if ((e = httpHeaderFindEntry(&rep->header, ImsEntries[t])))httpHeaderAddEntry(&rv->header, httpHeaderEntryClone(e)); + /* rv->body */ + return rv; +} + +MemBuf +httpPacked304Reply(const HttpReply * rep) +{ + /* Not as efficient as skipping the header duplication, + * but easier to maintain + */ + HttpReply *temp; + MemBuf rv; + assert (rep); + temp = httpReplyMake304 (rep); + rv = httpReplyPack(temp); + httpReplyDestroy (temp); + return rv; } void @@ -248,7 +280,7 @@ httpReplySetHeaders(HttpReply * reply, http_version_t ver, http_status status, c httpHeaderPutTime(hdr, HDR_DATE, squid_curtime); if (ctype) { httpHeaderPutStr(hdr, HDR_CONTENT_TYPE, ctype); - stringInit(&reply->content_type, ctype); + reply->content_type = ctype; } else reply->content_type = StringNull; if (clen >= 0) @@ -280,10 +312,49 @@ httpRedirectReply(HttpReply * reply, http_status status, const char *loc) reply->content_length = 0; } +/* compare the validators of two replies. + * 1 = they match + * 0 = they do not match + */ +int +httpReplyValidatorsMatch(HttpReply const * rep, HttpReply const * otherRep) { + String one,two; + assert (rep && otherRep); + /* Numbers first - easiest to check */ + /* Content-Length */ + /* TODO: remove -1 bypass */ + if (rep->content_length != otherRep->content_length + && rep->content_length > -1 && + otherRep->content_length > -1) + return 0; + /* ETag */ + one = httpHeaderGetStrOrList(&rep->header, HDR_ETAG); + two = httpHeaderGetStrOrList(&otherRep->header, HDR_ETAG); + if (!one.buf() || !two.buf() || strcasecmp (one.buf(), two.buf())) { + one.clean(); + two.clean(); + return 0; + } + if (rep->last_modified != otherRep->last_modified) + return 0; + /* MD5 */ + one = httpHeaderGetStrOrList(&rep->header, HDR_CONTENT_MD5); + two = httpHeaderGetStrOrList(&otherRep->header, HDR_CONTENT_MD5); + if (strcasecmp (one.buf(), two.buf())) { + one.clean(); + two.clean(); + return 0; + } + return 1; +} + + void -httpReplyUpdateOnNotModified(HttpReply * rep, HttpReply * freshRep) +httpReplyUpdateOnNotModified(HttpReply * rep, HttpReply const * freshRep) { assert(rep && freshRep); + /* Can not update modified headers that don't match! */ + assert (httpReplyValidatorsMatch(rep, freshRep)); /* clean cache */ httpReplyHdrCacheClean(rep); /* update raw headers */ @@ -354,7 +425,7 @@ httpReplyHdrCacheInit(HttpReply * rep) rep->last_modified = httpHeaderGetTime(hdr, HDR_LAST_MODIFIED); str = httpHeaderGetStr(hdr, HDR_CONTENT_TYPE); if (str) - stringLimitInit(&rep->content_type, str, strcspn(str, ";\t ")); + rep->content_type.limitInit(str, strcspn(str, ";\t ")); else rep->content_type = StringNull; rep->cache_control = httpHeaderGetCc(hdr); @@ -368,7 +439,7 @@ httpReplyHdrCacheInit(HttpReply * rep) static void httpReplyHdrCacheClean(HttpReply * rep) { - stringClean(&rep->content_type); + rep->content_type.clean(); if (rep->cache_control) httpHdrCcDestroy(rep->cache_control); if (rep->content_range) @@ -378,7 +449,7 @@ httpReplyHdrCacheClean(HttpReply * rep) /* * parses a 0-terminating buffer into HttpReply. * Returns: - * +1 -- success + * 1 -- success * 0 -- need more data (partial parse) * -1 -- parse error */ @@ -457,7 +528,7 @@ httpReplyIsolateStart(const char **parse_start, const char **blk_start, const ch * Returns the body size of a HTTP response */ int -httpReplyBodySize(method_t method, HttpReply * reply) +httpReplyBodySize(method_t method, HttpReply const * reply) { if (METHOD_HEAD == method) return 0; diff --git a/src/HttpReply.h b/src/HttpReply.h new file mode 100644 index 0000000000..9fcd8892f1 --- /dev/null +++ b/src/HttpReply.h @@ -0,0 +1,79 @@ + +/* + * $Id: HttpReply.h,v 1.1 2003/01/23 00:37:13 robertc Exp $ + * + * + * 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. + * + */ + +#ifndef SQUID_HTTPREPLY_H +#define SQUID_HTTPREPLY_H + +#include "typedefs.h" + +/* Http Reply */ +extern void httpReplyInitModule(void); +/* create/destroy */ +extern HttpReply *httpReplyCreate(void); +extern void httpReplyDestroy(HttpReply * rep); +/* reset: clean, then init */ +extern void httpReplyReset(HttpReply * rep); +/* absorb: copy the contents of a new reply to the old one, destroy new one */ +extern void httpReplyAbsorb(HttpReply * rep, HttpReply * new_rep); +/* parse returns -1,0,+1 on error,need-more-data,success */ +extern int httpReplyParse(HttpReply * rep, const char *buf, ssize_t); +extern void httpReplyPackHeadersInto(const HttpReply * rep, Packer * p); +extern void httpReplyPackInto(const HttpReply * rep, Packer * p); +/* ez-routines */ +/* mem-pack: returns a ready to use mem buffer with a packed reply */ +extern MemBuf httpReplyPack(const HttpReply * rep); +/* swap: create swap-based packer, pack, destroy packer */ +extern void httpReplySwapOut(HttpReply * rep, StoreEntry * e); +/* set commonly used info with one call */ +extern void httpReplySetHeaders(HttpReply * rep, http_version_t ver, http_status status, + const char *reason, const char *ctype, int clen, time_t lmt, time_t expires); +/* do everything in one call: init, set, pack, clean, return MemBuf */ +extern MemBuf httpPackedReply(http_version_t ver, http_status status, const char *ctype, + int clen, time_t lmt, time_t expires); +/* construct 304 reply and pack it into MemBuf, return MemBuf */ +extern MemBuf httpPacked304Reply(const HttpReply * rep); +/* construct a 304 reply and return it */ +extern HttpReply *httpReplyMake304(const HttpReply *rep); +/* update when 304 reply is received for a cached object */ +extern void httpReplyUpdateOnNotModified(HttpReply * rep, HttpReply const * freshRep); +/* header manipulation */ +extern int httpReplyContentLen(const HttpReply * rep); +extern const char *httpReplyContentType(const HttpReply * rep); +extern time_t httpReplyExpires(const HttpReply * rep); +extern int httpReplyHasCc(const HttpReply * rep, http_hdr_cc_type type); +extern void httpRedirectReply(HttpReply *, http_status, const char *); +extern int httpReplyBodySize(method_t, HttpReply const *); +extern void httpReplyBodyBuildSize(request_t *, HttpReply *, dlink_list *); +extern int httpReplyValidatorsMatch (HttpReply const *, HttpReply const *); + +#endif /* SQUID_HTTPREPLY_H */ diff --git a/src/HttpRequest.cc b/src/HttpRequest.cc index 6bdd9b3fd7..fe48d5f928 100644 --- a/src/HttpRequest.cc +++ b/src/HttpRequest.cc @@ -1,6 +1,6 @@ /* - * $Id: HttpRequest.cc,v 1.32 2002/10/25 07:36:31 robertc Exp $ + * $Id: HttpRequest.cc,v 1.33 2003/01/23 00:37:13 robertc Exp $ * * DEBUG: section 73 HTTP Request * AUTHOR: Duane Wessels @@ -33,22 +33,27 @@ * */ +#include "HttpRequest.h" #include "squid.h" #include "authenticate.h" +#include "HttpHeaderRange.h" + +static void httpRequestHdrCacheInit(request_t * req); request_t * -requestCreate(method_t method, protocol_t protocol, const char *urlpath) +requestCreate(method_t method, protocol_t protocol, const char *aUrlpath) { request_t *req = static_cast(memAllocate(MEM_REQUEST_T)); req->method = method; req->protocol = protocol; - if (urlpath) - stringReset(&req->urlpath, urlpath); + if (aUrlpath) + req->urlpath = aUrlpath; req->max_forwards = -1; req->lastmod = -1; req->client_addr = no_addr; req->my_addr = no_addr; httpHeaderInit(&req->header, hoRequest); + httpRequestHdrCacheInit(req); return req; } @@ -62,12 +67,12 @@ requestDestroy(request_t * req) authenticateAuthUserRequestUnlock(req->auth_user_request); safe_free(req->canonical); safe_free(req->vary_headers); - stringClean(&req->urlpath); + req->urlpath.clean(); httpHeaderClean(&req->header); if (req->cache_control) httpHdrCcDestroy(req->cache_control); if (req->range) - httpHdrRangeDestroy(req->range); + req->range->deleteSelf(); memFree(req, MEM_REQUEST_T); } @@ -96,7 +101,10 @@ httpRequestParseHeader(request_t * req, const char *parse_start) const char *blk_start, *blk_end; if (!httpMsgIsolateHeaders(&parse_start, &blk_start, &blk_end)) return 0; - return httpHeaderParse(&req->header, blk_start, blk_end); + int result = httpHeaderParse(&req->header, blk_start, blk_end); + if (result) + httpRequestHdrCacheInit(req); + return result; } /* swaps out request using httpRequestPack */ @@ -117,7 +125,7 @@ httpRequestPack(const request_t * req, Packer * p) assert(req && p); /* pack request-line */ packerPrintf(p, "%s %s HTTP/1.0\r\n", - RequestMethodStr[req->method], strBuf(req->urlpath)); + RequestMethodStr[req->method], req->urlpath.buf()); /* headers */ httpHeaderPackInto(&req->header, p); /* trailer */ @@ -141,7 +149,7 @@ httpRequestPrefixLen(const request_t * req) { assert(req); return strlen(RequestMethodStr[req->method]) + 1 + - strLen(req->urlpath) + 1 + + req->urlpath.size() + 1 + 4 + 1 + 3 + 2 + req->header.len + 2; } @@ -155,11 +163,38 @@ httpRequestHdrAllowed(const HttpHeaderEntry * e, String * strConn) { assert(e); /* check connection header */ - if (strConn && strListIsMember(strConn, strBuf(e->name), ',')) + if (strConn && strListIsMember(strConn, e->name.buf(), ',')) return 0; return 1; } +/* sync this routine when you update request_t struct */ +static void +httpRequestHdrCacheInit(request_t * req) +{ + const HttpHeader *hdr = &req->header; +/* const char *str; */ + req->content_length = httpHeaderGetInt(hdr, HDR_CONTENT_LENGTH); + /* TODO: canonicalise these into an HttpEntity */ +#if 0 + req->date = httpHeaderGetTime(hdr, HDR_DATE); + req->last_modified = httpHeaderGetTime(hdr, HDR_LAST_MODIFIED); + str = httpHeaderGetStr(hdr, HDR_CONTENT_TYPE); + if (str) + stringLimitInit(&req->content_type, str, strcspn(str, ";\t ")); + else + req->content_type = StringNull; +#endif + req->cache_control = httpHeaderGetCc(hdr); + req->range = httpHeaderGetRange(hdr); +#if 0 + req->keep_alive = httpMsgIsPersistent(req->http_ver, &req->header); + + /* be sure to set expires after date and cache-control */ + req->expires = httpReplyHdrExpirationTime(req); +#endif +} + /* request_flags */ bool request_flags::resetTCP() const @@ -180,3 +215,9 @@ request_flags::clearResetTCP() debug(73, 9) ("request_flags::clearResetTCP\n"); reset_tcp = 0; } + +bool +request_t::multipartRangeRequest() const +{ + return (range && range->specs.count > 1); +} diff --git a/src/HttpRequest.h b/src/HttpRequest.h new file mode 100644 index 0000000000..3351283eaf --- /dev/null +++ b/src/HttpRequest.h @@ -0,0 +1,51 @@ + +/* + * $Id: HttpRequest.h,v 1.1 2003/01/23 00:37:13 robertc Exp $ + * + * + * 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. + * + */ + +#ifndef SQUID_HTTPREQUEST_H +#define SQUID_HTTPREQUEST_H + +#include "typedefs.h" + +/* Http Request */ +extern request_t *requestCreate(method_t, protocol_t, const char *urlpath); +extern void requestDestroy(request_t *); +extern request_t *requestLink(request_t *); +extern void requestUnlink(request_t *); +extern int httpRequestParseHeader(request_t * req, const char *parse_start); +extern void httpRequestSwapOut(const request_t * req, StoreEntry * e); +extern void httpRequestPack(const request_t * req, Packer * p); +extern int httpRequestPrefixLen(const request_t * req); +extern int httpRequestHdrAllowed(const HttpHeaderEntry * e, String * strConnection); +extern int httpRequestHdrAllowedByName(http_hdr_type id); + +#endif /* SQUID_HTTPREQUEST_H */ diff --git a/src/HttpStatusLine.cc b/src/HttpStatusLine.cc index cfccb145a0..a74b4c9b57 100644 --- a/src/HttpStatusLine.cc +++ b/src/HttpStatusLine.cc @@ -1,6 +1,6 @@ /* - * $Id: HttpStatusLine.cc,v 1.25 2002/09/23 04:01:51 wessels Exp $ + * $Id: HttpStatusLine.cc,v 1.26 2003/01/23 00:37:13 robertc Exp $ * * DEBUG: section 57 HTTP Status-line * AUTHOR: Alex Rousskov diff --git a/src/ICP.h b/src/ICP.h index bab4e8b11e..476fb1f478 100644 --- a/src/ICP.h +++ b/src/ICP.h @@ -1,6 +1,6 @@ /* - * $Id: ICP.h,v 1.2 2002/10/21 14:00:01 adrian Exp $ + * $Id: ICP.h,v 1.3 2003/01/23 00:37:13 robertc Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -36,9 +36,6 @@ #include "StoreClient.h" -#ifdef __cplusplus -#endif - /* This struct is the wire-level header. * DO NOT add ore move fields on pain of breakage. * DO NOT add virtual methods. diff --git a/src/IPInterception.cc b/src/IPInterception.cc index 7f29967d1b..93f61ea74d 100644 --- a/src/IPInterception.cc +++ b/src/IPInterception.cc @@ -1,6 +1,6 @@ /* - * $Id: IPInterception.cc,v 1.3 2002/09/27 11:21:10 robertc Exp $ + * $Id: IPInterception.cc,v 1.4 2003/01/23 00:37:13 robertc Exp $ * * DEBUG: section 89 NAT / IP Interception * AUTHOR: Robert Collins diff --git a/src/IPInterception.h b/src/IPInterception.h index b2ab308ab1..38329a0dcf 100644 --- a/src/IPInterception.h +++ b/src/IPInterception.h @@ -1,6 +1,6 @@ /* - * $Id: IPInterception.h,v 1.3 2002/10/13 20:34:57 robertc Exp $ + * $Id: IPInterception.h,v 1.4 2003/01/23 00:37:13 robertc Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ diff --git a/src/Makefile.am b/src/Makefile.am index 55d023cb15..4e1a0bb513 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.am,v 1.47 2003/01/17 05:37:24 robertc Exp $ +# $Id: Makefile.am,v 1.48 2003/01/23 00:37:13 robertc Exp $ # # Uncomment and customize the following to suit your needs: # @@ -79,7 +79,8 @@ EXTRA_PROGRAMS = \ unlinkd \ pinger \ dnsserver \ - recv-announce + recv-announce \ + ufsdump noinst_PROGRAMS = \ cf_gen @@ -90,6 +91,7 @@ sbin_PROGRAMS = \ bin_PROGRAMS = \ squidclient + libexec_PROGRAMS = \ $(PINGER) \ $(DNSSERVER) \ @@ -152,6 +154,8 @@ squid_SOURCES = \ event.cc \ external_acl.cc \ fd.cc \ + fde.cc \ + fde.h \ filemap.cc \ forward.cc \ fqdncache.cc \ @@ -189,7 +193,11 @@ squid_SOURCES = \ logfile.cc \ main.cc \ mem.cc \ + mem_node.cc \ + mem_node.h \ MemBuf.cc \ + MemObject.cc \ + MemObject.h \ mime.cc \ multicast.cc \ neighbors.cc \ @@ -228,6 +236,18 @@ squid_SOURCES = \ store_swapin.cc \ store_swapmeta.cc \ store_swapout.cc \ + StoreMeta.cc \ + StoreMeta.h \ + StoreMetaMD5.cc \ + StoreMetaMD5.h \ + StoreMetaSTD.cc \ + StoreMetaSTD.h \ + StoreMetaUnpacker.cc \ + StoreMetaUnpacker.h \ + StoreMetaURL.cc \ + StoreMetaURL.h \ + StoreMetaVary.cc \ + StoreMetaVary.h \ structs.h \ SwapDir.cc \ SwapDir.h \ @@ -244,6 +264,13 @@ squid_SOURCES = \ whois.cc \ $(WIN32SOURCE) +noinst_HEADERS = MemBuf.cci \ + MemBuf.h \ + Store.cci \ + String.cci \ + String.h \ + ufscommon.cci + nodist_squid_SOURCES = \ repl_modules.cc \ auth_modules.cc \ @@ -277,6 +304,161 @@ pinger_SOURCES = \ dnsserver_SOURCES = dnsserver.cc recv_announce_SOURCES = recv-announce.cc +ufsdump_SOURCES = debug.cc \ + int.cc \ + ufsdump.cc \ + store.cc \ + StoreMeta.cc \ + StoreMeta.h \ + StoreMetaMD5.cc \ + StoreMetaMD5.h \ + StoreMetaSTD.cc \ + StoreMetaSTD.h \ + StoreMetaUnpacker.cc \ + StoreMetaUnpacker.h \ + StoreMetaURL.cc \ + StoreMetaURL.h \ + StoreMetaVary.cc \ + StoreMetaVary.h \ + access_log.cc \ + acl.cc \ + asn.cc \ + authenticate.cc \ + cache_cf.cc \ + CacheDigest.cc \ + cache_manager.cc \ + carp.cc \ + cbdata.cc \ + client_db.cc \ + client_side.cc \ + client_side_reply.cc \ + client_side_request.cc \ + client_side_request.h \ + clientStream.cc \ + clientStream.h \ + comm.cc \ + comm.h \ + comm_select.cc \ + comm_poll.cc \ + comm_kqueue.cc \ + defines.h \ + $(DELAY_POOL_SOURCE) \ + disk.cc \ + $(DNSSOURCE) \ + enums.h \ + errorpage.cc \ + ETag.cc \ + event.cc \ + external_acl.cc \ + fd.cc \ + fde.cc \ + fde.h \ + filemap.cc \ + forward.cc \ + fqdncache.cc \ + ftp.cc \ + gopher.cc \ + helper.cc \ + $(HTCPSOURCE) \ + http.cc \ + HttpStatusLine.cc \ + HttpHdrCc.cc \ + HttpHdrRange.cc \ + HttpHdrContRange.cc \ + HttpHeader.cc \ + HttpHeaderTools.cc \ + HttpBody.cc \ + HttpMsg.cc \ + HttpReply.cc \ + HttpRequest.cc \ + icmp.cc \ + icp_v2.cc \ + icp_v3.cc \ + ident.cc \ + internal.cc \ + ipc.cc \ + ipcache.cc \ + IPInterception.cc \ + IPInterception.h \ + $(LEAKFINDERSOURCE) \ + logfile.cc \ + mem.cc \ + mem_node.cc \ + mem_node.h \ + MemBuf.cc \ + MemObject.cc \ + MemObject.h \ + mime.cc \ + multicast.cc \ + neighbors.cc \ + net_db.cc \ + Packer.cc \ + $(XPROF_STATS_SOURCE) \ + pconn.cc \ + peer_digest.cc \ + peer_select.cc \ + protos.h \ + redirect.cc \ + referer.cc \ + refresh.cc \ + send-announce.cc \ + $(SNMPSOURCE) \ + squid.h \ + ssl.cc \ + $(SSLSOURCE) \ + stat.cc \ + StatHist.cc \ + String.cc \ + stmem.cc \ + store_io.cc \ + StoreIOBuffer.h \ + StoreIOState.cc \ + store_client.cc \ + StoreClient.h \ + store_digest.cc \ + store_dir.cc \ + store_key_md5.cc \ + store_log.cc \ + store_rebuild.cc \ + store_swapin.cc \ + store_swapmeta.cc \ + store_swapout.cc \ + structs.h \ + SwapDir.cc \ + tools.cc \ + typedefs.h \ + ufscommon.cc \ + ufscommon.h \ + $(UNLINKDSOURCE) \ + url.cc \ + urn.cc \ + useragent.cc \ + wais.cc \ + wccp.cc \ + whois.cc \ + $(WIN32SOURCE) +ufsdump_LDADD = \ + -L../lib \ + @XTRA_OBJS@ \ + @REPL_OBJS@ \ + @STORE_OBJS@ \ + @AUTH_OBJS@ \ + @CRYPTLIB@ \ + @REGEXLIB@ \ + @SNMPLIB@ \ + @LIB_MALLOC@ \ + @SSLLIB@ \ + -lmiscutil \ + @XTRA_LIBS@ +ufsdump_DEPENDENCIES = $(top_builddir)/lib/libmiscutil.a +nodist_ufsdump_SOURCES = \ + repl_modules.cc \ + auth_modules.cc \ + store_modules.cc \ + cf_parser.h \ + globals.cc \ + string_arrays.c + nodist_pinger_SOURCES = \ globals.cc diff --git a/src/Makefile.in b/src/Makefile.in index 52c74eac3f..6bd8abe0be 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,11 +17,10 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.267 2003/01/17 05:39:14 robertc Exp $ +# $Id: Makefile.in,v 1.268 2003/01/23 00:37:13 robertc Exp $ # # Uncomment and customize the following to suit your needs: # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -51,9 +51,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -65,6 +69,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -82,7 +90,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -95,7 +102,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -112,6 +118,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -169,7 +176,8 @@ EXTRA_PROGRAMS = \ noinst_PROGRAMS = \ - cf_gen + cf_gen \ + ufsdump sbin_PROGRAMS = \ @@ -243,6 +251,8 @@ squid_SOURCES = \ event.cc \ external_acl.cc \ fd.cc \ + fde.cc \ + fde.h \ filemap.cc \ forward.cc \ fqdncache.cc \ @@ -280,7 +290,11 @@ squid_SOURCES = \ logfile.cc \ main.cc \ mem.cc \ + mem_node.cc \ + mem_node.h \ MemBuf.cc \ + MemObject.cc \ + MemObject.h \ mime.cc \ multicast.cc \ neighbors.cc \ @@ -319,6 +333,18 @@ squid_SOURCES = \ store_swapin.cc \ store_swapmeta.cc \ store_swapout.cc \ + StoreMeta.cc \ + StoreMeta.h \ + StoreMetaMD5.cc \ + StoreMetaMD5.h \ + StoreMetaSTD.cc \ + StoreMetaSTD.h \ + StoreMetaUnpacker.cc \ + StoreMetaUnpacker.h \ + StoreMetaURL.cc \ + StoreMetaURL.h \ + StoreMetaVary.cc \ + StoreMetaVary.h \ structs.h \ SwapDir.cc \ SwapDir.h \ @@ -336,6 +362,14 @@ squid_SOURCES = \ $(WIN32SOURCE) +noinst_HEADERS = MemBuf.cci \ + MemBuf.h \ + Store.cci \ + String.cci \ + String.h \ + ufscommon.cci + + nodist_squid_SOURCES = \ repl_modules.cc \ auth_modules.cc \ @@ -372,6 +406,164 @@ pinger_SOURCES = \ dnsserver_SOURCES = dnsserver.cc recv_announce_SOURCES = recv-announce.cc +ufsdump_SOURCES = debug.cc \ + int.cc \ + ufsdump.cc \ + store.cc \ + StoreMeta.cc \ + StoreMeta.h \ + StoreMetaMD5.cc \ + StoreMetaMD5.h \ + StoreMetaSTD.cc \ + StoreMetaSTD.h \ + StoreMetaUnpacker.cc \ + StoreMetaUnpacker.h \ + StoreMetaURL.cc \ + StoreMetaURL.h \ + StoreMetaVary.cc \ + StoreMetaVary.h \ + access_log.cc \ + acl.cc \ + asn.cc \ + authenticate.cc \ + cache_cf.cc \ + CacheDigest.cc \ + cache_manager.cc \ + carp.cc \ + cbdata.cc \ + client_db.cc \ + client_side.cc \ + client_side_reply.cc \ + client_side_request.cc \ + client_side_request.h \ + clientStream.cc \ + clientStream.h \ + comm.cc \ + comm.h \ + comm_select.cc \ + comm_poll.cc \ + comm_kqueue.cc \ + defines.h \ + $(DELAY_POOL_SOURCE) \ + disk.cc \ + $(DNSSOURCE) \ + enums.h \ + errorpage.cc \ + ETag.cc \ + event.cc \ + external_acl.cc \ + fd.cc \ + fde.cc \ + fde.h \ + filemap.cc \ + forward.cc \ + fqdncache.cc \ + ftp.cc \ + gopher.cc \ + helper.cc \ + $(HTCPSOURCE) \ + http.cc \ + HttpStatusLine.cc \ + HttpHdrCc.cc \ + HttpHdrRange.cc \ + HttpHdrContRange.cc \ + HttpHeader.cc \ + HttpHeaderTools.cc \ + HttpBody.cc \ + HttpMsg.cc \ + HttpReply.cc \ + HttpRequest.cc \ + icmp.cc \ + icp_v2.cc \ + icp_v3.cc \ + ident.cc \ + internal.cc \ + ipc.cc \ + ipcache.cc \ + IPInterception.cc \ + IPInterception.h \ + $(LEAKFINDERSOURCE) \ + logfile.cc \ + mem.cc \ + mem_node.cc \ + mem_node.h \ + MemBuf.cc \ + MemObject.cc \ + MemObject.h \ + mime.cc \ + multicast.cc \ + neighbors.cc \ + net_db.cc \ + Packer.cc \ + $(XPROF_STATS_SOURCE) \ + pconn.cc \ + peer_digest.cc \ + peer_select.cc \ + protos.h \ + redirect.cc \ + referer.cc \ + refresh.cc \ + send-announce.cc \ + $(SNMPSOURCE) \ + squid.h \ + ssl.cc \ + $(SSLSOURCE) \ + stat.cc \ + StatHist.cc \ + String.cc \ + stmem.cc \ + store_io.cc \ + StoreIOBuffer.h \ + StoreIOState.cc \ + store_client.cc \ + StoreClient.h \ + store_digest.cc \ + store_dir.cc \ + store_key_md5.cc \ + store_log.cc \ + store_rebuild.cc \ + store_swapin.cc \ + store_swapmeta.cc \ + store_swapout.cc \ + structs.h \ + SwapDir.cc \ + tools.cc \ + typedefs.h \ + ufscommon.cc \ + ufscommon.h \ + $(UNLINKDSOURCE) \ + url.cc \ + urn.cc \ + useragent.cc \ + wais.cc \ + wccp.cc \ + whois.cc \ + $(WIN32SOURCE) + +ufsdump_LDADD = \ + -L../lib \ + @XTRA_OBJS@ \ + @REPL_OBJS@ \ + @STORE_OBJS@ \ + @AUTH_OBJS@ \ + @CRYPTLIB@ \ + @REGEXLIB@ \ + @SNMPLIB@ \ + @LIB_MALLOC@ \ + @SSLLIB@ \ + -lmiscutil \ + @XTRA_LIBS@ + +ufsdump_DEPENDENCIES = $(top_builddir)/lib/libmiscutil.a +nodist_ufsdump_SOURCES = \ + repl_modules.cc \ + auth_modules.cc \ + store_modules.cc \ + cf_parser.h \ + globals.cc \ + string_arrays.c + + nodist_pinger_SOURCES = \ globals.cc @@ -473,7 +665,7 @@ bin_PROGRAMS = squidclient$(EXEEXT) @ENABLE_PINGER_TRUE@@ENABLE_UNLINKD_TRUE@@USE_DNSSERVER_FALSE@ pinger$(EXEEXT) \ @ENABLE_PINGER_TRUE@@ENABLE_UNLINKD_TRUE@@USE_DNSSERVER_FALSE@ unlinkd$(EXEEXT) \ @ENABLE_PINGER_TRUE@@ENABLE_UNLINKD_TRUE@@USE_DNSSERVER_FALSE@ cachemgr$(CGIEXT)$(EXEEXT) -noinst_PROGRAMS = cf_gen$(EXEEXT) +noinst_PROGRAMS = cf_gen$(EXEEXT) ufsdump$(EXEEXT) sbin_PROGRAMS = squid$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) $(libexec_PROGRAMS) $(noinst_PROGRAMS) \ $(sbin_PROGRAMS) @@ -504,23 +696,23 @@ recv_announce_OBJECTS = $(am_recv_announce_OBJECTS) recv_announce_LDADD = $(LDADD) recv_announce_DEPENDENCIES = recv_announce_LDFLAGS = -@USE_DELAY_POOLS_FALSE@am__objects_4 = -@USE_DELAY_POOLS_TRUE@am__objects_4 = delay_pools.$(OBJEXT) -@USE_DNSSERVER_FALSE@am__objects_5 = dns_internal.$(OBJEXT) -@USE_DNSSERVER_TRUE@am__objects_5 = dns.$(OBJEXT) -@ENABLE_HTCP_TRUE@am__objects_6 = htcp.$(OBJEXT) -@MAKE_LEAKFINDER_TRUE@am__objects_7 = leakfinder.$(OBJEXT) -@MAKE_LEAKFINDER_FALSE@am__objects_7 = -@ENABLE_XPROF_STATS_TRUE@am__objects_3 = ProfStats.$(OBJEXT) -@ENABLE_XPROF_STATS_FALSE@am__objects_3 = -@USE_SNMP_TRUE@am__objects_8 = snmp_core.$(OBJEXT) snmp_agent.$(OBJEXT) -@USE_SNMP_FALSE@am__objects_8 = -@ENABLE_SSL_FALSE@am__objects_9 = -@ENABLE_SSL_TRUE@am__objects_9 = ssl_support.$(OBJEXT) -@ENABLE_UNLINKD_TRUE@am__objects_10 = unlinkd.$(OBJEXT) -@ENABLE_UNLINKD_FALSE@am__objects_10 = -@ENABLE_WIN32SPECIFIC_FALSE@am__objects_11 = -@ENABLE_WIN32SPECIFIC_TRUE@am__objects_11 = win32.$(OBJEXT) +@USE_DELAY_POOLS_TRUE@am__objects_1 = delay_pools.$(OBJEXT) +@USE_DELAY_POOLS_FALSE@am__objects_1 = +@USE_DNSSERVER_TRUE@am__objects_2 = dns.$(OBJEXT) +@USE_DNSSERVER_FALSE@am__objects_2 = dns_internal.$(OBJEXT) +@ENABLE_HTCP_TRUE@am__objects_3 = htcp.$(OBJEXT) +@MAKE_LEAKFINDER_TRUE@am__objects_4 = leakfinder.$(OBJEXT) +@MAKE_LEAKFINDER_FALSE@am__objects_4 = +@ENABLE_XPROF_STATS_TRUE@am__objects_5 = ProfStats.$(OBJEXT) +@ENABLE_XPROF_STATS_FALSE@am__objects_5 = +@USE_SNMP_TRUE@am__objects_6 = snmp_core.$(OBJEXT) snmp_agent.$(OBJEXT) +@USE_SNMP_FALSE@am__objects_6 = +@ENABLE_SSL_TRUE@am__objects_7 = ssl_support.$(OBJEXT) +@ENABLE_SSL_FALSE@am__objects_7 = +@ENABLE_UNLINKD_TRUE@am__objects_8 = unlinkd.$(OBJEXT) +@ENABLE_UNLINKD_FALSE@am__objects_8 = +@ENABLE_WIN32SPECIFIC_TRUE@am__objects_9 = win32.$(OBJEXT) +@ENABLE_WIN32SPECIFIC_FALSE@am__objects_9 = am_squid_OBJECTS = access_log.$(OBJEXT) acl.$(OBJEXT) asn.$(OBJEXT) \ authenticate.$(OBJEXT) cache_cf.$(OBJEXT) CacheDigest.$(OBJEXT) \ cache_manager.$(OBJEXT) carp.$(OBJEXT) cbdata.$(OBJEXT) \ @@ -528,35 +720,39 @@ am_squid_OBJECTS = access_log.$(OBJEXT) acl.$(OBJEXT) asn.$(OBJEXT) \ client_side_reply.$(OBJEXT) client_side_request.$(OBJEXT) \ clientStream.$(OBJEXT) comm.$(OBJEXT) comm_select.$(OBJEXT) \ comm_poll.$(OBJEXT) comm_kqueue.$(OBJEXT) debug.$(OBJEXT) \ - $(am__objects_4) disk.$(OBJEXT) $(am__objects_5) \ + $(am__objects_1) disk.$(OBJEXT) $(am__objects_2) \ errorpage.$(OBJEXT) ETag.$(OBJEXT) event.$(OBJEXT) \ - external_acl.$(OBJEXT) fd.$(OBJEXT) filemap.$(OBJEXT) \ - forward.$(OBJEXT) fqdncache.$(OBJEXT) ftp.$(OBJEXT) \ - gopher.$(OBJEXT) helper.$(OBJEXT) $(am__objects_6) \ - http.$(OBJEXT) HttpStatusLine.$(OBJEXT) HttpHdrCc.$(OBJEXT) \ - HttpHdrRange.$(OBJEXT) HttpHdrContRange.$(OBJEXT) \ - HttpHeader.$(OBJEXT) HttpHeaderTools.$(OBJEXT) \ - HttpBody.$(OBJEXT) HttpMsg.$(OBJEXT) HttpReply.$(OBJEXT) \ - HttpRequest.$(OBJEXT) icmp.$(OBJEXT) icp_v2.$(OBJEXT) \ - icp_v3.$(OBJEXT) ident.$(OBJEXT) int.$(OBJEXT) \ + external_acl.$(OBJEXT) fd.$(OBJEXT) fde.$(OBJEXT) \ + filemap.$(OBJEXT) forward.$(OBJEXT) fqdncache.$(OBJEXT) \ + ftp.$(OBJEXT) gopher.$(OBJEXT) helper.$(OBJEXT) \ + $(am__objects_3) http.$(OBJEXT) HttpStatusLine.$(OBJEXT) \ + HttpHdrCc.$(OBJEXT) HttpHdrRange.$(OBJEXT) \ + HttpHdrContRange.$(OBJEXT) HttpHeader.$(OBJEXT) \ + HttpHeaderTools.$(OBJEXT) HttpBody.$(OBJEXT) HttpMsg.$(OBJEXT) \ + HttpReply.$(OBJEXT) HttpRequest.$(OBJEXT) icmp.$(OBJEXT) \ + icp_v2.$(OBJEXT) icp_v3.$(OBJEXT) ident.$(OBJEXT) int.$(OBJEXT) \ internal.$(OBJEXT) ipc.$(OBJEXT) ipcache.$(OBJEXT) \ - IPInterception.$(OBJEXT) $(am__objects_7) logfile.$(OBJEXT) \ - main.$(OBJEXT) mem.$(OBJEXT) MemBuf.$(OBJEXT) mime.$(OBJEXT) \ + IPInterception.$(OBJEXT) $(am__objects_4) logfile.$(OBJEXT) \ + main.$(OBJEXT) mem.$(OBJEXT) mem_node.$(OBJEXT) \ + MemBuf.$(OBJEXT) MemObject.$(OBJEXT) mime.$(OBJEXT) \ multicast.$(OBJEXT) neighbors.$(OBJEXT) net_db.$(OBJEXT) \ - Packer.$(OBJEXT) $(am__objects_3) pconn.$(OBJEXT) \ + Packer.$(OBJEXT) $(am__objects_5) pconn.$(OBJEXT) \ peer_digest.$(OBJEXT) peer_select.$(OBJEXT) redirect.$(OBJEXT) \ referer.$(OBJEXT) refresh.$(OBJEXT) send-announce.$(OBJEXT) \ - $(am__objects_8) ssl.$(OBJEXT) $(am__objects_9) stat.$(OBJEXT) \ + $(am__objects_6) ssl.$(OBJEXT) $(am__objects_7) stat.$(OBJEXT) \ StatHist.$(OBJEXT) String.$(OBJEXT) stmem.$(OBJEXT) \ store.$(OBJEXT) store_io.$(OBJEXT) StoreIOState.$(OBJEXT) \ store_client.$(OBJEXT) store_digest.$(OBJEXT) \ store_dir.$(OBJEXT) store_key_md5.$(OBJEXT) store_log.$(OBJEXT) \ store_rebuild.$(OBJEXT) store_swapin.$(OBJEXT) \ store_swapmeta.$(OBJEXT) store_swapout.$(OBJEXT) \ + StoreMeta.$(OBJEXT) StoreMetaMD5.$(OBJEXT) \ + StoreMetaSTD.$(OBJEXT) StoreMetaUnpacker.$(OBJEXT) \ + StoreMetaURL.$(OBJEXT) StoreMetaVary.$(OBJEXT) \ SwapDir.$(OBJEXT) tools.$(OBJEXT) ufscommon.$(OBJEXT) \ - $(am__objects_10) url.$(OBJEXT) urn.$(OBJEXT) \ + $(am__objects_8) url.$(OBJEXT) urn.$(OBJEXT) \ useragent.$(OBJEXT) wais.$(OBJEXT) wccp.$(OBJEXT) \ - whois.$(OBJEXT) $(am__objects_11) + whois.$(OBJEXT) $(am__objects_9) nodist_squid_OBJECTS = repl_modules.$(OBJEXT) auth_modules.$(OBJEXT) \ store_modules.$(OBJEXT) globals.$(OBJEXT) \ string_arrays.$(OBJEXT) @@ -567,6 +763,52 @@ squidclient_OBJECTS = $(am_squidclient_OBJECTS) squidclient_LDADD = $(LDADD) squidclient_DEPENDENCIES = squidclient_LDFLAGS = +am_ufsdump_OBJECTS = debug.$(OBJEXT) int.$(OBJEXT) ufsdump.$(OBJEXT) \ + store.$(OBJEXT) StoreMeta.$(OBJEXT) StoreMetaMD5.$(OBJEXT) \ + StoreMetaSTD.$(OBJEXT) StoreMetaUnpacker.$(OBJEXT) \ + StoreMetaURL.$(OBJEXT) StoreMetaVary.$(OBJEXT) \ + access_log.$(OBJEXT) acl.$(OBJEXT) asn.$(OBJEXT) \ + authenticate.$(OBJEXT) cache_cf.$(OBJEXT) CacheDigest.$(OBJEXT) \ + cache_manager.$(OBJEXT) carp.$(OBJEXT) cbdata.$(OBJEXT) \ + client_db.$(OBJEXT) client_side.$(OBJEXT) \ + client_side_reply.$(OBJEXT) client_side_request.$(OBJEXT) \ + clientStream.$(OBJEXT) comm.$(OBJEXT) comm_select.$(OBJEXT) \ + comm_poll.$(OBJEXT) comm_kqueue.$(OBJEXT) $(am__objects_1) \ + disk.$(OBJEXT) $(am__objects_2) errorpage.$(OBJEXT) \ + ETag.$(OBJEXT) event.$(OBJEXT) external_acl.$(OBJEXT) \ + fd.$(OBJEXT) fde.$(OBJEXT) filemap.$(OBJEXT) forward.$(OBJEXT) \ + fqdncache.$(OBJEXT) ftp.$(OBJEXT) gopher.$(OBJEXT) \ + helper.$(OBJEXT) $(am__objects_3) http.$(OBJEXT) \ + HttpStatusLine.$(OBJEXT) HttpHdrCc.$(OBJEXT) \ + HttpHdrRange.$(OBJEXT) HttpHdrContRange.$(OBJEXT) \ + HttpHeader.$(OBJEXT) HttpHeaderTools.$(OBJEXT) \ + HttpBody.$(OBJEXT) HttpMsg.$(OBJEXT) HttpReply.$(OBJEXT) \ + HttpRequest.$(OBJEXT) icmp.$(OBJEXT) icp_v2.$(OBJEXT) \ + icp_v3.$(OBJEXT) ident.$(OBJEXT) internal.$(OBJEXT) \ + ipc.$(OBJEXT) ipcache.$(OBJEXT) IPInterception.$(OBJEXT) \ + $(am__objects_4) logfile.$(OBJEXT) mem.$(OBJEXT) \ + mem_node.$(OBJEXT) MemBuf.$(OBJEXT) MemObject.$(OBJEXT) \ + mime.$(OBJEXT) multicast.$(OBJEXT) neighbors.$(OBJEXT) \ + net_db.$(OBJEXT) Packer.$(OBJEXT) $(am__objects_5) \ + pconn.$(OBJEXT) peer_digest.$(OBJEXT) peer_select.$(OBJEXT) \ + redirect.$(OBJEXT) referer.$(OBJEXT) refresh.$(OBJEXT) \ + send-announce.$(OBJEXT) $(am__objects_6) ssl.$(OBJEXT) \ + $(am__objects_7) stat.$(OBJEXT) StatHist.$(OBJEXT) \ + String.$(OBJEXT) stmem.$(OBJEXT) store_io.$(OBJEXT) \ + StoreIOState.$(OBJEXT) store_client.$(OBJEXT) \ + store_digest.$(OBJEXT) store_dir.$(OBJEXT) \ + store_key_md5.$(OBJEXT) store_log.$(OBJEXT) \ + store_rebuild.$(OBJEXT) store_swapin.$(OBJEXT) \ + store_swapmeta.$(OBJEXT) store_swapout.$(OBJEXT) \ + SwapDir.$(OBJEXT) tools.$(OBJEXT) ufscommon.$(OBJEXT) \ + $(am__objects_8) url.$(OBJEXT) urn.$(OBJEXT) \ + useragent.$(OBJEXT) wais.$(OBJEXT) wccp.$(OBJEXT) \ + whois.$(OBJEXT) $(am__objects_9) +nodist_ufsdump_OBJECTS = repl_modules.$(OBJEXT) auth_modules.$(OBJEXT) \ + store_modules.$(OBJEXT) globals.$(OBJEXT) \ + string_arrays.$(OBJEXT) +ufsdump_OBJECTS = $(am_ufsdump_OBJECTS) $(nodist_ufsdump_OBJECTS) +ufsdump_LDFLAGS = am_unlinkd_OBJECTS = unlinkd-unlinkd.$(OBJEXT) unlinkd_OBJECTS = $(am_unlinkd_OBJECTS) unlinkd_LDADD = $(LDADD) @@ -577,69 +819,84 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/CacheDigest.Po $(DEPDIR)/ETag.Po \ -@AMDEP_TRUE@ $(DEPDIR)/HttpBody.Po $(DEPDIR)/HttpHdrCc.Po \ -@AMDEP_TRUE@ $(DEPDIR)/HttpHdrContRange.Po \ -@AMDEP_TRUE@ $(DEPDIR)/HttpHdrRange.Po $(DEPDIR)/HttpHeader.Po \ -@AMDEP_TRUE@ $(DEPDIR)/HttpHeaderTools.Po $(DEPDIR)/HttpMsg.Po \ -@AMDEP_TRUE@ $(DEPDIR)/HttpReply.Po $(DEPDIR)/HttpRequest.Po \ -@AMDEP_TRUE@ $(DEPDIR)/HttpStatusLine.Po \ -@AMDEP_TRUE@ $(DEPDIR)/IPInterception.Po $(DEPDIR)/MemBuf.Po \ -@AMDEP_TRUE@ $(DEPDIR)/Packer.Po $(DEPDIR)/ProfStats.Po \ -@AMDEP_TRUE@ $(DEPDIR)/StatHist.Po $(DEPDIR)/StoreIOState.Po \ -@AMDEP_TRUE@ $(DEPDIR)/String.Po $(DEPDIR)/SwapDir.Po \ -@AMDEP_TRUE@ $(DEPDIR)/access_log.Po $(DEPDIR)/acl.Po \ -@AMDEP_TRUE@ $(DEPDIR)/asn.Po $(DEPDIR)/auth_modules.Po \ -@AMDEP_TRUE@ $(DEPDIR)/authenticate.Po $(DEPDIR)/cache_cf.Po \ -@AMDEP_TRUE@ $(DEPDIR)/cache_manager.Po $(DEPDIR)/cachemgr.Po \ -@AMDEP_TRUE@ $(DEPDIR)/carp.Po $(DEPDIR)/cbdata.Po \ -@AMDEP_TRUE@ $(DEPDIR)/cf_gen.Po $(DEPDIR)/client.Po \ -@AMDEP_TRUE@ $(DEPDIR)/clientStream.Po $(DEPDIR)/client_db.Po \ -@AMDEP_TRUE@ $(DEPDIR)/client_side.Po \ -@AMDEP_TRUE@ $(DEPDIR)/client_side_reply.Po \ -@AMDEP_TRUE@ $(DEPDIR)/client_side_request.Po $(DEPDIR)/comm.Po \ -@AMDEP_TRUE@ $(DEPDIR)/comm_kqueue.Po $(DEPDIR)/comm_poll.Po \ -@AMDEP_TRUE@ $(DEPDIR)/comm_select.Po $(DEPDIR)/debug.Po \ -@AMDEP_TRUE@ $(DEPDIR)/delay_pools.Po $(DEPDIR)/disk.Po \ -@AMDEP_TRUE@ $(DEPDIR)/dns.Po $(DEPDIR)/dns_internal.Po \ -@AMDEP_TRUE@ $(DEPDIR)/dnsserver.Po $(DEPDIR)/errorpage.Po \ -@AMDEP_TRUE@ $(DEPDIR)/event.Po $(DEPDIR)/external_acl.Po \ -@AMDEP_TRUE@ $(DEPDIR)/fd.Po $(DEPDIR)/filemap.Po \ -@AMDEP_TRUE@ $(DEPDIR)/forward.Po $(DEPDIR)/fqdncache.Po \ -@AMDEP_TRUE@ $(DEPDIR)/ftp.Po $(DEPDIR)/globals.Po \ -@AMDEP_TRUE@ $(DEPDIR)/gopher.Po $(DEPDIR)/helper.Po \ -@AMDEP_TRUE@ $(DEPDIR)/htcp.Po $(DEPDIR)/http.Po \ -@AMDEP_TRUE@ $(DEPDIR)/icmp.Po $(DEPDIR)/icp_v2.Po \ -@AMDEP_TRUE@ $(DEPDIR)/icp_v3.Po $(DEPDIR)/ident.Po \ -@AMDEP_TRUE@ $(DEPDIR)/int.Po $(DEPDIR)/internal.Po \ -@AMDEP_TRUE@ $(DEPDIR)/ipc.Po $(DEPDIR)/ipcache.Po \ -@AMDEP_TRUE@ $(DEPDIR)/leakfinder.Po $(DEPDIR)/logfile.Po \ -@AMDEP_TRUE@ $(DEPDIR)/main.Po $(DEPDIR)/mem.Po \ -@AMDEP_TRUE@ $(DEPDIR)/mime.Po $(DEPDIR)/multicast.Po \ -@AMDEP_TRUE@ $(DEPDIR)/neighbors.Po $(DEPDIR)/net_db.Po \ -@AMDEP_TRUE@ $(DEPDIR)/pconn.Po $(DEPDIR)/peer_digest.Po \ -@AMDEP_TRUE@ $(DEPDIR)/peer_select.Po $(DEPDIR)/pinger.Po \ -@AMDEP_TRUE@ $(DEPDIR)/recv-announce.Po $(DEPDIR)/redirect.Po \ -@AMDEP_TRUE@ $(DEPDIR)/referer.Po $(DEPDIR)/refresh.Po \ -@AMDEP_TRUE@ $(DEPDIR)/repl_modules.Po \ -@AMDEP_TRUE@ $(DEPDIR)/send-announce.Po $(DEPDIR)/snmp_agent.Po \ -@AMDEP_TRUE@ $(DEPDIR)/snmp_core.Po $(DEPDIR)/ssl.Po \ -@AMDEP_TRUE@ $(DEPDIR)/ssl_support.Po $(DEPDIR)/stat.Po \ -@AMDEP_TRUE@ $(DEPDIR)/stmem.Po $(DEPDIR)/store.Po \ -@AMDEP_TRUE@ $(DEPDIR)/store_client.Po $(DEPDIR)/store_digest.Po \ -@AMDEP_TRUE@ $(DEPDIR)/store_dir.Po $(DEPDIR)/store_io.Po \ -@AMDEP_TRUE@ $(DEPDIR)/store_key_md5.Po $(DEPDIR)/store_log.Po \ -@AMDEP_TRUE@ $(DEPDIR)/store_modules.Po \ -@AMDEP_TRUE@ $(DEPDIR)/store_rebuild.Po \ -@AMDEP_TRUE@ $(DEPDIR)/store_swapin.Po \ -@AMDEP_TRUE@ $(DEPDIR)/store_swapmeta.Po \ -@AMDEP_TRUE@ $(DEPDIR)/store_swapout.Po \ -@AMDEP_TRUE@ $(DEPDIR)/string_arrays.Po $(DEPDIR)/tools.Po \ -@AMDEP_TRUE@ $(DEPDIR)/ufscommon.Po $(DEPDIR)/unlinkd-unlinkd.Po \ -@AMDEP_TRUE@ $(DEPDIR)/unlinkd.Po $(DEPDIR)/url.Po \ -@AMDEP_TRUE@ $(DEPDIR)/urn.Po $(DEPDIR)/useragent.Po \ -@AMDEP_TRUE@ $(DEPDIR)/wais.Po $(DEPDIR)/wccp.Po \ -@AMDEP_TRUE@ $(DEPDIR)/whois.Po $(DEPDIR)/win32.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/CacheDigest.Po ./$(DEPDIR)/ETag.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/HttpBody.Po ./$(DEPDIR)/HttpHdrCc.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/HttpHdrContRange.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/HttpHdrRange.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/HttpHeader.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/HttpHeaderTools.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/HttpMsg.Po ./$(DEPDIR)/HttpReply.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/HttpRequest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/HttpStatusLine.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/IPInterception.Po ./$(DEPDIR)/MemBuf.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/MemObject.Po ./$(DEPDIR)/Packer.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/ProfStats.Po ./$(DEPDIR)/StatHist.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/StoreIOState.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/StoreMeta.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/StoreMetaMD5.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/StoreMetaSTD.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/StoreMetaURL.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/StoreMetaUnpacker.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/StoreMetaVary.Po ./$(DEPDIR)/String.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/SwapDir.Po ./$(DEPDIR)/access_log.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/acl.Po ./$(DEPDIR)/asn.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/auth_modules.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/authenticate.Po ./$(DEPDIR)/cache_cf.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/cache_manager.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/cachemgr.Po ./$(DEPDIR)/carp.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/cbdata.Po ./$(DEPDIR)/cf_gen.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/client.Po ./$(DEPDIR)/clientStream.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/client_db.Po ./$(DEPDIR)/client_side.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/client_side_reply.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/client_side_request.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/comm.Po ./$(DEPDIR)/comm_kqueue.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/comm_poll.Po ./$(DEPDIR)/comm_select.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/debug.Po ./$(DEPDIR)/delay_pools.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/disk.Po ./$(DEPDIR)/dns.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dns_internal.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/dnsserver.Po ./$(DEPDIR)/errorpage.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/event.Po ./$(DEPDIR)/external_acl.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/fd.Po ./$(DEPDIR)/fde.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/filemap.Po ./$(DEPDIR)/forward.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/fqdncache.Po ./$(DEPDIR)/ftp.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/globals.Po ./$(DEPDIR)/gopher.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/helper.Po ./$(DEPDIR)/htcp.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/http.Po ./$(DEPDIR)/icmp.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/icp_v2.Po ./$(DEPDIR)/icp_v3.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/ident.Po ./$(DEPDIR)/int.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/internal.Po ./$(DEPDIR)/ipc.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/ipcache.Po ./$(DEPDIR)/leakfinder.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/logfile.Po ./$(DEPDIR)/main.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/mem.Po ./$(DEPDIR)/mem_node.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/mime.Po ./$(DEPDIR)/multicast.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/neighbors.Po ./$(DEPDIR)/net_db.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/pconn.Po ./$(DEPDIR)/peer_digest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/peer_select.Po ./$(DEPDIR)/pinger.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/recv-announce.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/redirect.Po ./$(DEPDIR)/referer.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/refresh.Po ./$(DEPDIR)/repl_modules.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/send-announce.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/snmp_agent.Po ./$(DEPDIR)/snmp_core.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/ssl.Po ./$(DEPDIR)/ssl_support.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/stat.Po ./$(DEPDIR)/stmem.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/store.Po ./$(DEPDIR)/store_client.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/store_digest.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/store_dir.Po ./$(DEPDIR)/store_io.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/store_key_md5.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/store_log.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/store_modules.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/store_rebuild.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/store_swapin.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/store_swapmeta.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/store_swapout.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/string_arrays.Po ./$(DEPDIR)/tools.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/ufscommon.Po ./$(DEPDIR)/ufsdump.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/unlinkd-unlinkd.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/unlinkd.Po ./$(DEPDIR)/url.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/urn.Po ./$(DEPDIR)/useragent.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/wais.Po ./$(DEPDIR)/wccp.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/whois.Po ./$(DEPDIR)/win32.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -654,17 +911,19 @@ CXXFLAGS = @CXXFLAGS@ DIST_SOURCES = $(cachemgr__CGIEXT__SOURCES) $(cf_gen_SOURCES) \ $(dnsserver_SOURCES) $(pinger_SOURCES) $(recv_announce_SOURCES) \ $(squid_SOURCES) $(EXTRA_squid_SOURCES) $(squidclient_SOURCES) \ - $(unlinkd_SOURCES) + $(ufsdump_SOURCES) $(unlinkd_SOURCES) DATA = $(data_DATA) $(sysconf_DATA) +HEADERS = $(noinst_HEADERS) + RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \ uninstall-info-recursive all-recursive install-data-recursive \ install-exec-recursive installdirs-recursive install-recursive \ uninstall-recursive check-recursive installcheck-recursive -DIST_COMMON = Makefile.am Makefile.in +DIST_COMMON = $(noinst_HEADERS) Makefile.am Makefile.in DIST_SUBDIRS = $(SUBDIRS) -SOURCES = $(cachemgr__CGIEXT__SOURCES) $(cf_gen_SOURCES) $(dnsserver_SOURCES) $(pinger_SOURCES) $(nodist_pinger_SOURCES) $(recv_announce_SOURCES) $(squid_SOURCES) $(EXTRA_squid_SOURCES) $(nodist_squid_SOURCES) $(squidclient_SOURCES) $(unlinkd_SOURCES) +SOURCES = $(cachemgr__CGIEXT__SOURCES) $(cf_gen_SOURCES) $(dnsserver_SOURCES) $(pinger_SOURCES) $(nodist_pinger_SOURCES) $(recv_announce_SOURCES) $(squid_SOURCES) $(EXTRA_squid_SOURCES) $(nodist_squid_SOURCES) $(squidclient_SOURCES) $(ufsdump_SOURCES) $(nodist_ufsdump_SOURCES) $(unlinkd_SOURCES) all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-recursive @@ -675,9 +934,8 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign src/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(bindir) @@ -685,22 +943,23 @@ install-binPROGRAMS: $(bin_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$f; \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ + $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ rm -f $(DESTDIR)$(bindir)/$$f; \ done clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) +libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @@ -708,16 +967,16 @@ install-libexecPROGRAMS: $(libexec_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f; \ + 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; \ else :; fi; \ done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -727,6 +986,7 @@ clean-libexecPROGRAMS: clean-noinstPROGRAMS: -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) +sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-sbinPROGRAMS: $(sbin_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(sbindir) @@ -734,16 +994,16 @@ install-sbinPROGRAMS: $(sbin_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(sbindir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(sbindir)/$$f; \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) $$p $(DESTDIR)$(sbindir)/$$f"; \ + $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) $$p $(DESTDIR)$(sbindir)/$$f; \ else :; fi; \ done uninstall-sbinPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(sbin_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(sbindir)/$$f"; \ rm -f $(DESTDIR)$(sbindir)/$$f; \ done @@ -771,6 +1031,9 @@ squid$(EXEEXT): $(squid_OBJECTS) $(squid_DEPENDENCIES) squidclient$(EXEEXT): $(squidclient_OBJECTS) $(squidclient_DEPENDENCIES) @rm -f squidclient$(EXEEXT) $(CXXLINK) $(squidclient_LDFLAGS) $(squidclient_OBJECTS) $(squidclient_LDADD) $(LIBS) +ufsdump$(EXEEXT): $(ufsdump_OBJECTS) $(ufsdump_DEPENDENCIES) + @rm -f ufsdump$(EXEEXT) + $(CXXLINK) $(ufsdump_LDFLAGS) $(ufsdump_OBJECTS) $(ufsdump_LDADD) $(LIBS) unlinkd-unlinkd.$(OBJEXT): unlinkd.cc unlinkd$(EXEEXT): $(unlinkd_OBJECTS) $(unlinkd_DEPENDENCIES) @rm -f unlinkd$(EXEEXT) @@ -782,131 +1045,141 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/CacheDigest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ETag.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/HttpBody.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/HttpHdrCc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/HttpHdrContRange.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/HttpHdrRange.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/HttpHeader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/HttpHeaderTools.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/HttpMsg.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/HttpReply.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/HttpRequest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/HttpStatusLine.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/IPInterception.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/MemBuf.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/Packer.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ProfStats.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/StatHist.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/StoreIOState.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/String.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/SwapDir.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/access_log.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/acl.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/asn.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/auth_modules.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/authenticate.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/cache_cf.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/cache_manager.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/cachemgr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/carp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/cbdata.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/cf_gen.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/client.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/clientStream.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/client_db.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/client_side.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/client_side_reply.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/client_side_request.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/comm.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)/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@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/dns.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/dns_internal.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/dnsserver.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/errorpage.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/event.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/external_acl.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fd.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/filemap.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/forward.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fqdncache.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ftp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/globals.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/gopher.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/helper.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/htcp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/http.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icmp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icp_v2.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icp_v3.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ident.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/int.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/internal.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ipc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ipcache.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/leakfinder.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/logfile.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/mem.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/mime.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/multicast.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/neighbors.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/net_db.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pconn.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/peer_digest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/peer_select.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pinger.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/recv-announce.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/redirect.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/referer.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/refresh.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/repl_modules.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/send-announce.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/snmp_agent.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/snmp_core.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ssl.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ssl_support.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/stat.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/stmem.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/store.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/store_client.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/store_digest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/store_dir.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/store_io.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/store_key_md5.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/store_log.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/store_modules.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/store_rebuild.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/store_swapin.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/store_swapmeta.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/store_swapout.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/string_arrays.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/tools.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ufscommon.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/unlinkd-unlinkd.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/unlinkd.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/url.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/urn.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/useragent.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/wais.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/wccp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/whois.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/win32.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CacheDigest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ETag.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HttpBody.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HttpHdrCc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HttpHdrContRange.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HttpHdrRange.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HttpHeader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HttpHeaderTools.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HttpMsg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HttpReply.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HttpRequest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HttpStatusLine.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IPInterception.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MemBuf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MemObject.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Packer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ProfStats.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StatHist.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StoreIOState.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StoreMeta.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StoreMetaMD5.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StoreMetaSTD.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StoreMetaURL.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StoreMetaUnpacker.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StoreMetaVary.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/String.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SwapDir.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access_log.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asn.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/auth_modules.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authenticate.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cache_cf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cache_manager.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/carp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cbdata.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cf_gen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/client.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clientStream.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/client_db.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/client_side.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/client_side_reply.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/client_side_request.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm.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)/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@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dns.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dns_internal.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnsserver.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errorpage.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/event.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/external_acl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fde.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filemap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/forward.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fqdncache.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/globals.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gopher.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/helper.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htcp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icp_v2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icp_v3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ident.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/int.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/internal.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipcache.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/leakfinder.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logfile.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mem.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mem_node.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mime.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multicast.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/neighbors.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net_db.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pconn.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peer_digest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peer_select.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pinger.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recv-announce.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redirect.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/referer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refresh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/repl_modules.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/send-announce.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snmp_agent.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snmp_core.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ssl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ssl_support.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stmem.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/store.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/store_client.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/store_digest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/store_dir.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/store_io.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/store_key_md5.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/store_log.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/store_modules.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/store_rebuild.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/store_swapin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/store_swapmeta.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/store_swapout.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/string_arrays.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tools.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ufscommon.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ufsdump.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unlinkd-unlinkd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unlinkd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/url.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/urn.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/useragent.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wais.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wccp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/whois.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win32.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .c.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< .c.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -919,7 +1192,7 @@ CCDEPMODE = @CCDEPMODE@ @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< + $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< .cc.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -931,7 +1204,7 @@ unlinkd-unlinkd.o: unlinkd.cc @AMDEP_TRUE@ source='unlinkd.cc' object='unlinkd-unlinkd.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/unlinkd-unlinkd.Po' tmpdepfile='$(DEPDIR)/unlinkd-unlinkd.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(unlinkd_CXXFLAGS) $(CXXFLAGS) -c -o unlinkd-unlinkd.o `test -f unlinkd.cc || echo '$(srcdir)/'`unlinkd.cc + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(unlinkd_CXXFLAGS) $(CXXFLAGS) -c -o unlinkd-unlinkd.o `test -f 'unlinkd.cc' || echo '$(srcdir)/'`unlinkd.cc unlinkd-unlinkd.obj: unlinkd.cc @AMDEP_TRUE@ source='unlinkd.cc' object='unlinkd-unlinkd.obj' libtool=no @AMDEPBACKSLASH@ @@ -940,14 +1213,15 @@ unlinkd-unlinkd.obj: unlinkd.cc $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(unlinkd_CXXFLAGS) $(CXXFLAGS) -c -o unlinkd-unlinkd.obj `cygpath -w unlinkd.cc` CXXDEPMODE = @CXXDEPMODE@ uninstall-info-am: +dataDATA_INSTALL = $(INSTALL_DATA) install-dataDATA: $(data_DATA) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(datadir) @list='$(data_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(datadir)/$$f"; \ - $(INSTALL_DATA) $$d$$p $(DESTDIR)$(datadir)/$$f; \ + echo " $(dataDATA_INSTALL) $$d$$p $(DESTDIR)$(datadir)/$$f"; \ + $(dataDATA_INSTALL) $$d$$p $(DESTDIR)$(datadir)/$$f; \ done uninstall-dataDATA: @@ -957,14 +1231,15 @@ uninstall-dataDATA: echo " rm -f $(DESTDIR)$(datadir)/$$f"; \ rm -f $(DESTDIR)$(datadir)/$$f; \ done +sysconfDATA_INSTALL = $(INSTALL_DATA) install-sysconfDATA: $(sysconf_DATA) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(sysconfdir) @list='$(sysconf_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(sysconfdir)/$$f"; \ - $(INSTALL_DATA) $$d$$p $(DESTDIR)$(sysconfdir)/$$f; \ + echo " $(sysconfDATA_INSTALL) $$d$$p $(DESTDIR)$(sysconfdir)/$$f"; \ + $(sysconfDATA_INSTALL) $$d$$p $(DESTDIR)$(sysconfdir)/$$f; \ done uninstall-sysconfDATA: @@ -982,7 +1257,7 @@ uninstall-sysconfDATA: # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): - @set fnord $(MAKEFLAGS); amf=$$2; \ + @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ @@ -1002,7 +1277,7 @@ $(RECURSIVE_TARGETS): mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: - @set fnord $(MAKEFLAGS); amf=$$2; \ + @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ @@ -1030,16 +1305,19 @@ tags-recursive: test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) @@ -1050,45 +1328,50 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = .. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done - for subdir in $(SUBDIRS); do \ + list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ @@ -1103,7 +1386,7 @@ distdir: $(DISTFILES) done check-am: all-am check: check-recursive -all-am: Makefile $(PROGRAMS) $(DATA) +all-am: Makefile $(PROGRAMS) $(DATA) $(HEADERS) installdirs: installdirs-recursive installdirs-am: $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(libexecdir) $(DESTDIR)$(sbindir) $(DESTDIR)$(datadir) $(DESTDIR)$(sysconfdir) @@ -1119,6 +1402,7 @@ install-am: all-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -1126,7 +1410,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: diff --git a/src/Mem.h b/src/Mem.h new file mode 100644 index 0000000000..e75ae4d73c --- /dev/null +++ b/src/Mem.h @@ -0,0 +1,48 @@ + +/* + * $Id: Mem.h,v 1.1 2003/01/23 00:37:14 robertc Exp $ + * + * DEBUG: section 13 High Level Memory Pool Management + * AUTHOR: Harvest Derived + * + * 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. + * + */ + +#ifndef SQUID_MEM +#define SQUID_MEM + +class Mem { +public: + static void Init(); + static void Stats(StoreEntry *); + static void CleanIdlePools(void *unused); + static void Report(StoreEntry *); + static void PoolReport(const MemPoolStats * mp_st, const MemPoolMeter * AllMeter, StoreEntry * e); +}; + +#endif /* SQUID_MEM */ diff --git a/src/MemBuf.cc b/src/MemBuf.cc index 02aa3a1d37..710933b942 100644 --- a/src/MemBuf.cc +++ b/src/MemBuf.cc @@ -1,6 +1,6 @@ /* - * $Id: MemBuf.cc,v 1.32 2002/10/13 20:34:57 robertc Exp $ + * $Id: MemBuf.cc,v 1.33 2003/01/23 00:37:14 robertc Exp $ * * DEBUG: section 59 auto-growing Memory Buffer with printf * AUTHOR: Alex Rousskov @@ -320,3 +320,7 @@ memBufReport(MemBuf * mb) assert(mb); memBufPrintf(mb, "memBufReport is not yet implemented @?@\n"); } + +#ifndef _USE_INLINE_ +#include "MemBuf.cci" +#endif diff --git a/src/MemBuf.cci b/src/MemBuf.cci new file mode 100644 index 0000000000..e1d8278c77 --- /dev/null +++ b/src/MemBuf.cci @@ -0,0 +1,38 @@ + +/* + * $Id: MemBuf.cci,v 1.1 2003/01/23 00:37:14 robertc Exp $ + * + * DEBUG: section 59 auto-growing Memory Buffer with printf + * AUTHOR: Robert Collins + * + * 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. + * + */ + +MemBuf::MemBuf() : buf (NULL), size (0), max_capacity (0), capacity(0), stolen(0) +{ +} diff --git a/src/MemBuf.h b/src/MemBuf.h new file mode 100644 index 0000000000..cd9c1e32e8 --- /dev/null +++ b/src/MemBuf.h @@ -0,0 +1,88 @@ + +/* + * $Id: MemBuf.h,v 1.1 2003/01/23 00:37:14 robertc Exp $ + * + * + * 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. + * + */ + +#ifndef SQUID_MEMBUF_H +#define SQUID_MEMBUF_H + +/* auto-growing memory-resident buffer with printf interface */ +/* note: when updating this struct, update MemBufNULL #define */ +class MemBuf { + public: + _SQUID_INLINE_ MemBuf(); + /* public, read-only */ + char *buf; + mb_size_t size; /* used space, does not count 0-terminator */ + + /* private, stay away; use interface function instead */ + mb_size_t max_capacity; /* when grows: assert(new_capacity <= max_capacity) */ + mb_size_t capacity; /* allocated space */ + unsigned stolen:1; /* the buffer has been stolen for use by someone else */ +}; + +/* to initialize static variables (see also MemBufNull) */ +#define MemBufNULL MemBuf(); + +#ifdef _USE_INLINE_ +#include "MemBuf.cci" +#endif + +/* MemBuf */ +/* init with specific sizes */ +SQUIDCEXTERN void memBufInit(MemBuf * mb, mb_size_t szInit, mb_size_t szMax); +/* init with defaults */ +SQUIDCEXTERN void memBufDefInit(MemBuf * mb); +/* cleans mb; last function to call if you do not give .buf away */ +SQUIDCEXTERN void memBufClean(MemBuf * mb); +/* resets mb preserving (or initializing if needed) memory buffer */ +SQUIDCEXTERN void memBufReset(MemBuf * mb); +/* unfirtunate hack to test if the buffer has been Init()ialized */ +SQUIDCEXTERN int memBufIsNull(MemBuf * mb); +/* calls memcpy, appends exactly size bytes, extends buffer if needed */ +SQUIDCEXTERN void memBufAppend(MemBuf * mb, const char *buf, mb_size_t size); +/* calls snprintf, extends buffer if needed */ +#if STDC_HEADERS +SQUIDCEXTERN void +memBufPrintf(MemBuf * mb, const char *fmt,...) PRINTF_FORMAT_ARG2; +#else +SQUIDCEXTERN void memBufPrintf(); +#endif +/* vprintf for other printf()'s to use */ +SQUIDCEXTERN void memBufVPrintf(MemBuf * mb, const char *fmt, va_list ap); +/* returns free() function to be used, _freezes_ the object! */ +SQUIDCEXTERN FREE *memBufFreeFunc(MemBuf * mb); +/* puts report on MemBuf _module_ usage into mb */ +SQUIDCEXTERN void memBufReport(MemBuf * mb); + +#define MemBufNull MemBuf(); + +#endif /* SQUID_MEM_H */ diff --git a/src/MemObject.cc b/src/MemObject.cc new file mode 100644 index 0000000000..e4b7450c7c --- /dev/null +++ b/src/MemObject.cc @@ -0,0 +1,360 @@ + +/* + * $Id: MemObject.cc,v 1.1 2003/01/23 00:37:14 robertc Exp $ + * + * DEBUG: section 19 Store Memory Primitives + * AUTHOR: Robert Collins + * + * 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 "MemObject.h" +#include "HttpRequest.h" +#include "HttpReply.h" +#include "Store.h" +#include "StoreClient.h" +#include "Generic.h" + +/* TODO: make this global or private */ +#if URL_CHECKSUM_DEBUG +static unsigned int url_checksum(const char *url); +unsigned int +url_checksum(const char *url) +{ + unsigned int ck; + MD5_CTX M; + static unsigned char digest[16]; + MD5Init(&M); + MD5Update(&M, (unsigned char *) url, strlen(url)); + MD5Final(digest, &M); + xmemcpy(&ck, digest, sizeof(ck)); + return ck; +} +#endif + +MemPool *MemObject::pool = NULL; + +void * +MemObject::operator new (size_t byteCount) +{ + /* derived classes with different sizes must implement their own new */ + assert (byteCount == sizeof (MemObject)); + if (!pool) + pool = memPoolCreate("MemObject", sizeof (MemObject)); + return memPoolAlloc(pool); +} + +void +MemObject::operator delete (void *address) +{ + memPoolFree(pool, address); +} + +size_t +MemObject::inUseCount() +{ + if (!pool) + return 0; + MemPoolStats stats; + memPoolGetStats (&stats, pool); + return stats.items_inuse; +} + +MemObject::MemObject(char const *aUrl, char const *aLog_url) : +_reply (httpReplyCreate()) +{ + url = xstrdup(aUrl); +#if URL_CHECKSUM_DEBUG + chksum = url_checksum(url); +#endif + log_url = xstrdup(aLog_url); + object_sz = -1; + fd = -1; + /* XXX account log_url */ + debug(20, 3) ("MemObject::MemObject: initialized %p\n", this); +} + +MemObject::~MemObject() +{ + const Ctx ctx = ctx_enter(url); + debug(20, 3) ("destroy_MemObject: destroying %p\n", this); +#if URL_CHECKSUM_DEBUG + assert(chksum == url_checksum(url)); +#endif + if (!shutting_down) + assert(swapout.sio == NULL); + data_hdr.freeContent(); + /* + * There is no way to abort FD-less clients, so they might + * still have mem->clients set if mem->fd == -1 + */ + assert(fd == -1 || clients.head == NULL); + httpReplyDestroy((HttpReply *)_reply); + requestUnlink(request); + request = NULL; + ctx_exit(ctx); /* must exit before we free mem->url */ + safe_free(url); + safe_free(log_url); /* XXX account log_url */ + safe_free(vary_headers); +} + +void +MemObject::unlinkRequest() +{ + /* XXX Should we assert(request)? */ + requestUnlink(request); + request = NULL; +} + +void +MemObject::write ( StoreIOBuffer writeBuffer, STMCB *callback, void *callbackData) +{ + debug(19, 6) ("memWrite: offset %lu len %d\n", writeBuffer.offset, writeBuffer.length); + + /* the offset is into the content, not the headers */ + writeBuffer.offset += (_reply ? _reply->hdr_sz : 0); + + /* We don't separate out mime headers yet, so ensure that the first + * write is at offset 0 - where they start + */ + assert (data_hdr.endOffset() || writeBuffer.offset == 0); + + assert (data_hdr.write (writeBuffer)); + callback (callbackData, writeBuffer); +} + +void +MemObject::dump() const +{ + debug(20, 1) ("MemObject->data.head: %p\n", + data_hdr.head); + debug(20, 1) ("MemObject->data.tail: %p\n", + data_hdr.tail); +#if 0 + /* do we want this one? */ + debug(20, 1) ("MemObject->data.origin_offset: %d\n", + data_hdr.head ? data_hdr.head->nodeBuffer.offset : 0); +#endif + debug(20, 1) ("MemObject->start_ping: %d.%06d\n", + (int) start_ping.tv_sec, + (int) start_ping.tv_usec); + debug(20, 1) ("MemObject->inmem_hi: %d\n", + (int) data_hdr.endOffset()); + debug(20, 1) ("MemObject->inmem_lo: %d\n", + (int) inmem_lo); + debug(20, 1) ("MemObject->nclients: %d\n", + nclients); + debug(20, 1) ("MemObject->reply: %p\n", + _reply); + debug(20, 1) ("MemObject->request: %p\n", + request); + debug(20, 1) ("MemObject->log_url: %p %s\n", + log_url, + checkNullString(log_url)); +} + +HttpReply const * +MemObject::getReply() const +{ + return _reply; +} + +struct LowestMemReader : public unary_function +{ + LowestMemReader(off_t seed):current(seed){} + void operator() (store_client const &x) + { + if (x.memReaderHasLowerOffset(current)) + current = x.copyInto.offset; } + off_t current; +}; + +struct StoreClientStats : public unary_function +{ + StoreClientStats(StoreEntry *anEntry):where(anEntry),index(0){} + void operator()(store_client const &x) { + x.dumpStats(where, index++); + } + StoreEntry *where; + size_t index; +}; + +void +MemObject::stat (StoreEntry *s) const +{ + storeAppendPrintf(s, "\t%s %s\n", + RequestMethodStr[method], log_url); + storeAppendPrintf(s, "\tinmem_lo: %d\n", (int) inmem_lo); + storeAppendPrintf(s, "\tinmem_hi: %d\n", (int) data_hdr.endOffset()); + storeAppendPrintf(s, "\tswapout: %d bytes queued\n", + (int) swapout.queue_offset); + if (swapout.sio.getRaw()) + storeAppendPrintf(s, "\tswapout: %d bytes written\n", + (int) swapout.sio->offset()); + StoreClientStats statsVisitor(s); + for_each(clients, statsVisitor); +} + +off_t +MemObject::endOffset () const +{ + return data_hdr.endOffset(); +} + +size_t +MemObject::size() const +{ + if (object_sz < 0) + return endOffset(); + return object_sz; +} + +void +MemObject::reset() +{ + assert(swapout.sio == NULL); + data_hdr.freeContent(); + inmem_lo = 0; + /* Should we check for clients? */ +} + + +off_t +MemObject::lowestMemReaderOffset() const +{ + LowestMemReader lowest (endOffset() + 1); + + for_each (clients, lowest); + + return lowest.current; +} + +/* XXX: This is wrong. It breaks *badly* on range combining */ +bool +MemObject::readAheadPolicyCanRead() const +{ + return (size_t)endOffset() - getReply()->hdr_sz < lowestMemReaderOffset() + Config.readAheadGap; +} + +void +MemObject::addClient(store_client *aClient) +{ + ++nclients; + dlinkAdd(aClient, &aClient->node, &clients); +} + +#if URL_CHECKSUM_DEBUG +void +MemObject::checkUrlChecksum () const +{ + assert(chksum == url_checksum(url)); +} +#endif + +/* + * How much of the object data is on the disk? + */ +size_t +MemObject::objectBytesOnDisk() const +{ + /* + * NOTE: storeOffset() represents the disk file size, + * not the amount of object data on disk. + * + * If we don't have at least 'swap_hdr_sz' bytes + * then none of the object data is on disk. + * + * This should still be safe if swap_hdr_sz == 0, + * meaning we haven't even opened the swapout file + * yet. + */ + if (swapout.sio.getRaw() == NULL) + return 0; + off_t nwritten = swapout.sio->offset(); + if (nwritten <= (off_t)swap_hdr_sz) + return 0; + return (size_t) (nwritten - swap_hdr_sz); +} + +off_t +MemObject::policyLowestOffsetToKeep() const +{ + /* + * Careful. lowest_offset can be greater than endOffset(), such + * as in the case of a range request. + */ + off_t lowest_offset = lowestMemReaderOffset(); + if (endOffset() < lowest_offset || + endOffset() - inmem_lo > (ssize_t)Config.Store.maxInMemObjSize) + return lowest_offset; + + return inmem_lo; +} + +void +MemObject::trimSwappable() +{ + off_t new_mem_lo = policyLowestOffsetToKeep(); + /* + * We should only free up to what we know has been written + * to disk, not what has been queued for writing. Otherwise + * there will be a chunk of the data which is not in memory + * and is not yet on disk. + * The -1 makes sure the page isn't freed until storeSwapOut has + * walked to the next page. (mem->swapout.memnode) + */ + off_t on_disk; + if ((on_disk = objectBytesOnDisk()) - 1 < new_mem_lo) + new_mem_lo = on_disk - 1; + if (new_mem_lo == -1) + new_mem_lo = 0; /* the above might become -1 */ + data_hdr.freeDataUpto(new_mem_lo); + inmem_lo = new_mem_lo; +} + +void +MemObject::trimUnSwappable() +{ + off_t new_mem_lo = policyLowestOffsetToKeep(); + assert (new_mem_lo > 0); + + data_hdr.freeDataUpto(new_mem_lo); + inmem_lo = new_mem_lo; +} + + +bool +MemObject::isContiguous() const +{ + bool result = data_hdr.hasContigousContentRange (inmem_lo, endOffset()); + /* XXX : make this higher level */ + debug (19, result ? 2 : 1) ("MemObject::isContiguous: Returning %s\n", + result ? "true" : "false"); + return result; +} diff --git a/src/MemObject.h b/src/MemObject.h new file mode 100644 index 0000000000..f6d7df8115 --- /dev/null +++ b/src/MemObject.h @@ -0,0 +1,117 @@ + +/* + * $Id: MemObject.h,v 1.1 2003/01/23 00:37:14 robertc Exp $ + * + * + * 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. + * + */ + +#ifndef SQUID_MEMOBJECT_H +#define SQUID_MEMOBJECT_H + +#include "StoreIOBuffer.h" +#include "stmem.h" + +typedef void STMCB (void *data, StoreIOBuffer wroteBuffer); + +class store_client; + +class MemObject { +public: + static size_t inUseCount(); + + void dump() const; + void *operator new (size_t); + void operator delete (void *); + MemObject(char const *, char const *); + ~MemObject(); + + void write(StoreIOBuffer, STMCB *, void *); + void unlinkRequest(); + HttpReply const *getReply() const; + void stat (StoreEntry *s) const; + off_t endOffset () const; + size_t size() const; + void reset(); + off_t lowestMemReaderOffset() const; + bool readAheadPolicyCanRead() const; + void addClient(store_client *); + /* XXX belongs in MemObject::swapout, once swaphdrsz is managed + * better + */ + size_t objectBytesOnDisk() const; + off_t policyLowestOffsetToKeep() const; + void trimSwappable(); + void trimUnSwappable(); + bool isContiguous() const; + + +#if URL_CHECKSUM_DEBUG + void checkUrlChecksum() const; +#endif + + method_t method; + char *url; + mem_hdr data_hdr; + off_t inmem_lo; + dlink_list clients; + int nclients; + struct { + off_t queue_offset; /* relative to in-mem data */ + mem_node *memnode; /* which node we're currently paging out */ + StoreIOState::Pointer sio; + } swapout; + /* Read only - this reply must be preserved by store clients */ + /* The original reply. possibly with updated metadata. */ + request_t *request; + struct timeval start_ping; + IRCB *ping_reply_callback; + void *ircb_data; + int fd; /* FD of client creating this entry */ + struct { + STABH *callback; + void *data; + } abort; + char *log_url; + RemovalPolicyNode repl; + int id; + ssize_t object_sz; + size_t swap_hdr_sz; +#if URL_CHECKSUM_DEBUG + unsigned int chksum; +#endif + const char *vary_headers; +private: + static MemPool *pool; + + /* Read only - this reply must be preserved by store clients */ + /* The original reply. possibly with updated metadata. */ + HttpReply const *_reply; +}; + +#endif /* SQUID_MEMOBJECT_H */ diff --git a/src/Packer.cc b/src/Packer.cc index 179870b245..e00eae4849 100644 --- a/src/Packer.cc +++ b/src/Packer.cc @@ -1,6 +1,6 @@ /* - * $Id: Packer.cc,v 1.14 2002/10/13 20:34:57 robertc Exp $ + * $Id: Packer.cc,v 1.15 2003/01/23 00:37:14 robertc Exp $ * * DEBUG: section 60 Packer: A uniform interface to store-like modules * AUTHOR: Alex Rousskov diff --git a/src/ProfStats.cc b/src/ProfStats.cc index e27a675d30..cd95c407a7 100644 --- a/src/ProfStats.cc +++ b/src/ProfStats.cc @@ -1,6 +1,6 @@ /* - * $Id: ProfStats.cc,v 1.2 2002/10/13 20:34:57 robertc Exp $ + * $Id: ProfStats.cc,v 1.3 2003/01/23 00:37:14 robertc Exp $ * * DEBUG: section 81 CPU Profiling Routines * AUTHOR: Andres Kroonmaa diff --git a/src/StatHist.cc b/src/StatHist.cc index 54768833d7..a17b52c52e 100644 --- a/src/StatHist.cc +++ b/src/StatHist.cc @@ -1,6 +1,6 @@ /* - * $Id: StatHist.cc,v 1.28 2002/10/14 09:04:25 hno Exp $ + * $Id: StatHist.cc,v 1.29 2003/01/23 00:37:14 robertc Exp $ * * DEBUG: section 62 Generic Histogram * AUTHOR: Duane Wessels diff --git a/src/Store.cci b/src/Store.cci new file mode 100644 index 0000000000..c007f9458b --- /dev/null +++ b/src/Store.cci @@ -0,0 +1,61 @@ + +/* + * $Id: Store.cci,v 1.1 2003/01/23 00:37:14 robertc Exp $ + * + * DEBUG: section 20 Storage Manager + * AUTHOR: Harvest Derived + * + * 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" +#if 0 +#include "StoreClient.h" +#include "stmem.h" +#include "HttpReply.h" +#include "HttpRequest.h" +#endif +#include "MemObject.h" +#if 0 +#include "mem_node.h" +#include "StoreMeta.h" +#include "SwapDir.h" +#endif + +bool +StoreEntry::isEmpty () const +{ + assert (mem_obj); + return mem_obj->endOffset() == 0; +} + +HttpReply const * +NullStoreEntry::getReply() const +{ + return NULL; +} diff --git a/src/Store.h b/src/Store.h index 4fdb9394bf..15efec74f9 100644 --- a/src/Store.h +++ b/src/Store.h @@ -1,6 +1,6 @@ /* - * $Id: Store.h,v 1.5 2003/01/17 05:49:35 robertc Exp $ + * $Id: Store.h,v 1.6 2003/01/23 00:37:14 robertc Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -34,14 +34,28 @@ #ifndef SQUID_STORE_H #define SQUID_STORE_H -#ifdef __cplusplus +#include "StoreIOBuffer.h" + class StoreClient; -#endif +class MemObject; +typedef void STSETUP(storefs_entry_t *); class StoreEntry : public hash_link { public: - virtual const char *getMD5Text() const; + static int CheckDeferRead(int fd, void *data); + static void FsAdd(const char *, STSETUP *); + virtual const char *getMD5Text() const; + virtual HttpReply const *getReply() const; + virtual void write (StoreIOBuffer); + virtual _SQUID_INLINE_ bool isEmpty() const; + virtual int checkDeferRead(int fd) const; + virtual void complete(); + virtual store_client_t storeClientType() const; + virtual char const *getSerialisedMetaData(); + virtual bool swapoutPossible(); + virtual void trimMemory(); + MemObject *mem_obj; RemovalPolicyNode repl; /* START OF ON-DISK STORE_META_STD TLV field */ @@ -60,12 +74,12 @@ public: ping_status_t ping_status:3; store_status_t store_status:3; swap_status_t swap_status:3; -#ifdef __cplusplus public: static size_t inUseCount(); static void getPublicByRequestMethod(StoreClient * aClient, request_t * request, const method_t method); static void getPublicByRequest(StoreClient * aClient, request_t * request); static void getPublic(StoreClient * aClient, const char *uri, const method_t method); + virtual bool isNull() { return false; } @@ -73,10 +87,10 @@ public: void operator delete(void *address); private: static MemPool *pool; -#endif + + bool validLength() const; }; -#ifdef __cplusplus class NullStoreEntry:public StoreEntry { public: @@ -85,16 +99,26 @@ public: return true; } const char *getMD5Text() const; + _SQUID_INLINE_ HttpReply const *getReply() const; + void write (StoreIOBuffer){} + bool isEmpty () const {return true;} + int checkDeferRead(int fd) const {return 1;} void operator delete(void *address); + void complete(){} private: + store_client_t storeClientType() const{return STORE_MEM_CLIENT;} + char const *getSerialisedMetaData(); + bool swapoutPossible() {return false;} + void trimMemory() {} + + static NullStoreEntry _instance; }; -#endif - -SQUIDCEXTERN size_t storeEntryInUse(); +SQUIDCEXTERN off_t storeLowestMemReaderOffset(const StoreEntry * entry); SQUIDCEXTERN const char *storeEntryFlags(const StoreEntry *); SQUIDCEXTERN int storeEntryLocked(const StoreEntry *); +extern void storeEntryReplaceObject(StoreEntry *, HttpReply *); SQUIDCEXTERN StoreEntry *new_StoreEntry(int, const char *, const char *); SQUIDCEXTERN StoreEntry *storeGet(const cache_key *); @@ -103,7 +127,7 @@ SQUIDCEXTERN StoreEntry *storeGetPublicByRequest(request_t * request); SQUIDCEXTERN StoreEntry *storeGetPublicByRequestMethod(request_t * request, const method_t method); SQUIDCEXTERN StoreEntry *storeCreateEntry(const char *, const char *, request_flags, method_t); SQUIDCEXTERN void storeSetPublicKey(StoreEntry *); -SQUIDCEXTERN void storeComplete(StoreEntry *); +SQUIDCEXTERN void storeCreateMemObject(StoreEntry *, const char *, const char *); SQUIDCEXTERN void storeInit(void); SQUIDCEXTERN void storeAbort(StoreEntry *); SQUIDCEXTERN void storeAppend(StoreEntry *, const char *, int); @@ -122,11 +146,8 @@ SQUIDCEXTERN int storeEntryValidToSend(StoreEntry *); SQUIDCEXTERN void storeTimestampsSet(StoreEntry *); SQUIDCEXTERN void storeRegisterAbort(StoreEntry * e, STABH * cb, void *); SQUIDCEXTERN void storeUnregisterAbort(StoreEntry * e); -SQUIDCEXTERN void storeMemObjectDump(MemObject * mem); SQUIDCEXTERN void storeEntryDump(const StoreEntry * e, int debug_lvl); SQUIDCEXTERN const char *storeUrl(const StoreEntry *); -SQUIDCEXTERN void storeCreateMemObject(StoreEntry *, const char *, const char *); -SQUIDCEXTERN void storeCopyNotModifiedReplyHeaders(MemObject * O, MemObject * N); SQUIDCEXTERN void storeBuffer(StoreEntry *); SQUIDCEXTERN void storeBufferFlush(StoreEntry *); SQUIDCEXTERN void storeHashInsert(StoreEntry * e, const cache_key *); @@ -142,7 +163,6 @@ SQUIDCEXTERN int storeCheckCachable(StoreEntry * e); SQUIDCEXTERN void storeSetPrivateKey(StoreEntry *); SQUIDCEXTERN ssize_t objectLen(const StoreEntry * e); SQUIDCEXTERN int contentLen(const StoreEntry * e); -SQUIDCEXTERN HttpReply *storeEntryReply(StoreEntry *); SQUIDCEXTERN int storeTooManyDiskFilesOpen(void); SQUIDCEXTERN void storeEntryReset(StoreEntry *); SQUIDCEXTERN void storeHeapPositionUpdate(StoreEntry *, SwapDir *); @@ -150,10 +170,13 @@ SQUIDCEXTERN void storeSwapFileNumberSet(StoreEntry * e, sfileno filn); SQUIDCEXTERN void storeFsInit(void); SQUIDCEXTERN void storeFsDone(void); typedef void STSETUP(storefs_entry_t *); -SQUIDCEXTERN void storeFsAdd(const char *, STSETUP *); SQUIDCEXTERN void storeReplAdd(const char *, REMOVALPOLICYCREATE *); /* store_modules.c */ SQUIDCEXTERN void storeFsSetup(void); +#ifdef _USE_INLINE_ +#include "Store.cci" +#endif + #endif /* SQUID_STORE_H */ diff --git a/src/StoreClient.h b/src/StoreClient.h index be062c7f36..3b5c08b936 100644 --- a/src/StoreClient.h +++ b/src/StoreClient.h @@ -1,6 +1,6 @@ /* - * $Id: StoreClient.h,v 1.5 2003/01/17 05:49:35 robertc Exp $ + * $Id: StoreClient.h,v 1.6 2003/01/23 00:37:14 robertc Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -38,24 +38,31 @@ typedef void STCB(void *, StoreIOBuffer); /* store callback */ -#ifdef __cplusplus class StoreEntry; -#endif -#ifdef __cplusplus class StoreClient { public: virtual ~StoreClient () {} virtual void created (StoreEntry *newEntry) = 0; }; -#endif /* keep track each client receiving data from that particular StoreEntry */ -struct _store_client { - int type; +class store_client { +public: + void *operator new (size_t); + void operator delete(void *); + store_client(StoreEntry *); + bool memReaderHasLowerOffset(off_t) const; + int getType() const; + void fail(); + void callback(ssize_t len, bool error = false); + void doCopy (StoreEntry *e); + void readHeader(const char *buf, ssize_t len); + bool callbackPending() const; + void copy(StoreEntry *, StoreIOBuffer, STCB *, void *); + void dumpStats(StoreEntry * output, int clientNumber) const; + off_t cmp_offset; - STCB *callback; - void *callback_data; #if STORE_CLIENT_LIST_DEBUG void *owner; #endif @@ -72,11 +79,23 @@ struct _store_client { dlink_node node; /* Below here is private - do no alter outside storeClient calls */ StoreIOBuffer copyInto; -#ifdef __cplusplus -#endif +private: + static MemPool *pool; + + void fileRead(); + void unpackHeader(char const *buf, ssize_t len); + + int type; + bool object_ok; + struct Callback { + Callback ():callback_handler(NULL), callback_data(NULL){} + Callback (STCB *, void *); + STCB *callback_handler; + void *callback_data; + } _callback; }; SQUIDCEXTERN void storeClientCopy(store_client *, StoreEntry *, StoreIOBuffer, STCB *, void *); -SQUIDCEXTERN void storeClientDumpStats(store_client * thisClient, StoreEntry * output, int clientNumber); + #endif /* SQUID_STORECLIENT_H */ diff --git a/src/StoreIOBuffer.h b/src/StoreIOBuffer.h index e077438246..21e7f1a21d 100644 --- a/src/StoreIOBuffer.h +++ b/src/StoreIOBuffer.h @@ -1,6 +1,6 @@ /* - * $Id: StoreIOBuffer.h,v 1.1 2002/09/24 10:46:43 robertc Exp $ + * $Id: StoreIOBuffer.h,v 1.2 2003/01/23 00:37:14 robertc Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -34,9 +34,14 @@ #ifndef SQUID_STOREIORESULT_H #define SQUID_STOREIORESULT_H -typedef struct _StoreIOBuffer StoreIOBuffer; - -struct _StoreIOBuffer { +class StoreIOBuffer { +public: + StoreIOBuffer():length(0), offset (0), data (NULL){flags.error = 0;} + StoreIOBuffer(size_t aLength, off_t anOffset, char *someData) : + length (aLength), offset (anOffset), data (someData) + { + flags.error = 0; + } struct { int error:1; } flags; @@ -45,6 +50,4 @@ struct _StoreIOBuffer { char *data; }; -#define EMPTYIOBUFFER {{0},0,0,NULL} - #endif /* SQUID_STOREIORESULT_H */ diff --git a/src/StoreIOState.cc b/src/StoreIOState.cc index e335091634..7fa230ab4e 100644 --- a/src/StoreIOState.cc +++ b/src/StoreIOState.cc @@ -1,6 +1,6 @@ /* - * $Id: StoreIOState.cc,v 1.1 2002/12/27 10:26:33 robertc Exp $ + * $Id: StoreIOState.cc,v 1.2 2003/01/23 00:37:14 robertc Exp $ * * DEBUG: section ?? Swap Dir base object * AUTHOR: Robert Collins diff --git a/src/StoreIOState.h b/src/StoreIOState.h index c6b7f0d4a4..a763a7fd9e 100644 --- a/src/StoreIOState.h +++ b/src/StoreIOState.h @@ -1,6 +1,6 @@ /* - * $Id: StoreIOState.h,v 1.2 2002/12/27 12:37:52 robertc Exp $ + * $Id: StoreIOState.h,v 1.3 2003/01/23 00:37:14 robertc Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -49,7 +49,7 @@ public: off_t offset() const; virtual void read_(char *buf, size_t size, off_t offset, STRCB * callback, void *callback_data) = 0; - virtual void write(char *buf, size_t size, off_t offset, FREE * free_func) = 0; + virtual void write(char const *buf, size_t size, off_t offset, FREE * free_func) = 0; virtual void close() = 0; sdirno swap_dirn; diff --git a/src/StoreMeta.cc b/src/StoreMeta.cc new file mode 100644 index 0000000000..58316180fd --- /dev/null +++ b/src/StoreMeta.cc @@ -0,0 +1,174 @@ + +/* + * $Id: StoreMeta.cc,v 1.1 2003/01/23 00:37:14 robertc Exp $ + * + * DEBUG: section 20 Storage Manager Swapfile Metadata + * AUTHOR: Kostas Anagnostakis + * + * 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 "StoreMeta.h" +#include "Store.h" +#include "MemObject.h" +#include "StoreMetaMD5.h" +#include "StoreMetaURL.h" +#include "StoreMetaSTD.h" +#include "StoreMetaVary.h" + +bool +StoreMeta::validType(char type) +{ + /* VOID is reserved, and new types have to be added as classes */ + if (type <= STORE_META_VOID || type >= STORE_META_END) { + debug(20, 0) ("storeSwapMetaUnpack: bad type (%d)!\n", type); + return false; + } + /* Unused in any current squid code */ + if (type == STORE_META_KEY_URL || + type == STORE_META_KEY_SHA || + type == STORE_META_HITMETERING || + type == STORE_META_VALID) { + debug (20,0)("Obsolete and unused type (%d) in disk metadata\n", type); + return false; + } + return true; +} + +class IntRange{ +public: + IntRange (int minimum, int maximum) : _min (minimum), _max (maximum) + { + if (_min > _max) { + int temp = _min; + _min = _max; + _max = temp; + } + } + bool includes (int anInt) const + { + if (anInt < _min || anInt > _max) + return false; + return true; + } +private: + int _min; + int _max; +}; + +const int StoreMeta::MinimumTLVLength = 0; +const int StoreMeta::MaximumTLVLength = 1 << 16; + +bool +StoreMeta::validLength(int length) const +{ + if (!IntRange (MinimumTLVLength, MaximumTLVLength).includes(length)){ + debug(20, 0) ("storeSwapMetaUnpack: insane length (%d)!\n", length); + return false; + } + return true; +} + + +StoreMeta * +StoreMeta::Factory (char type, size_t len, void const *value) +{ + if (!validType(type)) + return NULL; + StoreMeta *result; + switch (type) { + case STORE_META_KEY: + result = new StoreMetaMD5; + break; + case STORE_META_URL: + result = new StoreMetaURL; + break; + case STORE_META_STD: + result = new StoreMetaSTD; + break; + case STORE_META_VARY_HEADERS: + result = new StoreMetaVary; + break; + default: + debug (20,0)("Attempt to create unknown concrete StoreMeta\n"); + return NULL; + } + if (!result->validLength(len)) { + result->deleteSelf(); + return NULL; + } + result->length = len; + result->value = xmalloc(len); + xmemcpy(result->value, value, len); + return result; +} + +void +StoreMeta::FreeList(StoreMeta **head) +{ + StoreMeta *node; + while ((node = *head) != NULL) { + *head = node->next; + xfree(node->value); + node->deleteSelf(); + } +} + +StoreMeta ** +StoreMeta::Add(StoreMeta **tail, StoreMeta *aNode) +{ + assert (*tail == NULL); + *tail = aNode; + return &aNode->next; /* return new tail pointer */ +} + +bool +StoreMeta::checkConsistency(StoreEntry *e) const +{ + switch (getType()) + { + case STORE_META_KEY: + case STORE_META_URL: + case STORE_META_VARY_HEADERS: + assert(0); + break; + case STORE_META_STD: + break; + default: + debug(20, 1) ("WARNING: got unused STORE_META type %d\n", getType()); + break; + } + return true; +} + +void +StoreMeta::deleteSelf() +{ + delete this; +} diff --git a/src/StoreMeta.h b/src/StoreMeta.h new file mode 100644 index 0000000000..ac7ff78580 --- /dev/null +++ b/src/StoreMeta.h @@ -0,0 +1,67 @@ + +/* + * $Id: StoreMeta.h,v 1.1 2003/01/23 00:37:14 robertc Exp $ + * + * + * 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. + * + */ + +#ifndef SQUID_TYPELENGTHVALUE_H +#define SQUID_TYPELENGTHVALUE_H + +class StoreEntry; +typedef class StoreMeta tlv; +class StoreMeta { +public: + virtual void deleteSelf() = 0; + static bool validType(char); + static int const MaximumTLVLength; + static int const MinimumTLVLength; + static StoreMeta *Factory (char type, size_t len, void const *value); + static StoreMeta **Add(StoreMeta **tail, StoreMeta *aNode); + static void FreeList (StoreMeta **head); + + virtual char getType() const = 0; + virtual bool validLength(int) const; + virtual bool checkConsistency(StoreEntry *) const; + virtual ~StoreMeta(){} + + int length; + void *value; + tlv *next; +private: +}; + +/* + * store_swapmeta.c + */ +SQUIDCEXTERN char *storeSwapMetaPack(tlv * tlv_list, int *length); +SQUIDCEXTERN tlv *storeSwapMetaBuild(StoreEntry * e); +SQUIDCEXTERN void storeSwapTLVFree(tlv * n); + +#endif /* SQUID_TYPELENGTHVALUE_H */ diff --git a/src/StoreMetaMD5.cc b/src/StoreMetaMD5.cc new file mode 100644 index 0000000000..a8b03f6825 --- /dev/null +++ b/src/StoreMetaMD5.cc @@ -0,0 +1,89 @@ + +/* + * $Id: StoreMetaMD5.cc,v 1.1 2003/01/23 00:37:14 robertc Exp $ + * + * DEBUG: section 20 Storage Manager Swapfile Metadata + * AUTHOR: Kostas Anagnostakis + * + * 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 "StoreMetaMD5.h" +#include "Store.h" +#include "MemObject.h" + +MemPool *StoreMetaMD5::pool = NULL; + +void * +StoreMetaMD5::operator new (size_t byteCount) +{ + /* derived classes with different sizes must implement their own new */ + assert (byteCount == sizeof (StoreMetaMD5)); + if (!pool) + pool = memPoolCreate("StoreMetaMD5", sizeof (StoreMetaMD5)); + return memPoolAlloc(pool); +} + +void +StoreMetaMD5::operator delete (void *address) +{ + memPoolFree(pool, address); +} + +void +StoreMetaMD5::deleteSelf() +{ + delete this; +} + +bool +StoreMetaMD5::validLength(int len) const +{ + return len == MD5_DIGEST_CHARS; +} + +int StoreMetaMD5::md5_mismatches = 0; + +bool +StoreMetaMD5::checkConsistency(StoreEntry *e) const +{ + assert (getType() == STORE_META_KEY_MD5); + assert(length == MD5_DIGEST_CHARS); + if (!EBIT_TEST(e->flags, KEY_PRIVATE) && + memcmp(value, e->key, MD5_DIGEST_CHARS)) { + debug(20, 2) ("storeClientReadHeader: swapin MD5 mismatch\n"); +// debug(20, 2) ("\t%s\n", storeKeyText((const cache_key *)value)); + debug(20, 2) ("\t%s\n", e->getMD5Text()); + if (isPowTen(++md5_mismatches)) + debug(20, 1) ("WARNING: %d swapin MD5 mismatches\n", + md5_mismatches); + return false; + } + return true; +} diff --git a/src/StoreMetaMD5.h b/src/StoreMetaMD5.h new file mode 100644 index 0000000000..54651254f5 --- /dev/null +++ b/src/StoreMetaMD5.h @@ -0,0 +1,54 @@ + +/* + * $Id: StoreMetaMD5.h,v 1.1 2003/01/23 00:37:14 robertc Exp $ + * + * + * 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. + * + */ + +#ifndef SQUID_STOREMETAMD5_H +#define SQUID_STOREMETAMD5_H + +#include "StoreMeta.h" + +class StoreMetaMD5 : public StoreMeta { +public: + void *operator new (size_t); + void operator delete (void *); + void deleteSelf(); + + char getType() const {return STORE_META_KEY_MD5;} + bool validLength(int) const; + bool checkConsistency(StoreEntry *) const; + +private: + static MemPool *pool; + static int md5_mismatches; +}; + +#endif /* SQUID_STOREMETAMD5_H */ diff --git a/src/StoreMetaSTD.cc b/src/StoreMetaSTD.cc new file mode 100644 index 0000000000..2fe3b271d9 --- /dev/null +++ b/src/StoreMetaSTD.cc @@ -0,0 +1,69 @@ + +/* + * $Id: StoreMetaSTD.cc,v 1.1 2003/01/23 00:37:15 robertc Exp $ + * + * DEBUG: section 20 Storage Manager Swapfile Metadata + * AUTHOR: Kostas Anagnostakis + * + * 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 "StoreMetaSTD.h" +#include "Store.h" +#include "MemObject.h" + +MemPool *StoreMetaSTD::pool = NULL; + +void * +StoreMetaSTD::operator new (size_t byteCount) +{ + /* derived classes with different sizes must implement their own new */ + assert (byteCount == sizeof (StoreMetaSTD)); + if (!pool) + pool = memPoolCreate("StoreMetaSTD", sizeof (StoreMetaSTD)); + return memPoolAlloc(pool); +} + +void +StoreMetaSTD::operator delete (void *address) +{ + memPoolFree(pool, address); +} + +void +StoreMetaSTD::deleteSelf() +{ + delete this; +} + +bool +StoreMetaSTD::validLength(int len) const +{ + return len == STORE_HDR_METASIZE; +} diff --git a/src/StoreMetaSTD.h b/src/StoreMetaSTD.h new file mode 100644 index 0000000000..1c78e8bb5d --- /dev/null +++ b/src/StoreMetaSTD.h @@ -0,0 +1,53 @@ + +/* + * $Id: StoreMetaSTD.h,v 1.1 2003/01/23 00:37:15 robertc Exp $ + * + * + * 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. + * + */ + +#ifndef SQUID_STOREMETASTD_H +#define SQUID_STOREMETASTD_H + +#include "StoreMeta.h" + +class StoreMetaSTD : public StoreMeta { +public: + void *operator new (size_t); + void operator delete (void *); + void deleteSelf(); + + char getType() const {return STORE_META_STD;} + bool validLength(int) const; +// bool checkConsistency(StoreEntry *) const; + +private: + static MemPool *pool; +}; + +#endif /* SQUID_STOREMETASTD_H */ diff --git a/src/StoreMetaURL.cc b/src/StoreMetaURL.cc new file mode 100644 index 0000000000..57bc9b2684 --- /dev/null +++ b/src/StoreMetaURL.cc @@ -0,0 +1,77 @@ + +/* + * $Id: StoreMetaURL.cc,v 1.1 2003/01/23 00:37:15 robertc Exp $ + * + * DEBUG: section 20 Storage Manager Swapfile Metadata + * AUTHOR: Kostas Anagnostakis + * + * 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 "StoreMetaURL.h" +#include "Store.h" +#include "MemObject.h" + +MemPool *StoreMetaURL::pool = NULL; + +void * +StoreMetaURL::operator new (size_t byteCount) +{ + /* derived classes with different sizes must implement their own new */ + assert (byteCount == sizeof (StoreMetaURL)); + if (!pool) + pool = memPoolCreate("StoreMetaURL", sizeof (StoreMetaURL)); + return memPoolAlloc(pool); +} + +void +StoreMetaURL::operator delete (void *address) +{ + memPoolFree(pool, address); +} + +void +StoreMetaURL::deleteSelf() +{ + delete this; +} + +bool +StoreMetaURL::checkConsistency(StoreEntry *e) const +{ + assert (getType() == STORE_META_URL); + if (!e->mem_obj->url) + return true; + if (strcasecmp(e->mem_obj->url, (char *)value)) { + debug(20, 1) ("storeClientReadHeader: URL mismatch\n"); + debug(20, 1) ("\t{%s} != {%s}\n", (char *) value, e->mem_obj->url); + return false; + } + return true; +} diff --git a/src/StoreMetaURL.h b/src/StoreMetaURL.h new file mode 100644 index 0000000000..747c4d2da6 --- /dev/null +++ b/src/StoreMetaURL.h @@ -0,0 +1,52 @@ + +/* + * $Id: StoreMetaURL.h,v 1.1 2003/01/23 00:37:15 robertc Exp $ + * + * + * 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. + * + */ + +#ifndef SQUID_STOREMETAURL_H +#define SQUID_STOREMETAURL_H + +#include "StoreMeta.h" + +class StoreMetaURL : public StoreMeta { +public: + void *operator new (size_t); + void operator delete (void *); + void deleteSelf(); + + char getType() const {return STORE_META_URL;} + bool checkConsistency(StoreEntry *) const; + +private: + static MemPool *pool; +}; + +#endif /* SQUID_STOREMETAURL_H */ diff --git a/src/StoreMetaUnpacker.cc b/src/StoreMetaUnpacker.cc new file mode 100644 index 0000000000..1fb726d8c0 --- /dev/null +++ b/src/StoreMetaUnpacker.cc @@ -0,0 +1,123 @@ + +/* + * $Id: StoreMetaUnpacker.cc,v 1.1 2003/01/23 00:37:15 robertc Exp $ + * + * DEBUG: section 20 Storage Manager Swapfile Unpacker + * AUTHOR: Robert Collins + * + * 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 "StoreMetaUnpacker.h" +#include "StoreMeta.h" + +off_t const StoreMetaUnpacker::MinimumBufferLength = sizeof(char) + sizeof(int); + +bool +StoreMetaUnpacker::isBufferSane() +{ + if (buf[0] != (char) STORE_META_OK) + return false; + /* + * sanity check on 'buflen' value. It should be at least big + * enough to hold one type and one length. + */ + getBufferLength(); + if (*hdr_len <= MinimumBufferLength) + return false; + if (*hdr_len > buflen) + return false; + return true; +} + +void +StoreMetaUnpacker::getBufferLength() +{ + xmemcpy(hdr_len, &buf[1], sizeof(int)); +} + +StoreMetaUnpacker::StoreMetaUnpacker (char const *aBuffer, ssize_t aLen, int *anInt) : buf (aBuffer), buflen(aLen), hdr_len(anInt), position(1 + sizeof(int)) +{ + assert (aBuffer != NULL); +} + +void +StoreMetaUnpacker::getType() +{ + type = buf[position++]; +} + +void +StoreMetaUnpacker::getLength() +{ + xmemcpy(&length, &buf[position], sizeof(int)); + position += sizeof(int); +} + +bool +StoreMetaUnpacker::doOneEntry() +{ + getType(); + getLength(); + if (position + length > *hdr_len) { + debug(20, 0) ("storeSwapMetaUnpack: overflow!\n"); + debug(20, 0) ("\ttype=%d, length=%d, *hdr_len=%d, offset=%d\n", + type, length, *hdr_len, (int) position); + return false; + } + StoreMeta *newNode = StoreMeta::Factory(type, length, &buf[position]); + if (!newNode) + return false; + tail = StoreMeta::Add (tail, newNode); + position += length; + return true; +} + +bool +StoreMetaUnpacker::moreToProcess() const +{ + return *hdr_len - position - MinimumBufferLength > 0; +} + +StoreMeta * +StoreMetaUnpacker::createStoreMeta () +{ + tlv *TLV = NULL; + tail = &TLV; + assert(hdr_len != NULL); + if (!isBufferSane()) + return NULL; + getBufferLength(); + assert (position == 1 + sizeof(int)); + while (moreToProcess()) { + if (!doOneEntry()) + break; + } + return TLV; +} diff --git a/src/StoreMetaUnpacker.h b/src/StoreMetaUnpacker.h new file mode 100644 index 0000000000..bc427eba4a --- /dev/null +++ b/src/StoreMetaUnpacker.h @@ -0,0 +1,71 @@ + +/* + * $Id: StoreMetaUnpacker.h,v 1.1 2003/01/23 00:37:15 robertc Exp $ + * + * + * 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. + * + */ + +#ifndef SQUID_TYPELENGTHVALUEUNPACKER_H +#define SQUID_TYPELENGTHVALUEUNPACKER_H + +class StoreMeta; +class StoreMetaUnpacker { +public: + StoreMetaUnpacker (const char *buf, ssize_t bufferLength, int *hdrlen); + StoreMeta *createStoreMeta(); + bool isBufferSane(); +private: + static off_t const MinimumBufferLength; + + void getBufferLength(); + void getType(); + void getLength(); + void getTLV(); + bool doOneEntry(); + bool moreToProcess() const; + + char const * const buf; + ssize_t buflen; + int *hdr_len; + off_t position; + char type; + int length; + StoreMeta **tail; +}; + +/* + * store_swapmeta.c + */ +SQUIDCEXTERN char *storeSwapMetaPack(StoreMeta * tlv_list, int *length); +SQUIDCEXTERN StoreMeta *storeSwapMetaBuild(StoreEntry * e); +SQUIDCEXTERN StoreMeta *storeSwapMetaUnpack(const char *buf, int *hdrlen); +SQUIDCEXTERN void storeSwapTLVFree(StoreMeta * n); +StoreMeta ** storeSwapTLVAdd(int type, const void *ptr, size_t len, StoreMeta ** tail); + +#endif /* SQUID_TYPELENGTHVALUEUNPACKER_H */ diff --git a/src/StoreMetaVary.cc b/src/StoreMetaVary.cc new file mode 100644 index 0000000000..83b4863a82 --- /dev/null +++ b/src/StoreMetaVary.cc @@ -0,0 +1,78 @@ + +/* + * $Id: StoreMetaVary.cc,v 1.1 2003/01/23 00:37:15 robertc Exp $ + * + * DEBUG: section 20 Storage Manager Swapfile Metadata + * AUTHOR: Kostas Anagnostakis + * + * 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 "StoreMetaVary.h" +#include "Store.h" +#include "MemObject.h" + +MemPool *StoreMetaVary::pool = NULL; + +void * +StoreMetaVary::operator new (size_t byteCount) +{ + /* derived classes with different sizes must implement their own new */ + assert (byteCount == sizeof (StoreMetaVary)); + if (!pool) + pool = memPoolCreate("StoreMetaVary", sizeof (StoreMetaVary)); + return memPoolAlloc(pool); +} + +void +StoreMetaVary::operator delete (void *address) +{ + memPoolFree(pool, address); +} + +void +StoreMetaVary::deleteSelf() +{ + delete this; +} + +bool +StoreMetaVary::checkConsistency(StoreEntry *e) const +{ + assert (getType() == STORE_META_VARY_HEADERS); + if (!e->mem_obj->vary_headers) { + /* XXX separate this mutator from the query */ + /* Assume the object is OK.. remember the vary request headers */ + e->mem_obj->vary_headers = xstrdup((char *)value); + return true; + } + if (strcmp(e->mem_obj->vary_headers, (char *)value) != 0) + return false; + return true; +} diff --git a/src/StoreMetaVary.h b/src/StoreMetaVary.h new file mode 100644 index 0000000000..58a6a0ba31 --- /dev/null +++ b/src/StoreMetaVary.h @@ -0,0 +1,52 @@ + +/* + * $Id: StoreMetaVary.h,v 1.1 2003/01/23 00:37:15 robertc Exp $ + * + * + * 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. + * + */ + +#ifndef SQUID_STOREMETAVARY_H +#define SQUID_STOREMETAVARY_H + +#include "StoreMeta.h" + +class StoreMetaVary : public StoreMeta { +public: + void *operator new (size_t); + void operator delete (void *); + void deleteSelf(); + + char getType() const {return STORE_META_VARY_HEADERS;} + bool checkConsistency(StoreEntry *) const; + +private: + static MemPool *pool; +}; + +#endif /* SQUID_STOREMETAVARY_H */ diff --git a/src/String.cc b/src/String.cc index c9d4d0a21f..3f59c381f0 100644 --- a/src/String.cc +++ b/src/String.cc @@ -1,6 +1,6 @@ /* - * $Id: String.cc,v 1.11 2002/10/13 20:34:57 robertc Exp $ + * $Id: String.cc,v 1.12 2003/01/23 00:37:15 robertc Exp $ * * DEBUG: section 67 String * AUTHOR: Duane Wessels @@ -35,77 +35,132 @@ #include "squid.h" -static void -stringInitBuf(String * s, size_t sz) +String const String::Null; + +void +String::initBuf(size_t sz) { - s->buf = (char *)memAllocString(sz, &sz); + buf_ = (char *)memAllocString(sz, &sz); assert(sz < 65536); - s->size = sz; + size_ = sz; } void -stringInit(String * s, const char *str) +String::init(char const *str) { - assert(s); + assert(this); if (str) - stringLimitInit(s, str, strlen(str)); + limitInit(str, strlen(str)); else - *s = StringNull; + clean(); } +String::String (char const *aString) : size_(0), len_(0), buf_(NULL) +{ + init (aString); +} + +String & +String::operator =(char const *aString) +{ + clean(); + init (aString); + return *this; +} + +String & +String::operator = (String const &old) +{ + clean (); + if (old.len_) + limitInit (old.buf_, old.len_); + return *this; +} + void -stringLimitInit(String * s, const char *str, int len) +String::limitInit(const char *str, int len) { - assert(s && str); - stringInitBuf(s, len + 1); - s->len = len; - xmemcpy(s->buf, str, len); - s->buf[len] = '\0'; + assert(this && str); + initBuf(len + 1); + len_ = len; + xmemcpy(buf_, str, len); + buf_[len] = '\0'; } -String -stringDup(const String * s) +String::String (String const &old) : size_(0), len_(0), buf_(NULL) { - String dup; - assert(s); - stringInit(&dup, s->buf); - return dup; + init (old.buf_); } void -stringClean(String * s) +String::clean() +{ + assert(this); + if (buf_) + memFreeString(size_, buf_); + len_ = 0; + size_ = 0; + buf_ = NULL; +} + +String::~String() { - assert(s); - if (s->buf) - memFreeString(s->size, s->buf); - *s = StringNull; + clean(); } void -stringReset(String * s, const char *str) +String::reset(const char *str) { - stringClean(s); - stringInit(s, str); + clean(); + init(str); } void -stringAppend(String * s, const char *str, int len) +String::append(const char *str, int len) { - assert(s); + assert(this); assert(str && len >= 0); - if (s->len + len < s->size) { - strncat(s->buf, str, len); - s->len += len; + if (len_ + len < size_) { + strncat(buf_, str, len); + len_ += len; } else { - String snew = StringNull; - snew.len = s->len + len; - stringInitBuf(&snew, snew.len + 1); - if (s->buf) - xmemcpy(snew.buf, s->buf, s->len); + String snew; + snew.len_ = len_ + len; + snew.initBuf(snew.len_ + 1); + if (buf_) + xmemcpy(snew.buf_, buf_, len_); if (len) - xmemcpy(snew.buf + s->len, str, len); - snew.buf[snew.len] = '\0'; - stringClean(s); - *s = snew; + xmemcpy(snew.buf_ + len_, str, len); + snew.buf_[snew.len_] = '\0'; + absorb(snew); } } + +void +String::append(char const *str) +{ + assert (str); + append (str, strlen(str)); +} + +void +String::append(String const &old) +{ + append (old.buf_, old.len_); +} + +void +String::absorb(String &old) +{ + clean(); + size_ = old.size_; + buf_ = old.buf_; + len_ = old.len_; + old.size_ = 0; + old.buf_ = NULL; + old.len_ = 0; +} + +#ifndef _USE_INLINE_ +#include "String.cci" +#endif diff --git a/src/String.cci b/src/String.cci new file mode 100644 index 0000000000..239ad0990b --- /dev/null +++ b/src/String.cci @@ -0,0 +1,56 @@ + +/* + * $Id: String.cci,v 1.1 2003/01/23 00:37:15 robertc Exp $ + * + * DEBUG: section 67 String + * AUTHOR: Duane Wessels + * + * 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. + * + */ + +String::String() : size_(0), len_(0), buf_ (NULL) +{ +} + +int +String::size() const +{ + return len_; +} + +char const * +String::buf() const +{ + return buf_; +} + +int +String::nCaseCmp (char const *aString, int aLen) const +{ + return strncasecmp(buf(), aString, aLen); +} diff --git a/src/String.h b/src/String.h new file mode 100644 index 0000000000..bf0d2b0665 --- /dev/null +++ b/src/String.h @@ -0,0 +1,87 @@ + +/* + * $Id: String.h,v 1.1 2003/01/23 00:37:15 robertc Exp $ + * + * DEBUG: section 67 String + * AUTHOR: Duane Wessels + * + * 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. + * + */ + +#ifndef SQUID_STRING_H +#define SQUID_STRING_H + +class String { +public: + static const String Null; + _SQUID_INLINE_ String(); + String (char const *); + String (String const &); + ~String(); + + String &operator =(char const *); + String &operator =(String const &); + + _SQUID_INLINE_ int size() const; + _SQUID_INLINE_ char const * buf() const; + void init (char const *); + void initBuf(size_t sz); + void limitInit(const char *str, int len); + void clean(); + void reset(char const *str); + void append(char const *buf, int len); + void append(char const *buf); + void append (String const &); + void absorb(String &old); + _SQUID_INLINE_ int nCaseCmp (char const *aString, int aLen) const; +private: + /* never reference these directly! */ + unsigned short int size_; /* buffer size; 64K limit */ +public: + unsigned short int len_; /* current length */ + char *buf_; +}; + +#define StringNull String::Null; +/* String */ +#define strChr(s,ch) ((const char*)strchr((s).buf(), (ch))) +#define strRChr(s,ch) ((const char*)strrchr((s).buf(), (ch))) +#define strStr(s,str) ((const char*)strstr((s).buf(), (str))) +#define strCmp(s,str) strcmp((s).buf(), (str)) +#define strNCmp(s,str,n) strncmp((s).buf(), (str), (n)) +#define strCaseCmp(s,str) strcasecmp((s).buf(), (str)) +#define strSet(s,ptr,ch) (s).buf_[ptr-(s).buf_] = (ch) +#define strCut(s,pos) (((s).len_ = pos) , ((s).buf_[pos] = '\0')) +#define strCutPtr(s,ptr) (((s).len_ = (ptr)-(s).buf_) , ((s).buf_[(s).len_] = '\0')) + +#ifdef _USE_INLINE_ +#include "String.cci" +#endif + +#endif /* SQUID_STRING_H */ + diff --git a/src/SwapDir.cc b/src/SwapDir.cc index 136fa51ab8..4043482682 100644 --- a/src/SwapDir.cc +++ b/src/SwapDir.cc @@ -1,6 +1,6 @@ /* - * $Id: SwapDir.cc,v 1.1 2002/12/27 10:26:33 robertc Exp $ + * $Id: SwapDir.cc,v 1.2 2003/01/23 00:37:15 robertc Exp $ * * DEBUG: section ?? Swap Dir base object * AUTHOR: Robert Collins diff --git a/src/SwapDir.h b/src/SwapDir.h index 2d7d03ac77..6c59848e0f 100644 --- a/src/SwapDir.h +++ b/src/SwapDir.h @@ -1,6 +1,6 @@ /* - * $Id: SwapDir.h,v 1.1 2002/12/27 10:26:33 robertc Exp $ + * $Id: SwapDir.h,v 1.2 2003/01/23 00:37:15 robertc Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -97,5 +97,4 @@ public: int blksize; } fs; }; - #endif /* SQUID_SWAPDIR_H */ diff --git a/src/access_log.cc b/src/access_log.cc index cea56388ee..56aa03b719 100644 --- a/src/access_log.cc +++ b/src/access_log.cc @@ -1,6 +1,6 @@ /* - * $Id: access_log.cc,v 1.78 2002/12/06 23:19:13 hno Exp $ + * $Id: access_log.cc,v 1.79 2003/01/23 00:37:15 robertc Exp $ * * DEBUG: section 46 Access Log * AUTHOR: Duane Wessels diff --git a/src/acl.cc b/src/acl.cc index 0e109c3dd5..b2a850b3c1 100644 --- a/src/acl.cc +++ b/src/acl.cc @@ -1,5 +1,5 @@ /* - * $Id: acl.cc,v 1.294 2002/12/11 11:57:38 robertc Exp $ + * $Id: acl.cc,v 1.295 2003/01/23 00:37:15 robertc Exp $ * * DEBUG: section 28 Access Control * AUTHOR: Duane Wessels @@ -34,6 +34,7 @@ #include "squid.h" #include "splay.h" +#include "HttpRequest.h" #include "authenticate.h" static void aclParseDomainList(void *curlist); @@ -1662,7 +1663,7 @@ aclMatchAcl(acl * ae, aclCheck_t * checklist) return aclMatchTime((acl_time_data *)ae->data, squid_curtime); /* NOTREACHED */ case ACL_URLPATH_REGEX: - esc_buf = xstrdup(strBuf(r->urlpath)); + esc_buf = xstrdup(r->urlpath.buf()); rfc1738_unescape(esc_buf); k = aclMatchRegex((relist *)ae->data, esc_buf); safe_free(esc_buf); diff --git a/src/asn.cc b/src/asn.cc index 098639b5f6..c740277371 100644 --- a/src/asn.cc +++ b/src/asn.cc @@ -1,6 +1,6 @@ /* - * $Id: asn.cc,v 1.87 2003/01/17 08:21:51 robertc Exp $ + * $Id: asn.cc,v 1.88 2003/01/23 00:37:16 robertc Exp $ * * DEBUG: section 53 AS Number handling * AUTHOR: Duane Wessels, Kostas Anagnostakis @@ -35,6 +35,7 @@ #include "squid.h" #include "radix.h" +#include "HttpRequest.h" #include "StoreClient.h" #include "Store.h" @@ -73,6 +74,7 @@ struct _ASState { off_t offset; int reqofs; char reqbuf[AS_REQBUF_SZ]; + bool dataRead; }; typedef struct _ASState ASState; @@ -193,8 +195,8 @@ asnCacheStart(int as) StoreEntry *e; request_t *req; ASState *asState; - StoreIOBuffer readBuffer = EMPTYIOBUFFER; asState = cbdataAlloc(ASState); + asState->dataRead = 0; debug(53, 3) ("asnCacheStart: AS %d\n", as); snprintf(asres, 4096, "whois://%s/!gAS%d", Config.as_whois_server, as); asState->as_number = as; @@ -212,9 +214,7 @@ asnCacheStart(int as) asState->entry = e; asState->offset = 0; asState->reqofs = 0; - readBuffer.offset = asState->offset; - readBuffer.length = AS_REQBUF_SZ; - readBuffer.data = asState->reqbuf; + StoreIOBuffer readBuffer (AS_REQBUF_SZ, asState->offset, asState->reqbuf); storeClientCopy(asState->sc, e, readBuffer, @@ -240,14 +240,15 @@ asHandleReply(void *data, StoreIOBuffer result) asStateFree(asState); return; } - if (result.length == 0 && e->mem_obj->inmem_hi > 0) { + if (result.length == 0 && asState->dataRead) { + debug(53, 3) ("asHandleReply: Done: %s\n", storeUrl(e)); asStateFree(asState); return; } else if (result.flags.error) { debug(53, 1) ("asHandleReply: Called with Error set and size=%u\n", (unsigned int) result.length); asStateFree(asState); return; - } else if (HTTP_OK != e->mem_obj->reply->sline.status) { + } else if (HTTP_OK != e->getReply()->sline.status) { debug(53, 1) ("WARNING: AS %d whois request failed\n", asState->as_number); asStateFree(asState); @@ -273,6 +274,7 @@ asHandleReply(void *data, StoreIOBuffer result) debug(53, 3) ("asHandleReply: AS# %s (%d)\n", s, asState->as_number); asnAddNet(s, asState->as_number); s = t + 1; + asState->dataRead = 1; } /* @@ -296,19 +298,18 @@ asHandleReply(void *data, StoreIOBuffer result) asState->reqofs = leftoversz; debug(53, 3) ("asState->offset = %ld\n", (long int) asState->offset); if (e->store_status == STORE_PENDING) { - StoreIOBuffer tempBuffer = EMPTYIOBUFFER; debug(53, 3) ("asHandleReply: store_status == STORE_PENDING: %s\n", storeUrl(e)); - tempBuffer.offset = asState->offset; - tempBuffer.length = AS_REQBUF_SZ - asState->reqofs; - tempBuffer.data = asState->reqbuf + asState->reqofs; + StoreIOBuffer tempBuffer (AS_REQBUF_SZ - asState->reqofs, + asState->offset, + asState->reqbuf + asState->reqofs); storeClientCopy(asState->sc, e, tempBuffer, asHandleReply, asState); - } else if (asState->offset < e->mem_obj->inmem_hi) { - StoreIOBuffer tempBuffer = EMPTYIOBUFFER; - debug(53, 3) ("asHandleReply: asState->offset < e->mem_obj->inmem_hi %s\n", storeUrl(e)); + } else { + StoreIOBuffer tempBuffer; + debug(53, 3) ("asHandleReply: store complete, but data recieved %s\n", storeUrl(e)); tempBuffer.offset = asState->offset; tempBuffer.length = AS_REQBUF_SZ - asState->reqofs; tempBuffer.data = asState->reqbuf + asState->reqofs; @@ -317,9 +318,6 @@ asHandleReply(void *data, StoreIOBuffer result) tempBuffer, asHandleReply, asState); - } else { - debug(53, 3) ("asHandleReply: Done: %s\n", storeUrl(e)); - asStateFree(asState); } } diff --git a/src/auth/Makefile.am b/src/auth/Makefile.am index 871c904d77..7f691e89dd 100644 --- a/src/auth/Makefile.am +++ b/src/auth/Makefile.am @@ -1,6 +1,6 @@ # Makefile for authentication modules in the Squid Object Cache server # -# $Id: Makefile.am,v 1.2 2002/10/13 20:35:16 robertc Exp $ +# $Id: Makefile.am,v 1.3 2003/01/23 00:37:50 robertc Exp $ # AUTOMAKE_OPTIONS = subdir-objects AM_CXXFLAGS = -Werror -Wall diff --git a/src/auth/Makefile.in b/src/auth/Makefile.in index e2b6f46c85..d8e9c4a9ed 100644 --- a/src/auth/Makefile.in +++ b/src/auth/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -12,12 +13,6 @@ # PARTICULAR PURPOSE. @SET_MAKE@ - -# Makefile for authentication modules in the Squid Object Cache server -# -# $Id: Makefile.in,v 1.23 2002/10/25 03:48:57 robertc Exp $ -# - SHELL = @SHELL@ srcdir = @srcdir@ @@ -48,9 +43,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -62,6 +61,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -79,7 +82,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -92,7 +94,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -109,6 +110,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -118,6 +120,10 @@ am__quote = @am__quote@ install_sh = @install_sh@ makesnmplib = @makesnmplib@ +# Makefile for authentication modules in the Squid Object Cache server +# +# $Id: Makefile.in,v 1.24 2003/01/23 00:37:50 robertc Exp $ +# AUTOMAKE_OPTIONS = subdir-objects AM_CXXFLAGS = -Werror -Wall @@ -156,9 +162,10 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/basic/auth_basic.Po \ -@AMDEP_TRUE@ $(DEPDIR)/digest/auth_digest.Po \ -@AMDEP_TRUE@ $(DEPDIR)/ntlm/auth_ntlm.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = basic/$(DEPDIR)/auth_basic.Po \ +@AMDEP_TRUE@ digest/$(DEPDIR)/auth_digest.Po \ +@AMDEP_TRUE@ ntlm/$(DEPDIR)/auth_ntlm.Po CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) @@ -183,22 +190,18 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign src/auth/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status - -AR = ar + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) basic/.dirstamp: @$(mkinstalldirs) basic @: > basic/.dirstamp -$(DEPDIR)/basic/.dirstamp: - @$(mkinstalldirs) $(DEPDIR)/basic - @: > $(DEPDIR)/basic/.dirstamp +basic/$(DEPDIR)/.dirstamp: + @$(mkinstalldirs) basic/$(DEPDIR) + @: > basic/$(DEPDIR)/.dirstamp basic/auth_basic.$(OBJEXT): basic/auth_basic.cc basic/.dirstamp \ - $(DEPDIR)/basic/.dirstamp + basic/$(DEPDIR)/.dirstamp libbasic.a: $(libbasic_a_OBJECTS) $(libbasic_a_DEPENDENCIES) -rm -f libbasic.a $(libbasic_a_AR) libbasic.a $(libbasic_a_OBJECTS) $(libbasic_a_LIBADD) @@ -206,11 +209,11 @@ libbasic.a: $(libbasic_a_OBJECTS) $(libbasic_a_DEPENDENCIES) digest/.dirstamp: @$(mkinstalldirs) digest @: > digest/.dirstamp -$(DEPDIR)/digest/.dirstamp: - @$(mkinstalldirs) $(DEPDIR)/digest - @: > $(DEPDIR)/digest/.dirstamp +digest/$(DEPDIR)/.dirstamp: + @$(mkinstalldirs) digest/$(DEPDIR) + @: > digest/$(DEPDIR)/.dirstamp digest/auth_digest.$(OBJEXT): digest/auth_digest.cc digest/.dirstamp \ - $(DEPDIR)/digest/.dirstamp + digest/$(DEPDIR)/.dirstamp libdigest.a: $(libdigest_a_OBJECTS) $(libdigest_a_DEPENDENCIES) -rm -f libdigest.a $(libdigest_a_AR) libdigest.a $(libdigest_a_OBJECTS) $(libdigest_a_LIBADD) @@ -218,11 +221,11 @@ libdigest.a: $(libdigest_a_OBJECTS) $(libdigest_a_DEPENDENCIES) ntlm/.dirstamp: @$(mkinstalldirs) ntlm @: > ntlm/.dirstamp -$(DEPDIR)/ntlm/.dirstamp: - @$(mkinstalldirs) $(DEPDIR)/ntlm - @: > $(DEPDIR)/ntlm/.dirstamp +ntlm/$(DEPDIR)/.dirstamp: + @$(mkinstalldirs) ntlm/$(DEPDIR) + @: > ntlm/$(DEPDIR)/.dirstamp ntlm/auth_ntlm.$(OBJEXT): ntlm/auth_ntlm.cc ntlm/.dirstamp \ - $(DEPDIR)/ntlm/.dirstamp + ntlm/$(DEPDIR)/.dirstamp libntlm.a: $(libntlm_a_OBJECTS) $(libntlm_a_DEPENDENCIES) -rm -f libntlm.a $(libntlm_a_AR) libntlm.a $(libntlm_a_OBJECTS) $(libntlm_a_LIBADD) @@ -236,25 +239,25 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c - -rm -f $(DEPDIR)/basic/.dirstamp - -rm -f $(DEPDIR)/digest/.dirstamp - -rm -f $(DEPDIR)/ntlm/.dirstamp + -rm -f basic/$(DEPDIR)/.dirstamp -rm -f basic/.dirstamp + -rm -f digest/$(DEPDIR)/.dirstamp -rm -f digest/.dirstamp + -rm -f ntlm/$(DEPDIR)/.dirstamp -rm -f ntlm/.dirstamp -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/basic/auth_basic.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/digest/auth_digest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ntlm/auth_ntlm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@basic/$(DEPDIR)/auth_basic.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@digest/$(DEPDIR)/auth_digest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ntlm/$(DEPDIR)/auth_ntlm.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf basic/$(DEPDIR) digest/$(DEPDIR) ntlm/$(DEPDIR) .cc.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< + $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< .cc.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -264,89 +267,97 @@ distclean-depend: basic/auth_basic.o: basic/auth_basic.cc @AMDEP_TRUE@ source='basic/auth_basic.cc' object='basic/auth_basic.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/basic/auth_basic.Po' tmpdepfile='$(DEPDIR)/basic/auth_basic.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='basic/$(DEPDIR)/auth_basic.Po' tmpdepfile='basic/$(DEPDIR)/auth_basic.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o basic/auth_basic.o `test -f basic/auth_basic.cc || echo '$(srcdir)/'`basic/auth_basic.cc + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o basic/auth_basic.o `test -f 'basic/auth_basic.cc' || echo '$(srcdir)/'`basic/auth_basic.cc basic/auth_basic.obj: basic/auth_basic.cc @AMDEP_TRUE@ source='basic/auth_basic.cc' object='basic/auth_basic.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/basic/auth_basic.Po' tmpdepfile='$(DEPDIR)/basic/auth_basic.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='basic/$(DEPDIR)/auth_basic.Po' tmpdepfile='basic/$(DEPDIR)/auth_basic.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o basic/auth_basic.obj `cygpath -w basic/auth_basic.cc` digest/auth_digest.o: digest/auth_digest.cc @AMDEP_TRUE@ source='digest/auth_digest.cc' object='digest/auth_digest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/digest/auth_digest.Po' tmpdepfile='$(DEPDIR)/digest/auth_digest.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='digest/$(DEPDIR)/auth_digest.Po' tmpdepfile='digest/$(DEPDIR)/auth_digest.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o digest/auth_digest.o `test -f digest/auth_digest.cc || echo '$(srcdir)/'`digest/auth_digest.cc + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o digest/auth_digest.o `test -f 'digest/auth_digest.cc' || echo '$(srcdir)/'`digest/auth_digest.cc digest/auth_digest.obj: digest/auth_digest.cc @AMDEP_TRUE@ source='digest/auth_digest.cc' object='digest/auth_digest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/digest/auth_digest.Po' tmpdepfile='$(DEPDIR)/digest/auth_digest.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='digest/$(DEPDIR)/auth_digest.Po' tmpdepfile='digest/$(DEPDIR)/auth_digest.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o digest/auth_digest.obj `cygpath -w digest/auth_digest.cc` ntlm/auth_ntlm.o: ntlm/auth_ntlm.cc @AMDEP_TRUE@ source='ntlm/auth_ntlm.cc' object='ntlm/auth_ntlm.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/ntlm/auth_ntlm.Po' tmpdepfile='$(DEPDIR)/ntlm/auth_ntlm.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='ntlm/$(DEPDIR)/auth_ntlm.Po' tmpdepfile='ntlm/$(DEPDIR)/auth_ntlm.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ntlm/auth_ntlm.o `test -f ntlm/auth_ntlm.cc || echo '$(srcdir)/'`ntlm/auth_ntlm.cc + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ntlm/auth_ntlm.o `test -f 'ntlm/auth_ntlm.cc' || echo '$(srcdir)/'`ntlm/auth_ntlm.cc ntlm/auth_ntlm.obj: ntlm/auth_ntlm.cc @AMDEP_TRUE@ source='ntlm/auth_ntlm.cc' object='ntlm/auth_ntlm.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/ntlm/auth_ntlm.Po' tmpdepfile='$(DEPDIR)/ntlm/auth_ntlm.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='ntlm/$(DEPDIR)/auth_ntlm.Po' tmpdepfile='ntlm/$(DEPDIR)/auth_ntlm.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ntlm/auth_ntlm.obj `cygpath -w ntlm/auth_ntlm.cc` CXXDEPMODE = @CXXDEPMODE@ uninstall-info-am: +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -370,6 +381,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -377,7 +389,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/src/auth/basic/auth_basic.cc b/src/auth/basic/auth_basic.cc index 53401f7610..79c979281a 100644 --- a/src/auth/basic/auth_basic.cc +++ b/src/auth/basic/auth_basic.cc @@ -1,5 +1,5 @@ /* - * $Id: auth_basic.cc,v 1.21 2003/01/09 11:44:05 hno Exp $ + * $Id: auth_basic.cc,v 1.22 2003/01/23 00:37:52 robertc Exp $ * * DEBUG: section 29 Authenticator * AUTHOR: Duane Wessels diff --git a/src/auth/digest/auth_digest.cc b/src/auth/digest/auth_digest.cc index 58c4cb2ae6..bf142b6cec 100644 --- a/src/auth/digest/auth_digest.cc +++ b/src/auth/digest/auth_digest.cc @@ -1,6 +1,6 @@ /* - * $Id: auth_digest.cc,v 1.18 2003/01/09 11:44:08 hno Exp $ + * $Id: auth_digest.cc,v 1.19 2003/01/23 00:38:00 robertc Exp $ * * DEBUG: section 29 Authenticator * AUTHOR: Robert Collins @@ -1060,7 +1060,6 @@ authDigestLogUsername(auth_user_request_t * auth_user_request, char *username) static void authenticateDigestDecodeAuth(auth_user_request_t * auth_user_request, const char *proxy_auth) { - String temp; const char *item; const char *p; const char *pos = NULL; @@ -1085,7 +1084,7 @@ authenticateDigestDecodeAuth(auth_user_request_t * auth_user_request, const char while (xisspace(*proxy_auth)) proxy_auth++; - stringInit(&temp, proxy_auth); + String temp (proxy_auth); while (strListGetItem(&temp, ',', &item, &ilen, &pos)) { if ((p = strchr(item, '=')) && (p - item < ilen)) ilen = p++ - item; @@ -1163,7 +1162,7 @@ authenticateDigestDecodeAuth(auth_user_request_t * auth_user_request, const char debug(29, 9) ("authDigestDecodeAuth: Found response '%s'\n", digest_request->response); } } - stringClean(&temp); + temp.clean(); /* now we validate the data given to us */ diff --git a/src/auth/ntlm/auth_ntlm.cc b/src/auth/ntlm/auth_ntlm.cc index 6921dbd784..db26724365 100644 --- a/src/auth/ntlm/auth_ntlm.cc +++ b/src/auth/ntlm/auth_ntlm.cc @@ -1,6 +1,6 @@ /* - * $Id: auth_ntlm.cc,v 1.25 2003/01/09 11:38:59 hno Exp $ + * $Id: auth_ntlm.cc,v 1.26 2003/01/23 00:38:04 robertc Exp $ * * DEBUG: section 29 NTLM Authenticator * AUTHOR: Robert Collins diff --git a/src/authenticate.cc b/src/authenticate.cc index ff4e4abb44..39a6a3d442 100644 --- a/src/authenticate.cc +++ b/src/authenticate.cc @@ -1,6 +1,6 @@ /* - * $Id: authenticate.cc,v 1.48 2003/01/09 07:55:13 robertc Exp $ + * $Id: authenticate.cc,v 1.49 2003/01/23 00:37:16 robertc Exp $ * * DEBUG: section 29 Authenticator * AUTHOR: Robert Collins diff --git a/src/authenticate.h b/src/authenticate.h index fd7161a5fd..2d1a048e7d 100644 --- a/src/authenticate.h +++ b/src/authenticate.h @@ -1,6 +1,6 @@ /* - * $Id: authenticate.h,v 1.3 2002/10/15 09:25:33 robertc Exp $ + * $Id: authenticate.h,v 1.4 2003/01/23 00:37:16 robertc Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ diff --git a/src/cache_cf.cc b/src/cache_cf.cc index 61914b01cf..54de34367c 100644 --- a/src/cache_cf.cc +++ b/src/cache_cf.cc @@ -1,6 +1,6 @@ /* - * $Id: cache_cf.cc,v 1.425 2003/01/09 11:49:04 hno Exp $ + * $Id: cache_cf.cc,v 1.426 2003/01/23 00:37:16 robertc Exp $ * * DEBUG: section 3 Configuration File Parsing * AUTHOR: Harvest Derived diff --git a/src/cache_diff.cc b/src/cache_diff.cc index a1024a88c6..a8682c612e 100644 --- a/src/cache_diff.cc +++ b/src/cache_diff.cc @@ -1,6 +1,6 @@ /* - * $Id: cache_diff.cc,v 1.16 2002/09/01 15:16:33 hno Exp $ + * $Id: cache_diff.cc,v 1.17 2003/01/23 00:37:16 robertc Exp $ * * AUTHOR: Alex Rousskov * diff --git a/src/cache_manager.cc b/src/cache_manager.cc index 5eac0d7861..2f054099c6 100644 --- a/src/cache_manager.cc +++ b/src/cache_manager.cc @@ -1,6 +1,6 @@ /* - * $Id: cache_manager.cc,v 1.27 2002/10/13 20:34:59 robertc Exp $ + * $Id: cache_manager.cc,v 1.28 2003/01/23 00:37:16 robertc Exp $ * * DEBUG: section 16 Cache Manager Objects * AUTHOR: Duane Wessels @@ -34,7 +34,10 @@ */ #include "squid.h" +#include "HttpReply.h" +#include "HttpRequest.h" #include "Store.h" +#include "fde.h" #define MGR_PASSWD_SZ 128 @@ -78,6 +81,7 @@ cachemgrRegister(const char *action, const char *desc, OBJH * handler, int pw_re debug(16, 3) ("cachemgrRegister: Duplicate '%s'\n", action); return; } + assert (strstr (" ", action) == NULL); a = (action_table *)xcalloc(1, sizeof(action_table)); a->action = xstrdup(action); a->desc = xstrdup(desc); @@ -236,12 +240,10 @@ cachemgrStart(int fd, request_t * request, StoreEntry * entry) * password depends on action */ httpHeaderPutAuth(&rep->header, "Basic", mgr->action); - /* move info to the mem_obj->reply */ - httpReplyAbsorb(entry->mem_obj->reply, rep); /* store the reply */ - httpReplySwapOut(entry->mem_obj->reply, entry); + httpReplySwapOut(rep, entry); entry->expires = squid_curtime; - storeComplete(entry); + entry->complete(); cachemgrStateFree(mgr); return; } @@ -255,9 +257,7 @@ cachemgrStart(int fd, request_t * request, StoreEntry * entry) storeBuffer(entry); { http_version_t version; - HttpReply *rep = entry->mem_obj->reply; - /* prove there are no previous reply headers around */ - assert(0 == rep->sline.status); + HttpReply *rep = httpReplyCreate(); httpBuildVersion(&version, 1, 0); httpReplySetHeaders(rep, version, @@ -272,7 +272,7 @@ cachemgrStart(int fd, request_t * request, StoreEntry * entry) a->handler(entry); if (a->flags.atomic) { storeBufferFlush(entry); - storeComplete(entry); + entry->complete(); } cachemgrStateFree(mgr); } diff --git a/src/cachemgr.cc b/src/cachemgr.cc index 2a340f24be..7e643fb1ee 100644 --- a/src/cachemgr.cc +++ b/src/cachemgr.cc @@ -1,6 +1,6 @@ /* - * $Id: cachemgr.cc,v 1.101 2002/11/15 13:10:18 hno Exp $ + * $Id: cachemgr.cc,v 1.102 2003/01/23 00:37:16 robertc Exp $ * * DEBUG: section 0 CGI Cache Manager * AUTHOR: Duane Wessels diff --git a/src/carp.cc b/src/carp.cc index 0bc6b0d083..56f3cc7c44 100644 --- a/src/carp.cc +++ b/src/carp.cc @@ -1,6 +1,6 @@ /* - * $Id: carp.cc,v 1.21 2002/11/10 04:22:03 hno Exp $ + * $Id: carp.cc,v 1.22 2003/01/23 00:37:17 robertc Exp $ * * DEBUG: section 39 Cache Array Routing Protocol * AUTHOR: Henrik Nordstrom diff --git a/src/cbdata.cc b/src/cbdata.cc index 7daa9584a3..f092eecc2b 100644 --- a/src/cbdata.cc +++ b/src/cbdata.cc @@ -1,6 +1,6 @@ /* - * $Id: cbdata.cc,v 1.50 2003/01/22 10:05:43 robertc Exp $ + * $Id: cbdata.cc,v 1.51 2003/01/23 00:37:17 robertc Exp $ * * DEBUG: section 45 Callback Data Registry * ORIGINAL AUTHOR: Duane Wessels @@ -173,7 +173,6 @@ cbdataInit(void) */ CREATE_CBDATA(acl_access); CREATE_CBDATA(aclCheck_t); - CREATE_CBDATA(clientHttpRequest); CREATE_CBDATA(ConnStateData); CREATE_CBDATA(ErrorState); CREATE_CBDATA(FwdState); diff --git a/src/cf.data.pre b/src/cf.data.pre index fc65091b45..3ecbdd1890 100644 --- a/src/cf.data.pre +++ b/src/cf.data.pre @@ -1,6 +1,6 @@ # -# $Id: cf.data.pre,v 1.294 2003/01/18 02:08:59 hno Exp $ +# $Id: cf.data.pre,v 1.295 2003/01/23 00:37:17 robertc Exp $ # # # SQUID Web Proxy Cache http://www.squid-cache.org/ diff --git a/src/cf_gen.cc b/src/cf_gen.cc index 44b16c6fe7..c0919c80d9 100644 --- a/src/cf_gen.cc +++ b/src/cf_gen.cc @@ -1,6 +1,6 @@ /* - * $Id: cf_gen.cc,v 1.48 2002/12/01 21:47:43 robertc Exp $ + * $Id: cf_gen.cc,v 1.49 2003/01/23 00:37:17 robertc Exp $ * * DEBUG: none Generate squid.conf.default and cf_parser.h * AUTHOR: Max Okumoto diff --git a/src/client.cc b/src/client.cc index 56931f2025..6ffaffce3b 100644 --- a/src/client.cc +++ b/src/client.cc @@ -1,6 +1,6 @@ /* - * $Id: client.cc,v 1.102 2003/01/09 11:40:40 hno Exp $ + * $Id: client.cc,v 1.103 2003/01/23 00:37:17 robertc Exp $ * * DEBUG: section 0 WWW Client * AUTHOR: Harvest Derived diff --git a/src/clientStream.cc b/src/clientStream.cc index 908e3f4a6c..6578970a4a 100644 --- a/src/clientStream.cc +++ b/src/clientStream.cc @@ -1,6 +1,6 @@ /* - * $Id: clientStream.cc,v 1.3 2002/10/13 20:34:59 robertc Exp $ + * $Id: clientStream.cc,v 1.4 2003/01/23 00:37:17 robertc Exp $ * * DEBUG: section 87 Client-side Stream routines. * AUTHOR: Robert Collins @@ -56,6 +56,9 @@ #include "squid.h" #include "clientStream.h" +#include "HttpReply.h" +#include "HttpRequest.h" +#include "client_side_request.h" CBDATA_TYPE(clientStreamNode); diff --git a/src/clientStream.h b/src/clientStream.h index e3acd345ad..b602eb0ee8 100644 --- a/src/clientStream.h +++ b/src/clientStream.h @@ -1,6 +1,6 @@ /* - * $Id: clientStream.h,v 1.2 2002/10/13 20:34:59 robertc Exp $ + * $Id: clientStream.h,v 1.3 2003/01/23 00:37:17 robertc Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -37,13 +37,14 @@ #include "StoreIOBuffer.h" typedef struct _clientStreamNode clientStreamNode; +class ClientHttpRequest; /* client stream read callback */ -typedef void CSCB(clientStreamNode *, clientHttpRequest *, HttpReply *, StoreIOBuffer); +typedef void CSCB(clientStreamNode *, ClientHttpRequest *, HttpReply *, StoreIOBuffer); /* client stream read */ -typedef void CSR(clientStreamNode *, clientHttpRequest *); +typedef void CSR(clientStreamNode *, ClientHttpRequest *); /* client stream detach */ -typedef void CSD(clientStreamNode *, clientHttpRequest *); -typedef clientStream_status_t CSS(clientStreamNode *, clientHttpRequest *); +typedef void CSD(clientStreamNode *, ClientHttpRequest *); +typedef clientStream_status_t CSS(clientStreamNode *, ClientHttpRequest *); struct _clientStreamNode { @@ -66,10 +67,10 @@ public: SQUIDCEXTERN void clientStreamInit(dlink_list *, CSR *, CSD *, CSS *, void *, CSCB *, CSD *, void *, StoreIOBuffer tailBuffer); SQUIDCEXTERN void clientStreamInsertHead(dlink_list *, CSR *, CSCB *, CSD *, CSS *, void *); SQUIDCEXTERN clientStreamNode *clientStreamNew(CSR *, CSCB *, CSD *, CSS *, void *); -SQUIDCEXTERN void clientStreamCallback(clientStreamNode *, clientHttpRequest *, HttpReply *, StoreIOBuffer replyBuffer); -SQUIDCEXTERN void clientStreamRead(clientStreamNode *, clientHttpRequest *, StoreIOBuffer readBuffer); -SQUIDCEXTERN void clientStreamDetach(clientStreamNode *, clientHttpRequest *); -SQUIDCEXTERN void clientStreamAbort(clientStreamNode *, clientHttpRequest *); -SQUIDCEXTERN clientStream_status_t clientStreamStatus(clientStreamNode *, clientHttpRequest *); +SQUIDCEXTERN void clientStreamCallback(clientStreamNode *, ClientHttpRequest *, HttpReply *, StoreIOBuffer replyBuffer); +SQUIDCEXTERN void clientStreamRead(clientStreamNode *, ClientHttpRequest *, StoreIOBuffer readBuffer); +SQUIDCEXTERN void clientStreamDetach(clientStreamNode *, ClientHttpRequest *); +SQUIDCEXTERN void clientStreamAbort(clientStreamNode *, ClientHttpRequest *); +SQUIDCEXTERN clientStream_status_t clientStreamStatus(clientStreamNode *, ClientHttpRequest *); #endif /* SQUID_CLIENTSTREAM_H */ diff --git a/src/client_db.cc b/src/client_db.cc index 2b414aa9bc..c3c0f7cba7 100644 --- a/src/client_db.cc +++ b/src/client_db.cc @@ -1,6 +1,6 @@ /* - * $Id: client_db.cc,v 1.55 2002/10/13 20:34:59 robertc Exp $ + * $Id: client_db.cc,v 1.56 2003/01/23 00:37:17 robertc Exp $ * * DEBUG: section 0 Client Database * AUTHOR: Duane Wessels diff --git a/src/client_side.cc b/src/client_side.cc index eb7c4ae39e..6a58b0cb04 100644 --- a/src/client_side.cc +++ b/src/client_side.cc @@ -1,6 +1,6 @@ /* - * $Id: client_side.cc,v 1.611 2002/12/20 05:47:22 robertc Exp $ + * $Id: client_side.cc,v 1.612 2003/01/23 00:37:17 robertc Exp $ * * DEBUG: section 33 Client-side Routines * AUTHOR: Duane Wessels @@ -61,14 +61,16 @@ #include "authenticate.h" #include "Store.h" #include "comm.h" - +#include "HttpReply.h" +#include "HttpRequest.h" +#include "MemObject.h" +#include "fde.h" +#include "client_side_request.h" #if LINGERING_CLOSE #define comm_close comm_lingering_close #endif -#define FAILURE_MODE_TIME 300 - /* Persistent connection logic: * * requests (httpClientRequest structs) get added to the connection @@ -86,7 +88,6 @@ * data flow. */ -typedef class ClientSocketContext clientSocketContext; /* our socket-related context */ class ClientSocketContext { public: @@ -108,18 +109,37 @@ public: StoreIOBuffer queuedBuffer; } deferredparams; off_t writtenToSocket; + void pullData(); + off_t getNextRangeOffset() const; + bool canPackMoreRanges() const; + clientStream_status_t socketState(); + void sendBody(HttpReply * rep, StoreIOBuffer bodyData); + void sendStartOfMessage(HttpReply * rep, StoreIOBuffer bodyData); + size_t lengthToSend(size_t maximum); + void noteSentBodyBytes(size_t); + void buildRangeHeader(HttpReply * rep); + int fd() const; + clientStreamNode * getTail() const; + clientStreamNode * getClientReplyContext() const; + void removeFromConnectionList(ConnStateData * conn); + void deferRecipientForLater(clientStreamNode * node, HttpReply * rep, StoreIOBuffer recievedData); + bool multipartRangeRequest() const; + void packRange(const char **buf, + size_t size, + MemBuf * mb); private: + void prepareReply(HttpReply * rep); bool mayUseConnection_; /* This request may use the connection - * don't read anymore requests for now */ }; -CBDATA_TYPE(clientSocketContext); +CBDATA_TYPE(ClientSocketContext); /* Local functions */ -/* clientSocketContext */ -static FREE clientSocketContextFree; -static clientSocketContext *clientSocketContextNew(clientHttpRequest *); +/* ClientSocketContext */ +static FREE ClientSocketContextFree; +static ClientSocketContext *ClientSocketContextNew(clientHttpRequest *); /* other */ static CWCB clientWriteComplete; static IOWCB clientWriteBodyComplete; @@ -127,10 +147,9 @@ static IOCB clientReadRequest; static PF connStateFree; static PF requestTimeout; static PF clientLifetimeTimeout; -static void checkFailureRatio(err_type, hier_code); -static clientSocketContext *parseHttpRequestAbort(ConnStateData * conn, +static ClientSocketContext *parseHttpRequestAbort(ConnStateData * conn, const char *uri); -static clientSocketContext *parseHttpRequest(ConnStateData *, method_t *, +static ClientSocketContext *parseHttpRequest(ConnStateData *, method_t *, char **, size_t *); #if USE_IDENT static IDCB clientIdentDone; @@ -143,41 +162,32 @@ static DEFER httpAcceptDefer; static int clientIsRequestBodyValid(int bodyLength); static int clientIsRequestBodyTooLargeForPolicy(size_t bodyLength); static void clientProcessBody(ConnStateData * conn); -static clientStreamNode *getTail(clientSocketContext *); -static void clientSocketRemoveThisFromConnectionList(clientSocketContext *, - ConnStateData *); static void clientUpdateStatHistCounters(log_type logType, int svc_time); static void clientUpdateStatCounters(log_type logType); static void clientUpdateHierCounters(HierarchyLogEntry *); -static int clientPingHasFinished(ping_data const *aPing); -static MemObject *clientGetMemObject(clientHttpRequest * http); +static bool clientPingHasFinished(ping_data const *aPing); static void clientPrepareLogWithRequestDetails(request_t *, AccessLogEntry *); -static void clientLogRequest(clientHttpRequest *); -static void httpRequestFreeResources(clientHttpRequest *); static int connIsUsable(ConnStateData * conn); -static clientSocketContext *connGetCurrentContext(ConnStateData * conn); -static void contextDeferRecipientForLater(clientSocketContext * context, clientStreamNode * node, HttpReply * rep, StoreIOBuffer recievedData); -static int responseFinishedOrFailed(HttpReply * rep, StoreIOBuffer recievedData); -static int contextStartOfOutput(clientSocketContext * context); -static void contextSendBody(clientSocketContext * context, HttpReply * rep, StoreIOBuffer bodyData); -static void contextSendStartOfMessage(clientSocketContext * context, HttpReply * rep, StoreIOBuffer bodyData); +static ClientSocketContext *connGetCurrentContext(ConnStateData * conn); +static int responseFinishedOrFailed(HttpReply * rep, StoreIOBuffer const &recievedData); +static int contextStartOfOutput(ClientSocketContext * context); static void connReadNextRequest(ConnStateData * conn); -static void clientSocketContextPushDeferredIfNeeded(clientSocketContext * deferredRequest, ConnStateData * conn); +static void ClientSocketContextPushDeferredIfNeeded(ClientSocketContext * deferredRequest, ConnStateData * conn); static void clientUpdateSocketStats(log_type logType, size_t size); -static clientSocketContext *clientCheckRequestLineIsParseable(char *inbuf, size_t req_sz, ConnStateData * conn); -static clientSocketContext *clientParseRequestMethod(char *inbuf, method_t * method_p, ConnStateData * conn); +static ClientSocketContext *clientCheckRequestLineIsParseable(char *inbuf, size_t req_sz, ConnStateData * conn); +static ClientSocketContext *clientParseRequestMethod(char *inbuf, method_t * method_p, ConnStateData * conn); static char *skipLeadingSpace(char *aString); static char *findTrailingHTTPVersion(char *uriAndHTTPVersion); static void trimTrailingSpaces(char *aString, size_t len); -static clientSocketContext *parseURIandHTTPVersion(char **url_p, http_version_t * http_ver_p, ConnStateData * conn); +static ClientSocketContext *parseURIandHTTPVersion(char **url_p, http_version_t * http_ver_p, ConnStateData * conn); static void setLogUri(clientHttpRequest * http, char const *uri); static void prepareInternalUrl(clientHttpRequest * http, char *url); static void prepareForwardProxyUrl(clientHttpRequest * http, char *url); static void prepareAcceleratedUrl(clientHttpRequest * http, char *url, char *req_hdr); static int connGetAvailableBufferLength(ConnStateData const *conn); static void connMakeSpaceAvailable(ConnStateData * conn); -static void connAddContextToQueue(ConnStateData * conn, clientSocketContext * context); +static void connAddContextToQueue(ConnStateData * conn, ClientSocketContext * context); static int connGetConcurrentRequestCount(ConnStateData * conn); static int connReadWasError(ConnStateData * conn, comm_err_t, int size); static int connFinishedWithConn(ConnStateData * conn, int size); @@ -185,21 +195,27 @@ static void connNoteUseOfBuffer(ConnStateData * conn, size_t byteCount); static int connKeepReadingIncompleteRequest(ConnStateData * conn); static void connCancelIncompleteRequests(ConnStateData * conn); static ConnStateData *connStateCreate(struct sockaddr_in *peer, struct sockaddr_in *me, int fd); -static clientStreamNode *getClientReplyContext(clientSocketContext * context); static int connAreAllContextsForThisConnection(ConnStateData * connState); static void connFreeAllContexts(ConnStateData * connState); -static void clientPullData(clientSocketContext * context); + +int +ClientSocketContext::fd() const +{ + assert (http); + assert (http->conn); + return http->conn->fd; +} clientStreamNode * -getTail(clientSocketContext * context) +ClientSocketContext::getTail() const { - return (clientStreamNode *)context->http->client_stream.tail->data; + return (clientStreamNode *)http->client_stream.tail->data; } clientStreamNode * -getClientReplyContext(clientSocketContext * context) +ClientSocketContext::getClientReplyContext() const { - return (clientStreamNode *)context->http->client_stream.tail->prev->data; + return (clientStreamNode *)http->client_stream.tail->prev->data; } /* @@ -227,30 +243,29 @@ clientReadSomeData(ConnStateData *conn) void -clientSocketRemoveThisFromConnectionList(clientSocketContext * context, - ConnStateData * conn) +ClientSocketContext::removeFromConnectionList(ConnStateData * conn) { - clientSocketContext **tempContextPointer; + ClientSocketContext **tempContextPointer; assert(conn); assert(connGetCurrentContext(conn) != NULL); /* Unlink us from the connection request list */ - tempContextPointer = (clientSocketContext **) & conn->currentobject; + tempContextPointer = (ClientSocketContext **) & conn->currentobject; while (*tempContextPointer) { - if (*tempContextPointer == context) + if (*tempContextPointer == this) break; tempContextPointer = &(*tempContextPointer)->next; } assert(*tempContextPointer != NULL); - *tempContextPointer = context->next; - context->next = NULL; + *tempContextPointer = next; + next = NULL; } void -clientSocketContextFree(void *data) +ClientSocketContextFree(void *data) { - clientSocketContext *context = (clientSocketContext *)data; + ClientSocketContext *context = (ClientSocketContext *)data; ConnStateData *conn = context->http->conn; - clientStreamNode *node = getTail(context); + clientStreamNode *node = context->getTail(); /* We are *always* the tail - prevent recursive free */ assert(context == node->data); node->data = NULL; @@ -258,16 +273,16 @@ clientSocketContextFree(void *data) /* clean up connection links to us */ assert(context != context->next); if (conn) - clientSocketRemoveThisFromConnectionList(context, conn); + context->removeFromConnectionList(conn); } -clientSocketContext * -clientSocketContextNew(clientHttpRequest * http) +ClientSocketContext * +ClientSocketContextNew(clientHttpRequest * http) { - clientSocketContext *newContext; + ClientSocketContext *newContext; assert(http != NULL); - CBDATA_INIT_TYPE_FREECB(clientSocketContext, clientSocketContextFree); - newContext = cbdataAlloc(clientSocketContext); + CBDATA_INIT_TYPE_FREECB(ClientSocketContext, ClientSocketContextFree); + newContext = cbdataAlloc(ClientSocketContext); newContext->http = http; return newContext; } @@ -326,12 +341,12 @@ clientUpdateStatHistCounters(log_type logType, int svc_time) } } -int +bool clientPingHasFinished(ping_data const *aPing) { if (0 != aPing->stop.tv_sec && 0 != aPing->start.tv_sec) - return -1; - return 0; + return true; + return false; } void @@ -359,22 +374,22 @@ clientUpdateHierCounters(HierarchyLogEntry * someEntry) } } -static void -clientUpdateCounters(clientHttpRequest * http) +void +ClientHttpRequest::updateCounters() { - clientUpdateStatCounters(http->logType); - if (http->request->errType != ERR_NONE) + clientUpdateStatCounters(logType); + if (request->errType != ERR_NONE) statCounter.client_http.errors++; - clientUpdateStatHistCounters(http->logType, - tvSubMsec(http->start, current_time)); - clientUpdateHierCounters(&http->request->hier); + clientUpdateStatHistCounters(logType, + tvSubMsec(start, current_time)); + clientUpdateHierCounters(&request->hier); } MemObject * -clientGetMemObject(clientHttpRequest * http) +ClientHttpRequest::memObject() const { - if (http->entry) - return http->entry->mem_obj; + if (entry) + return entry->mem_obj; return NULL; } @@ -404,79 +419,61 @@ clientPrepareLogWithRequestDetails(request_t * request, AccessLogEntry * aLogEnt } void -clientLogRequest(clientHttpRequest * http) -{ - if (http->out.size || http->logType) { - http->al.icp.opcode = ICP_INVALID; - http->al.url = http->log_uri; - debug(33, 9) ("clientLogRequest: al.url='%s'\n", http->al.url); - if (clientGetMemObject(http)) { - http->al.http.code = clientGetMemObject(http)->reply->sline.status; - http->al.http.content_type = strBuf(clientGetMemObject(http)->reply->content_type); +ClientHttpRequest::logRequest() +{ + if (out.size || logType) { + al.icp.opcode = ICP_INVALID; + al.url = log_uri; + debug(33, 9) ("clientLogRequest: al.url='%s'\n", al.url); + if (memObject()) { + al.http.code = memObject()->getReply()->sline.status; + al.http.content_type = memObject()->getReply()->content_type.buf(); } - http->al.cache.caddr = http->conn ? http->conn->log_addr : no_addr; - http->al.cache.size = http->out.size; - http->al.cache.code = http->logType; - http->al.cache.msec = tvSubMsec(http->start, current_time); - if (http->request) - clientPrepareLogWithRequestDetails(http->request, &http->al); - if (http->conn && http->conn->rfc931[0]) - http->al.cache.rfc931 = http->conn->rfc931; + al.cache.caddr = conn ? conn->log_addr : no_addr; + al.cache.size = out.size; + al.cache.code = logType; + al.cache.msec = tvSubMsec(start, current_time); + if (request) + clientPrepareLogWithRequestDetails(request, &al); + if (conn && conn->rfc931[0]) + al.cache.rfc931 = conn->rfc931; #if USE_SSL - if (http->conn) - http->al.cache.ssluser = sslGetUserEmail(fd_table[http->conn->fd].ssl); + if (conn) + al.cache.ssluser = sslGetUserEmail(fd_table[conn->fd].ssl); #endif - accessLogLog(&http->al); - accessLogFreeMemory(&http->al); - clientUpdateCounters(http); - if (http->conn) - clientdbUpdate(http->conn->peer.sin_addr, http->logType, PROTO_HTTP, - http->out.size); + accessLogLog(&al); + accessLogFreeMemory(&al); + updateCounters(); + if (conn) + clientdbUpdate(conn->peer.sin_addr, logType, PROTO_HTTP, out.size); } } void -httpRequestFreeResources(clientHttpRequest * http) +ClientHttpRequest::freeResources() { - safe_free(http->uri); - safe_free(http->log_uri); - safe_free(http->redirect.location); - requestUnlink(http->request); - http->request = NULL; - if (http->client_stream.tail) - clientStreamAbort((clientStreamNode *)http->client_stream.tail->data, http); + safe_free(uri); + safe_free(log_uri); + safe_free(redirect.location); + range_iter.boundary.clean(); + requestUnlink(request); + request = NULL; + if (client_stream.tail) + clientStreamAbort((clientStreamNode *)client_stream.tail->data, this); } void httpRequestFree(void *data) { clientHttpRequest *http = (clientHttpRequest *)data; - request_t *request = NULL; assert(http != NULL); - request = http->request; - debug(33, 3) ("httpRequestFree: %s\n", http->uri); - /* if body_connection !NULL, then ProcessBody has not - * found the end of the body yet - */ - if (request && request->body_connection) - clientAbortBody(request); /* abort body transter */ - /* the ICP check here was erroneous - * - storeReleaseRequest was always called if entry was valid - */ - assert(http->logType < LOG_TYPE_MAX); - clientLogRequest(http); - if (request) - checkFailureRatio(request->errType, http->al.hier.code); - httpRequestFreeResources(http); - /* moving to the next connection is handled by the context free */ - dlinkDelete(&http->active, &ClientActiveRequests); - cbdataFree(http); + delete http; } int connAreAllContextsForThisConnection(ConnStateData * connState) { - clientSocketContext *context; + ClientSocketContext *context; assert(connState != NULL); context = connGetCurrentContext(connState); while (context) { @@ -490,7 +487,7 @@ connAreAllContextsForThisConnection(ConnStateData * connState) void connFreeAllContexts(ConnStateData * connState) { - clientSocketContext *context; + ClientSocketContext *context; while ((context = connGetCurrentContext(connState)) != NULL) { assert(connGetCurrentContext(connState) != connGetCurrentContext(connState)->next); @@ -588,27 +585,27 @@ connIsUsable(ConnStateData * conn) return 1; } -clientSocketContext * +ClientSocketContext * connGetCurrentContext(ConnStateData * conn) { assert(conn); - return (clientSocketContext *)conn->currentobject; + return (ClientSocketContext *)conn->currentobject; } void -contextDeferRecipientForLater(clientSocketContext * context, clientStreamNode * node, HttpReply * rep, StoreIOBuffer recievedData) -{ - debug(33, 2) ("clientSocketRecipient: Deferring %s\n", context->http->uri); - assert(context->flags.deferred == 0); - context->flags.deferred = 1; - context->deferredparams.node = node; - context->deferredparams.rep = rep; - context->deferredparams.queuedBuffer = recievedData; +ClientSocketContext::deferRecipientForLater(clientStreamNode * node, HttpReply * rep, StoreIOBuffer recievedData) +{ + debug(33, 2) ("clientSocketRecipient: Deferring %s\n", http->uri); + assert(flags.deferred == 0); + flags.deferred = 1; + deferredparams.node = node; + deferredparams.rep = rep; + deferredparams.queuedBuffer = recievedData; return; } int -responseFinishedOrFailed(HttpReply * rep, StoreIOBuffer recievedData) +responseFinishedOrFailed(HttpReply * rep, StoreIOBuffer const & recievedData) { if (rep == NULL && recievedData.data == NULL && recievedData.length == 0) return 1; @@ -616,46 +613,375 @@ responseFinishedOrFailed(HttpReply * rep, StoreIOBuffer recievedData) } int -contextStartOfOutput(clientSocketContext * context) +contextStartOfOutput(ClientSocketContext * context) { return context->http->out.size == 0 ? 1 : 0; } +size_t +ClientSocketContext::lengthToSend(size_t maximum) +{ + if (!http->request->range) + return maximum; + assert (canPackMoreRanges()); + if (http->range_iter.debt() == -1) + return maximum; + assert (http->range_iter.debt() > 0); + return XMIN(http->range_iter.debt(), (ssize_t)maximum); +} + void -contextSendBody(clientSocketContext * context, HttpReply * rep, StoreIOBuffer bodyData) +ClientSocketContext::noteSentBodyBytes(size_t bytes) +{ + http->out.offset += bytes; + if (!http->request->range) + return; + if (http->range_iter.debt() != -1) { + http->range_iter.debt(http->range_iter.debt() - bytes); + assert (http->range_iter.debt() >= 0); + } + assert (http->range_iter.debt() == -1 || + http->range_iter.debt() >= 0); +} + +bool +ClientHttpRequest::multipartRangeRequest() const +{ + return request->multipartRangeRequest(); +} + +bool +ClientSocketContext::multipartRangeRequest() const +{ + return http->multipartRangeRequest(); +} + +void +ClientSocketContext::sendBody(HttpReply * rep, StoreIOBuffer bodyData) { assert(rep == NULL); - context->http->out.offset += bodyData.length; - comm_write(context->http->conn->fd, bodyData.data, bodyData.length, - clientWriteBodyComplete, context); + + if (!multipartRangeRequest()) { + size_t length = lengthToSend(bodyData.length); + noteSentBodyBytes (length); + comm_write(fd(), bodyData.data, length, + clientWriteBodyComplete, this); + return; + } + + MemBuf mb; + memBufDefInit(&mb); + char const *t = bodyData.data; + packRange(&t, bodyData.length, &mb); + /* write */ + comm_old_write_mbuf(fd(), mb, clientWriteComplete, this); return; } +/* put terminating boundary for multiparts */ +static void +clientPackTermBound(String boundary, MemBuf * mb) +{ + memBufPrintf(mb, "\r\n--%s--\r\n", boundary.buf()); + debug(33, 6) ("clientPackTermBound: buf offset: %ld\n", (long int) mb->size); +} + +/* appends a "part" HTTP header (as in a multi-part/range reply) to the buffer */ +static void +clientPackRangeHdr(const HttpReply * rep, const HttpHdrRangeSpec * spec, String boundary, MemBuf * mb) +{ + HttpHeader hdr; + Packer p; + assert(rep); + assert(spec); + + /* put boundary */ + debug(33, 5) ("clientPackRangeHdr: appending boundary: %s\n", boundary.buf()); + /* rfc2046 requires to _prepend_ boundary with ! */ + memBufPrintf(mb, "\r\n--%s\r\n", boundary.buf()); + + /* stuff the header with required entries and pack it */ + httpHeaderInit(&hdr, hoReply); + if (httpHeaderHas(&rep->header, HDR_CONTENT_TYPE)) + httpHeaderPutStr(&hdr, HDR_CONTENT_TYPE, httpHeaderGetStr(&rep->header, HDR_CONTENT_TYPE)); + httpHeaderAddContRange(&hdr, *spec, rep->content_length); + packerToMemInit(&p, mb); + httpHeaderPackInto(&hdr, &p); + packerClean(&p); + httpHeaderClean(&hdr); + + /* append (we packed a header, not a reply) */ + memBufPrintf(mb, "\r\n"); +} + +/* + * extracts a "range" from *buf and appends them to mb, updating + * all offsets and such. + */ void -contextSendStartOfMessage(clientSocketContext * context, HttpReply * rep, StoreIOBuffer bodyData) +ClientSocketContext::packRange(const char **buf, + size_t size, + MemBuf * mb) +{ + HttpHdrRangeIter * i = &http->range_iter; + size_t available = size; + while (i->currentSpec() && available) { + const size_t copy_sz = lengthToSend(available); + /* + * intersection of "have" and "need" ranges must not be empty + */ + assert(http->out.offset < i->currentSpec()->offset + i->currentSpec()->length); + assert(http->out.offset + available > (size_t)i->currentSpec()->offset); + + /* + * put boundary and headers at the beginning of a range in a + * multi-range + */ + if (http->multipartRangeRequest() && i->debt() == i->currentSpec()->length) { + assert(http->entry->mem_obj); + clientPackRangeHdr( + http->entry->mem_obj->getReply(), /* original reply */ + i->currentSpec(), /* current range */ + i->boundary, /* boundary, the same for all */ + mb); + } + /* + * append content + */ + debug(33, 3) ("clientPackRange: appending %ld bytes\n", (long int) copy_sz); + noteSentBodyBytes (copy_sz); + memBufAppend(mb, *buf, copy_sz); + /* + * update offsets + */ + available -= copy_sz; + //body_off += copy_sz; + *buf += copy_sz; + /* + * paranoid check + */ + assert(available >= 0 && i->debt() >= 0 || i->debt() == -1); + if (i->debt() == 0) + /* put terminating boundary for multiparts */ + clientPackTermBound(i->boundary, mb); + if (!canPackMoreRanges()) + return; + off_t next = getNextRangeOffset(); + assert (next >= http->out.offset); + size_t skip = next - http->out.offset; + if (available <= skip) + return; + available -= skip; + *buf += skip; + } +} + +/* returns expected content length for multi-range replies + * note: assumes that httpHdrRangeCanonize has already been called + * warning: assumes that HTTP headers for individual ranges at the + * time of the actuall assembly will be exactly the same as + * the headers when clientMRangeCLen() is called */ +int +ClientHttpRequest::mRangeCLen() { + int clen = 0; MemBuf mb; - /* write headers and/or body if any */ - assert(rep || (bodyData.data && bodyData.length)); - /* init mb; put status line and headers if any */ - if (rep) { - mb = httpReplyPack(rep); - /* Save length of headers for persistent conn checks */ - context->http->out.headers_sz = mb.size; -#if HEADERS_LOG - headersLog(0, 0, context->http->request->method, rep); + + assert(entry->mem_obj); + + memBufDefInit(&mb); + HttpHdrRange::iterator pos = request->range->begin(); + while (pos != request->range->end()) { + /* account for headers for this range */ + memBufReset(&mb); + clientPackRangeHdr(entry->mem_obj->getReply(), + *pos, range_iter.boundary, &mb); + clen += mb.size; + + /* account for range content */ + clen += (*pos)->length; + + debug(33, 6) ("clientMRangeCLen: (clen += %ld + %ld) == %d\n", + (long int) mb.size, (long int) (*pos)->length, clen); + ++pos; + } + /* account for the terminating boundary */ + memBufReset(&mb); + clientPackTermBound(range_iter.boundary, &mb); + clen += mb.size; + + memBufClean(&mb); + return clen; +} + +/* + * returns true if If-Range specs match reply, false otherwise + */ +static int +clientIfRangeMatch(clientHttpRequest * http, HttpReply * rep) +{ + const TimeOrTag spec = httpHeaderGetTimeOrTag(&http->request->header, HDR_IF_RANGE); + /* check for parsing falure */ + if (!spec.valid) + return 0; + /* got an ETag? */ + if (spec.tag.str) { + ETag rep_tag = httpHeaderGetETag(&rep->header, HDR_ETAG); + debug(33, 3) ("clientIfRangeMatch: ETags: %s and %s\n", + spec.tag.str, rep_tag.str ? rep_tag.str : ""); + if (!rep_tag.str) + return 0; /* entity has no etag to compare with! */ + if (spec.tag.weak || rep_tag.weak) { + debug(33, 1) ("clientIfRangeMatch: Weak ETags are not allowed in If-Range: %s ? %s\n", + spec.tag.str, rep_tag.str); + return 0; /* must use strong validator for sub-range requests */ + } + return etagIsEqual(&rep_tag, &spec.tag); + } + /* got modification time? */ + if (spec.time >= 0) { + return http->entry->lastmod <= spec.time; + } + assert(0); /* should not happen */ + return 0; +} + +/* generates a "unique" boundary string for multipart responses + * the caller is responsible for cleaning the string */ +String +ClientHttpRequest::rangeBoundaryStr() const +{ + assert(this); + const char *key; + String b (full_appname_string); + b.append (":",1); + key = entry->getMD5Text(); + b.append(key, strlen(key)); + return b; +} + +/* adds appropriate Range headers if needed */ +void +ClientSocketContext::buildRangeHeader(HttpReply * rep) +{ + HttpHeader *hdr = rep ? &rep->header : 0; + const char *range_err = NULL; + request_t *request = http->request; + assert(request->range); + /* check if we still want to do ranges */ + if (!rep) + range_err = "no [parse-able] reply"; + else if ((rep->sline.status != HTTP_OK) && (rep->sline.status != HTTP_PARTIAL_CONTENT)) + range_err = "wrong status code"; +#if 0 + else if (httpHeaderHas(hdr, HDR_CONTENT_RANGE)) + range_err = "origin server does ranges"; +#endif + else if (rep->content_length < 0) + range_err = "unknown length"; + else if (rep->content_length != http->entry->mem_obj->getReply()->content_length) + range_err = "INCONSISTENT length"; /* a bug? */ + else if (httpHeaderHas(&http->request->header, HDR_IF_RANGE) && !clientIfRangeMatch(http, rep)) + range_err = "If-Range match failed"; + else if (!http->request->range->canonize(rep)) + range_err = "canonization failed"; + else if (http->request->range->isComplex()) + range_err = "too complex range header"; + else if (!request->flags.cachable) /* from we_do_ranges in http.c */ + range_err = "non-cachable request"; +#if 0 + else if (!logTypeIsATcpHit(http->logType); && http->request->range->offsetLimitExceeded()) + range_err = "range outside range_offset_limit"; #endif - httpReplyDestroy(rep); - rep = NULL; + /* get rid of our range specs on error */ + if (range_err) { + /* XXX Why do we do this here, and not when parsing the request ? */ + debug(33, 3) ("clientBuildRangeHeader: will not do ranges: %s.\n", range_err); + http->request->range->deleteSelf(); + http->request->range = NULL; } else { - memBufDefInit(&mb); + const int spec_count = http->request->range->specs.count; + int actual_clen = -1; + + debug(33, 3) ("clientBuildRangeHeader: range spec count: %d virgin clen: %d\n", + spec_count, rep->content_length); + assert(spec_count > 0); + /* ETags should not be returned with Partial Content replies? */ + httpHeaderDelById(hdr, HDR_ETAG); + /* append appropriate header(s) */ + if (spec_count == 1) { + HttpHdrRange::iterator pos = http->request->range->begin(); + assert(*pos); + /* append Content-Range */ + if (!httpHeaderHas(hdr, HDR_CONTENT_RANGE)) { + /* No content range, so this was a full object we are + * sending parts of. + */ + httpHeaderAddContRange(hdr, **pos, rep->content_length); + } + /* set new Content-Length to the actual number of bytes + * transmitted in the message-body */ + actual_clen = (*pos)->length; + } else { + /* multipart! */ + /* generate boundary string */ + http->range_iter.boundary = http->rangeBoundaryStr(); + /* delete old Content-Type, add ours */ + httpHeaderDelById(hdr, HDR_CONTENT_TYPE); + httpHeaderPutStrf(hdr, HDR_CONTENT_TYPE, + "multipart/byteranges; boundary=\"%s\"", + http->range_iter.boundary.buf()); + /* Content-Length is not required in multipart responses + * but it is always nice to have one */ + actual_clen = http->mRangeCLen(); + } + + /* replace Content-Length header */ + assert(actual_clen >= 0); + httpHeaderDelById(hdr, HDR_CONTENT_LENGTH); + httpHeaderPutInt(hdr, HDR_CONTENT_LENGTH, actual_clen); + debug(33, 3) ("clientBuildRangeHeader: actual content length: %d\n", actual_clen); + /* And start the range iter off */ + http->range_iter.updateSpec(); } +} + +void +ClientSocketContext::prepareReply(HttpReply * rep) +{ + if (http->request->range) + buildRangeHeader(rep); +} + +void +ClientSocketContext::sendStartOfMessage(HttpReply * rep, StoreIOBuffer bodyData) +{ + prepareReply(rep); + /* init mb; put status line and headers if any */ + assert (rep); + MemBuf mb = httpReplyPack(rep); + /* Save length of headers for persistent conn checks */ + http->out.headers_sz = mb.size; +#if HEADERS_LOG + headersLog(0, 0, http->request->method, rep); +#endif + httpReplyDestroy(rep); + rep = NULL; if (bodyData.data && bodyData.length) { - context->http->out.offset += bodyData.length; - memBufAppend(&mb, bodyData.data, bodyData.length); + if (!multipartRangeRequest()) { + size_t length = lengthToSend(bodyData.length); + noteSentBodyBytes (length); + + memBufAppend(&mb, bodyData.data, length); + } else { + char const *t = bodyData.data; + packRange(&t, + bodyData.length, + &mb); + } } /* write */ - comm_old_write_mbuf(context->http->conn->fd, mb, clientWriteComplete, context); + comm_old_write_mbuf(fd(), mb, clientWriteComplete, this); /* if we don't do it, who will? */ } @@ -672,7 +998,7 @@ clientSocketRecipient(clientStreamNode * node, clientHttpRequest * http, HttpReply * rep, StoreIOBuffer recievedData) { int fd; - clientSocketContext *context; + ClientSocketContext *context; /* Test preconditions */ assert(node != NULL); /* TODO: handle this rather than asserting @@ -683,11 +1009,12 @@ clientSocketRecipient(clientStreamNode * node, clientHttpRequest * http, assert(cbdataReferenceValid(node)); assert(node->data != NULL); assert(node->node.next == NULL); - context = (clientSocketContext *)node->data; + context = (ClientSocketContext *)node->data; assert(connIsUsable(http->conn)); fd = http->conn->fd; + /* TODO: check offset is what we asked for */ if (connGetCurrentContext(http->conn) != context) { - contextDeferRecipientForLater(context, node, rep, recievedData); + context->deferRecipientForLater(node, rep, recievedData); return; } if (responseFinishedOrFailed(rep, recievedData)) { @@ -695,9 +1022,9 @@ clientSocketRecipient(clientStreamNode * node, clientHttpRequest * http, return; } if (!contextStartOfOutput(context)) - contextSendBody(context, rep, recievedData); + context->sendBody(rep, recievedData); else - contextSendStartOfMessage(context, rep, recievedData); + context->sendStartOfMessage(rep, recievedData); } /* Called when a downstream node is no longer interested in @@ -707,7 +1034,7 @@ clientSocketRecipient(clientStreamNode * node, clientHttpRequest * http, void clientSocketDetach(clientStreamNode * node, clientHttpRequest * http) { - clientSocketContext *context; + ClientSocketContext *context; /* Test preconditions */ assert(node != NULL); /* TODO: handle this rather than asserting @@ -719,7 +1046,7 @@ clientSocketDetach(clientStreamNode * node, clientHttpRequest * http) /* Set null by ContextFree */ assert(node->data == NULL); assert(node->node.next == NULL); - context = (clientSocketContext *)node->data; + context = (ClientSocketContext *)node->data; /* We are only called when the client socket shutsdown. * Tell the prev pipeline member we're finished */ @@ -749,9 +1076,9 @@ connReadNextRequest(ConnStateData * conn) } void -clientSocketContextPushDeferredIfNeeded(clientSocketContext * deferredRequest, ConnStateData * conn) +ClientSocketContextPushDeferredIfNeeded(ClientSocketContext * deferredRequest, ConnStateData * conn) { - debug(33, 2) ("clientSocketContextPushDeferredIfNeeded: FD %d Sending next\n", + debug(33, 2) ("ClientSocketContextPushDeferredIfNeeded: FD %d Sending next\n", conn->fd); /* If the client stream is waiting on a socket write to occur, then */ if (deferredRequest->flags.deferred) { @@ -768,18 +1095,18 @@ clientSocketContextPushDeferredIfNeeded(clientSocketContext * deferredRequest, C } static void -clientKeepaliveNextRequest(clientSocketContext * context) +clientKeepaliveNextRequest(ClientSocketContext * context) { clientHttpRequest *http = context->http; ConnStateData *conn = http->conn; - clientSocketContext *deferredRequest; + ClientSocketContext *deferredRequest; debug(33, 3) ("clientKeepaliveNextRequest: FD %d\n", conn->fd); cbdataFree(context); if ((deferredRequest = connGetCurrentContext(conn)) == NULL) connReadNextRequest(conn); else - clientSocketContextPushDeferredIfNeeded(deferredRequest, conn); + ClientSocketContextPushDeferredIfNeeded(deferredRequest, conn); } void @@ -792,15 +1119,101 @@ clientUpdateSocketStats(log_type logType, size_t size) kb_incr(&statCounter.client_http.hit_kbytes_out, size); } +/* returns true if there is still data available to pack more ranges + * increments iterator "i" + * used by clientPackMoreRanges */ +bool +ClientSocketContext::canPackMoreRanges() const +{ + /* first update "i" if needed */ + if (!http->range_iter.debt()) { + debug (33,5)("ClientSocketContext::canPackMoreRanges: At end of current range spec for fd %d\n",fd()); + if (http->range_iter.pos.incrementable()) + ++http->range_iter.pos; + http->range_iter.updateSpec(); + } + assert(!http->range_iter.debt() == !http->range_iter.currentSpec()); + /* paranoid sync condition */ + /* continue condition: need_more_data */ + debug (33,5)("ClientSocketContext::canPackMoreRanges: returning %d\n", http->range_iter.currentSpec() ? true : false); + return http->range_iter.currentSpec() ? true : false; +} + +off_t +ClientSocketContext::getNextRangeOffset() const +{ + if (http->request->range) { + /* offset in range specs does not count the prefix of an http msg */ + debug (0,0) ("ClientSocketContext::getNextRangeOffset: http offset %lu\n", http->out.offset); + /* check: reply was parsed and range iterator was initialized */ + assert(http->range_iter.valid); + /* filter out data according to range specs */ + assert (canPackMoreRanges()); + { + off_t start; /* offset of still missing data */ + assert(http->range_iter.currentSpec()); + start = http->range_iter.currentSpec()->offset + http->range_iter.currentSpec()->length - http->range_iter.debt(); + debug(33, 3) ("clientPackMoreRanges: in: offset: %ld\n", + (long int) http->out.offset); + debug(33, 3) ("clientPackMoreRanges: out: start: %ld spec[%ld]: [%ld, %ld), len: %ld debt: %ld\n", + (long int) start, (long int) (http->range_iter.pos - http->request->range->begin()), (long int) http->range_iter.currentSpec()->offset, (long int) (http->range_iter.currentSpec()->offset + http->range_iter.currentSpec()->length), (long int) http->range_iter.currentSpec()->length, (long int) http->range_iter.debt()); + if (http->range_iter.currentSpec()->length != -1) + assert(http->out.offset <= start); /* we did not miss it */ + return start; + } +#if 0 + } else if (http->request->range->specs.count > 1) { + /* put terminating boundary for multiparts */ + clientPackTermBound(i->boundary, mb); +#endif + } + + return http->out.offset; +} + void -clientPullData(clientSocketContext * context) +ClientSocketContext::pullData() { + debug (33,5)("ClientSocketContext::pullData: FD %d attempting to pull upstream data\n", fd()); /* More data will be coming from the stream. */ - StoreIOBuffer readBuffer = EMPTYIOBUFFER; - readBuffer.offset = context->http->out.offset; + StoreIOBuffer readBuffer; + /* XXX: Next requested byte in the range sequence */ + /* XXX: length = getmaximumrangelenfgth */ + readBuffer.offset = getNextRangeOffset(); readBuffer.length = HTTP_REQBUF_SZ; - readBuffer.data = context->reqbuf; - clientStreamRead(getTail(context), context->http, readBuffer); + readBuffer.data = reqbuf; + /* we may note we have reached the end of the wanted ranges */ + clientStreamRead(getTail(), http, readBuffer); +} + +clientStream_status_t +ClientSocketContext::socketState() +{ + switch (clientStreamStatus(getTail(), http)) { + case STREAM_NONE: + /* check for range support ending */ + if (http->request->range) { + /* check: reply was parsed and range iterator was initialized */ + assert(http->range_iter.valid); + /* filter out data according to range specs */ + if (!canPackMoreRanges()) { + debug (33,5)("ClientSocketContext::socketState: Range request has hit end of returnable range sequence on fd %d\n", fd()); + if (http->request->flags.proxy_keepalive) + return STREAM_COMPLETE; + else + return STREAM_UNPLANNED_COMPLETE; + } + } + return STREAM_NONE; + case STREAM_COMPLETE: + return STREAM_COMPLETE; + case STREAM_UNPLANNED_COMPLETE: + return STREAM_UNPLANNED_COMPLETE; + case STREAM_FAILED: + return STREAM_FAILED; + } + fatal ("unreachable code\n"); + return STREAM_NONE; } /* A write has just completed to the client, or we have just realised there is @@ -809,23 +1222,23 @@ clientPullData(clientSocketContext * context) void clientWriteComplete(int fd, char *bufnotused, size_t size, comm_err_t errflag, void *data) { - clientSocketContext *context = (clientSocketContext *)data; + ClientSocketContext *context = (ClientSocketContext *)data; clientHttpRequest *http = context->http; StoreEntry *entry = http->entry; - clientStreamNode *node = getTail(context); http->out.size += size; assert(fd > -1); debug(33, 5) ("clientWriteComplete: FD %d, sz %ld, err %d, off %ld, len %d\n", fd, (long int) size, errflag, (long int) http->out.size, entry ? objectLen(entry) : 0); clientUpdateSocketStats(http->logType, size); if (errflag || clientHttpRequestStatus(fd, http)) { + debug (33,5)("clientWriteComplete: FD %d, closing connection due to failure, or true requeststatus\n", fd); comm_close(fd); /* Do we leak here ? */ return; } - switch (clientStreamStatus(node, http)) { + switch (context->socketState()) { case STREAM_NONE: - clientPullData(context); + context->pullData(); break; case STREAM_COMPLETE: debug(33, 5) ("clientWriteComplete: FD %d Keeping Alive\n", fd); @@ -845,19 +1258,18 @@ extern "C" CSR clientGetMoreData; extern "C" CSS clientReplyStatus; extern "C" CSD clientReplyDetach; -static clientSocketContext * +static ClientSocketContext * parseHttpRequestAbort(ConnStateData * conn, const char *uri) { clientHttpRequest *http; - clientSocketContext *context; - StoreIOBuffer tempBuffer = EMPTYIOBUFFER; - http = cbdataAlloc(clientHttpRequest); + ClientSocketContext *context; + StoreIOBuffer tempBuffer; + http = new ClientHttpRequest; http->conn = conn; - http->start = current_time; http->req_sz = conn->in.notYetUsed; http->uri = xstrdup(uri); setLogUri (http, uri); - context = clientSocketContextNew(http); + context = ClientSocketContextNew(http); tempBuffer.data = context->reqbuf; tempBuffer.length = HTTP_REQBUF_SZ; clientStreamInit(&http->client_stream, clientGetMoreData, clientReplyDetach, @@ -867,7 +1279,7 @@ parseHttpRequestAbort(ConnStateData * conn, const char *uri) return context; } -clientSocketContext * +ClientSocketContext * clientCheckRequestLineIsParseable(char *inbuf, size_t req_sz, ConnStateData * conn) { if (strlen(inbuf) != req_sz) { @@ -877,7 +1289,7 @@ clientCheckRequestLineIsParseable(char *inbuf, size_t req_sz, ConnStateData * co return NULL; } -clientSocketContext * +ClientSocketContext * clientParseRequestMethod(char *inbuf, method_t * method_p, ConnStateData * conn) { char *mstr = NULL; @@ -924,7 +1336,7 @@ trimTrailingSpaces(char *aString, size_t len) *(endPointer--) = '\0'; } -clientSocketContext * +ClientSocketContext * parseURIandHTTPVersion(char **url_p, http_version_t * http_ver_p, ConnStateData * conn) { @@ -961,11 +1373,11 @@ parseURIandHTTPVersion(char **url_p, http_version_t * http_ver_p, } /* Utility function to perform part of request parsing */ -static clientSocketContext * +static ClientSocketContext * clientParseHttpRequestLine(char *inbuf, size_t req_sz, ConnStateData * conn, method_t * method_p, char **url_p, http_version_t * http_ver_p) { - clientSocketContext *result = NULL; + ClientSocketContext *result = NULL; if ((result = clientCheckRequestLineIsParseable(inbuf, req_sz, conn)) || (result = clientParseRequestMethod(inbuf, method_p, conn)) || (result = parseURIandHTTPVersion(url_p, http_ver_p, conn))) @@ -1069,11 +1481,11 @@ prepareAcceleratedUrl(clientHttpRequest * http, char *url, char *req_hdr) * * Returns * NULL on incomplete requests - * a clientSocketContext structure on success or failure. + * a ClientSocketContext structure on success or failure. * Sets result->flags.parsed_ok to 0 if failed to parse the request. * Sets result->flags.parsed_ok to 1 if we have a good request. */ -static clientSocketContext * +static ClientSocketContext * parseHttpRequest(ConnStateData * conn, method_t * method_p, char **prefix_p, size_t * req_line_sz_p) { @@ -1086,8 +1498,8 @@ parseHttpRequest(ConnStateData * conn, method_t * method_p, size_t prefix_sz; /* size of whole request (req-line + headers) */ size_t req_sz; clientHttpRequest *http; - clientSocketContext *result; - StoreIOBuffer tempBuffer = EMPTYIOBUFFER; + ClientSocketContext *result; + StoreIOBuffer tempBuffer; /* pre-set these values to make aborting simpler */ *prefix_p = NULL; @@ -1134,12 +1546,11 @@ parseHttpRequest(ConnStateData * conn, method_t * method_p, assert(prefix_sz <= conn->in.notYetUsed); /* Ok, all headers are received */ - http = cbdataAlloc(clientHttpRequest); + http = new ClientHttpRequest; http->http_ver = http_ver; http->conn = conn; - http->start = current_time; http->req_sz = prefix_sz; - result = clientSocketContextNew(http); + result = ClientSocketContextNew(http); tempBuffer.data = result->reqbuf; tempBuffer.length = HTTP_REQBUF_SZ; clientStreamInit(&http->client_stream, clientGetMoreData, clientReplyDetach, @@ -1199,10 +1610,10 @@ connMakeSpaceAvailable(ConnStateData * conn) } void -connAddContextToQueue(ConnStateData * conn, clientSocketContext * context) +connAddContextToQueue(ConnStateData * conn, ClientSocketContext * context) { - clientSocketContext **S; - for (S = (clientSocketContext **) & conn->currentobject; *S; + ClientSocketContext **S; + for (S = (ClientSocketContext **) & conn->currentobject; *S; S = &(*S)->next); *S = context; ++conn->nrequests; @@ -1212,8 +1623,8 @@ int connGetConcurrentRequestCount(ConnStateData * conn) { int result = 0; - clientSocketContext **T; - for (T = (clientSocketContext **) & conn->currentobject; + ClientSocketContext **T; + for (T = (ClientSocketContext **) & conn->currentobject; *T; T = &(*T)->next, ++result); return result; } @@ -1278,8 +1689,8 @@ connKeepReadingIncompleteRequest(ConnStateData * conn) void connCancelIncompleteRequests(ConnStateData * conn) { - clientSocketContext *context = parseHttpRequestAbort(conn, "error:request-too-large"); - clientStreamNode *node = getClientReplyContext(context); + ClientSocketContext *context = parseHttpRequestAbort(conn, "error:request-too-large"); + clientStreamNode *node = context->getClientReplyContext(); assert(!connKeepReadingIncompleteRequest(conn)); debug(33, 1) ("Request header is too large (%u bytes)\n", (unsigned) conn->in.notYetUsed); @@ -1289,7 +1700,7 @@ connCancelIncompleteRequests(ConnStateData * conn) HTTP_REQUEST_ENTITY_TOO_LARGE, METHOD_NONE, NULL, &conn->peer.sin_addr, NULL, NULL, NULL); connAddContextToQueue(conn, context); - clientPullData(context); + context->pullData(); } static void @@ -1308,8 +1719,8 @@ clientAfterReadingRequests(int fd, ConnStateData *conn, int do_next_read) /* Check if a half-closed connection was aborted in the middle */ if (F->flags.socket_eof) { - if (conn->in.notYetUsed != conn->body.size_left) { /* != 0 when no -request body */ + if (conn->in.notYetUsed != conn->body.size_left) { + /* != 0 when no request body */ /* Partial request received. Abort client connection! */ debug(33, 3) ("clientReadRequest: FD %d aborted, partial request\n",+ fd); comm_close(fd); @@ -1322,7 +1733,7 @@ request body */ static void -clientProcessRequest(ConnStateData *conn, clientSocketContext *context, method_t method, char *prefix, size_t req_line_sz) +clientProcessRequest(ConnStateData *conn, ClientSocketContext *context, method_t method, char *prefix, size_t req_line_sz) { clientHttpRequest *http = context->http; request_t *request = NULL; @@ -1333,44 +1744,43 @@ clientProcessRequest(ConnStateData *conn, clientSocketContext *context, method_t connAddContextToQueue(conn, context); if (context->flags.parsed_ok == 0) { - clientStreamNode *node = getClientReplyContext(context); + clientStreamNode *node = context->getClientReplyContext(); debug(33, 1) ("clientReadRequest: Invalid Request\n"); clientSetReplyToError(node->data, ERR_INVALID_REQ, HTTP_BAD_REQUEST, method, NULL, &conn->peer.sin_addr, NULL, conn->in.buf, NULL); assert(context->http->out.offset == 0); - clientPullData(context); + context->pullData(); conn->flags.readMoreRequests = 0; return; } if ((request = urlParse(method, http->uri)) == NULL) { - clientStreamNode *node = getClientReplyContext(context); + clientStreamNode *node = context->getClientReplyContext(); debug(33, 5) ("Invalid URL: %s\n", http->uri); clientSetReplyToError(node->data, ERR_INVALID_URL, HTTP_BAD_REQUEST, method, http->uri, &conn->peer.sin_addr, NULL, NULL, NULL); assert(context->http->out.offset == 0); - clientPullData(context); + context->pullData(); conn->flags.readMoreRequests = 0; return; - } else { + } - /* compile headers */ - /* we should skip request line! */ - if (!httpRequestParseHeader(request, prefix + req_line_sz)) - debug(33, 1) ("Failed to parse request headers: %s\n%s\n", - http->uri, prefix); - /* continue anyway? */ - } + /* compile headers */ + /* we should skip request line! */ + if (!httpRequestParseHeader(request, prefix + req_line_sz)) + debug(33, 1) ("Failed to parse request headers: %s\n%s\n", + http->uri, prefix); + /* continue anyway? */ request->flags.accelerated = http->flags.accel; if (!http->flags.internal) { - if (internalCheck(strBuf(request->urlpath))) { + if (internalCheck(request->urlpath.buf())) { if (internalHostnameIs(request->host) && request->port == getMyPort()) { http->flags.internal = 1; - } else if (internalStaticCheck(strBuf(request->urlpath))) { + } else if (internalStaticCheck(request->urlpath.buf())) { xstrncpy(request->host, internalHostname(), SQUIDHOSTNAMELEN); request->port = getMyPort(); @@ -1379,11 +1789,6 @@ clientProcessRequest(ConnStateData *conn, clientSocketContext *context, method_t } } - /* - * cache the Content-length value in request_t. - */ - request->content_length = httpHeaderGetInt(&request->header, - HDR_CONTENT_LENGTH); request->flags.internal = http->flags.internal; setLogUri (http, urlCanonicalClean(request)); request->client_addr = conn->peer.sin_addr; @@ -1392,24 +1797,24 @@ clientProcessRequest(ConnStateData *conn, clientSocketContext *context, method_t request->http_ver = http->http_ver; if (!urlCheckRequest(request) || httpHeaderHas(&request->header, HDR_TRANSFER_ENCODING)) { - clientStreamNode *node = getClientReplyContext(context); + clientStreamNode *node = context->getClientReplyContext(); clientSetReplyToError(node->data, ERR_UNSUP_REQ, HTTP_NOT_IMPLEMENTED, request->method, NULL, &conn->peer.sin_addr, request, NULL, NULL); assert(context->http->out.offset == 0); - clientPullData(context); + context->pullData(); conn->flags.readMoreRequests = 0; return; } if (!clientIsContentLengthValid(request)) { - clientStreamNode *node = getClientReplyContext(context); + clientStreamNode *node = context->getClientReplyContext(); clientSetReplyToError(node->data, ERR_INVALID_REQ, HTTP_LENGTH_REQUIRED, request->method, NULL, &conn->peer.sin_addr, request, NULL, NULL); assert(context->http->out.offset == 0); - clientPullData(context); + context->pullData(); conn->flags.readMoreRequests = 0; return; } @@ -1423,12 +1828,12 @@ clientProcessRequest(ConnStateData *conn, clientSocketContext *context, method_t /* Is it too large? */ if (!clientIsRequestBodyValid(request->content_length) || clientIsRequestBodyTooLargeForPolicy(request->content_length)) { - clientStreamNode *node = getClientReplyContext(context); + clientStreamNode *node = context->getClientReplyContext(); clientSetReplyToError(node->data, ERR_TOO_BIG, HTTP_REQUEST_ENTITY_TOO_LARGE, METHOD_NONE, NULL, &conn->peer.sin_addr, http->request, NULL, NULL); assert(context->http->out.offset == 0); - clientPullData(context); + context->pullData(); conn->flags.readMoreRequests = 0; return; } @@ -1479,7 +1884,7 @@ void *data) conn->reading = false; method_t method; char *prefix = NULL; - clientSocketContext *context; + ClientSocketContext *context; int do_next_read = 1; /* the default _is_ to read data! - adrian */ assert (fd == conn->fd); @@ -1962,49 +2367,6 @@ httpsAccept(int sock, int newfd, struct sockaddr_in *me, struct sockaddr_in *pee #endif /* USE_SSL */ -/* - * This function is designed to serve a fairly specific purpose. - * Occasionally our vBNS-connected caches can talk to each other, but not - * the rest of the world. Here we try to detect frequent failures which - * make the cache unusable (e.g. DNS lookup and connect() failures). If - * the failure:success ratio goes above 1.0 then we go into "hit only" - * mode where we only return UDP_HIT or UDP_MISS_NOFETCH. Neighbors - * will only fetch HITs from us if they are using the ICP protocol. We - * stay in this mode for 5 minutes. - * - * Duane W., Sept 16, 1996 - */ - -static void -checkFailureRatio(err_type etype, hier_code hcode) -{ - static double magic_factor = 100.0; - double n_good; - double n_bad; - if (hcode == HIER_NONE) - return; - n_good = magic_factor / (1.0 + request_failure_ratio); - n_bad = magic_factor - n_good; - switch (etype) { - case ERR_DNS_FAIL: - case ERR_CONNECT_FAIL: - case ERR_READ_ERROR: - n_bad++; - break; - default: - n_good++; - } - request_failure_ratio = n_bad / n_good; - if (hit_only_mode_until > squid_curtime) - return; - if (request_failure_ratio < 1.0) - return; - debug(33, 0) ("Failure Ratio at %4.2f\n", request_failure_ratio); - debug(33, 0) ("Going into hit-only-mode for %d minutes...\n", - FAILURE_MODE_TIME / 60); - hit_only_mode_until = squid_curtime + FAILURE_MODE_TIME; - request_failure_ratio = 0.8; /* reset to something less than 1.0 */ -} static void clientHttpConnectionsOpen(void) @@ -2102,10 +2464,10 @@ int varyEvaluateMatch(StoreEntry * entry, request_t * request) { const char *vary = request->vary_headers; - int has_vary = httpHeaderHas(&entry->mem_obj->reply->header, HDR_VARY); + int has_vary = httpHeaderHas(&entry->getReply()->header, HDR_VARY); #if X_ACCELERATOR_VARY has_vary |= - httpHeaderHas(&entry->mem_obj->reply->header, HDR_X_ACCELERATOR_VARY); + httpHeaderHas(&entry->getReply()->header, HDR_X_ACCELERATOR_VARY); #endif if (!has_vary || !entry->mem_obj->vary_headers) { if (vary) { @@ -2124,7 +2486,7 @@ varyEvaluateMatch(StoreEntry * entry, request_t * request) /* virtual "vary" object found. Calculate the vary key and * continue the search */ - vary = httpMakeVaryMark(request, entry->mem_obj->reply); + vary = httpMakeVaryMark(request, entry->getReply()); if (vary) { request->vary_headers = xstrdup(vary); return VARY_OTHER; @@ -2135,7 +2497,7 @@ varyEvaluateMatch(StoreEntry * entry, request_t * request) } } else { if (!vary) { - vary = httpMakeVaryMark(request, entry->mem_obj->reply); + vary = httpMakeVaryMark(request, entry->getReply()); if (vary) request->vary_headers = xstrdup(vary); } diff --git a/src/client_side_reply.cc b/src/client_side_reply.cc index b161f989c9..a5cb1c3fa9 100644 --- a/src/client_side_reply.cc +++ b/src/client_side_reply.cc @@ -1,6 +1,6 @@ /* - * $Id: client_side_reply.cc,v 1.30 2003/01/17 05:49:34 robertc Exp $ + * $Id: client_side_reply.cc,v 1.31 2003/01/23 00:37:18 robertc Exp $ * * DEBUG: section 88 Client-side Reply Routines * AUTHOR: Robert Collins (Originally Duane Wessels in client_side.c) @@ -36,10 +36,16 @@ #include "squid.h" #include "StoreClient.h" #include "Store.h" +#include "HttpReply.h" +#include "HttpRequest.h" #include "clientStream.h" #include "authenticate.h" +#include "MemObject.h" +#include "client_side_request.h" +static STCB clientHandleIMSReply; +static STCB clientSendMoreData; class clientReplyContext : public StoreClient { public: void *operator new (size_t byteCount); @@ -53,6 +59,7 @@ public: void purgeFoundGet(StoreEntry *newEntry); void purgeFoundHead(StoreEntry *newEntry); void purgeFoundObject(StoreEntry *entry); + void sendClientUpstreamResponse(); void purgeDoPurgeGet(StoreEntry *entry); void purgeDoPurgeHead(StoreEntry *entry); void doGetMoreData(); @@ -82,18 +89,30 @@ public: struct { int storelogiccomplete:1; int complete:1; /* we have read all we can from upstream */ - int headersSent:1; + bool headersSent; } flags; clientStreamNode *ourNode; /* This will go away if/when this file gets refactored some more */ private: - clientStreamNode *getNextNode(); + friend void clientSendMoreData(void *data, StoreIOBuffer result); + friend void clientHandleIMSReply(void *data, StoreIOBuffer result); + static STCB clientSendMoreData; + clientStreamNode *getNextNode() const; + void sendMoreData (StoreIOBuffer result); + void makeThisHead(); + bool errorInStream(StoreIOBuffer const &result, size_t const &sizeToProcess)const ; + void sendStreamError(StoreIOBuffer const &result); + void pushStreamData(StoreIOBuffer const &result, char *source); + void waitForMoreData (StoreIOBuffer const &result); + clientStreamNode * next() const; + void startSendProcess(); + }; CBDATA_TYPE(clientReplyContext); /* Local functions */ static int clientGotNotEnough(clientHttpRequest const *); -static int clientReplyBodyTooLarge(HttpReply *, ssize_t); +static int clientReplyBodyTooLarge(HttpReply const *, ssize_t); static int clientOnlyIfCached(clientHttpRequest * http); static void clientProcessExpired(clientReplyContext *); static void clientProcessMiss(clientReplyContext *); @@ -101,12 +120,12 @@ static STCB clientCacheHit; static void clientProcessOnlyIfCachedMiss(clientReplyContext *); static int clientGetsOldEntry(StoreEntry *, StoreEntry * old, request_t * request); -static STCB clientHandleIMSReply; + static int modifiedSince(StoreEntry *, request_t *); static void clientTraceReply(clientStreamNode *, clientReplyContext *); static StoreEntry *clientCreateStoreEntry(clientReplyContext *, method_t, request_flags); -static STCB clientSendMoreData; + static void clientRemoveStoreReference(clientReplyContext *, store_client **, StoreEntry **); extern "C" CSS clientReplyStatus; @@ -114,8 +133,9 @@ extern ErrorState *clientBuildError(err_type, http_status, char const *, struct in_addr *, request_t *); static void startError(clientReplyContext * context, clientHttpRequest * http, ErrorState * err); -static void triggerStoreReadWithClientParameters(clientReplyContext * context, clientHttpRequest * http); +static void triggerInitialStoreReadWithClientParameters(clientReplyContext * context, clientHttpRequest * http); static int clientCheckTransferDone(clientReplyContext * context); +static void clientObeyConnectionHeader(clientHttpRequest * http, HttpReply * rep); /* The clientReply clean interface */ /* privates */ @@ -204,7 +224,7 @@ void clientReplyContext::saveState(clientHttpRequest * http) { assert(old_sc == NULL); - debug(88, 1) ("clientReplyContext::saveState: saving store context\n"); + debug(88, 1)("clientReplyContext::saveState: saving store context"); http->old_entry = http->entry; old_sc = sc; old_reqsize = reqsize; @@ -220,7 +240,7 @@ void clientReplyContext::restoreState(clientHttpRequest * http) { assert(old_sc != NULL); - debug(88, 1) ("clientReplyContext::restoreState: Restoring store context\n"); + debug(88, 1)("clientReplyContext::restoreState: Restoring store context"); http->entry = http->old_entry; sc = old_sc; reqsize = old_reqsize; @@ -236,24 +256,31 @@ void startError(clientReplyContext * context, clientHttpRequest * http, ErrorState * err) { http->entry = clientCreateStoreEntry(context, http->request->method, request_flags()); - triggerStoreReadWithClientParameters(context, http); + triggerInitialStoreReadWithClientParameters(context, http); errorAppendEntry(http->entry, err); } clientStreamNode * -clientReplyContext::getNextNode() +clientReplyContext::getNextNode() const { return (clientStreamNode *)ourNode->node.next->data; } +/* This function is wrong - the client parameters don't include the + * header offset + */ void -triggerStoreReadWithClientParameters(clientReplyContext * context, clientHttpRequest * http) +triggerInitialStoreReadWithClientParameters(clientReplyContext * context, clientHttpRequest * http) { clientStreamNode *next = (clientStreamNode *)http->client_stream.head->next->data; - StoreIOBuffer tempBuffer = EMPTYIOBUFFER; + StoreIOBuffer tempBuffer; /* collapse this to one object if we never tickle the assert */ assert(context->http == http); - tempBuffer.offset = next->readBuffer.offset; + /* when confident, 0 becomes context->reqofs, and then this factors into + * startSendProcess + */ + assert(context->reqofs == 0); + tempBuffer.offset = 0; tempBuffer.length = next->readBuffer.length; tempBuffer.data = next->readBuffer.data; storeClientCopy(context->sc, http->entry, tempBuffer, clientSendMoreData, context); @@ -268,7 +295,7 @@ clientProcessExpired(clientReplyContext * context) clientHttpRequest *http = context->http; char *url = http->uri; StoreEntry *entry = NULL; - debug(88, 3) ("clientProcessExpired: '%s'\n", http->uri); + debug(88, 3)("clientProcessExpired: '%s'", http->uri); assert(http->entry->lastmod >= 0); /* * check if we are allowed to contact other servers @@ -296,16 +323,16 @@ clientProcessExpired(clientReplyContext * context) delaySetStoreClient(context->sc, delayClient(http)); #endif http->request->lastmod = http->old_entry->lastmod; - debug(88, 5) ("clientProcessExpired: lastmod %ld\n", + debug(88, 5)("clientProcessExpired : lastmod %ld", (long int) entry->lastmod); http->entry = entry; assert(http->out.offset == 0); fwdStart(http->conn ? http->conn->fd : -1, http->entry, http->request); /* Register with storage manager to receive updates when data comes in. */ if (EBIT_TEST(entry->flags, ENTRY_ABORTED)) - debug(88, 0) ("clientProcessExpired: found ENTRY_ABORTED object\n"); + debug(88, 0) ("clientProcessExpired: Found ENTRY_ABORTED object"); { - StoreIOBuffer tempBuffer = EMPTYIOBUFFER; + StoreIOBuffer tempBuffer; /* start counting the length from 0 */ tempBuffer.offset = 0; tempBuffer.length = HTTP_REQBUF_SZ; @@ -319,7 +346,6 @@ int modifiedSince(StoreEntry * entry, request_t * request) { int object_length; - MemObject *mem = entry->mem_obj; time_t mod_time = entry->lastmod; debug(88, 3) ("modifiedSince: '%s'\n", storeUrl(entry)); if (mod_time < 0) @@ -328,7 +354,7 @@ modifiedSince(StoreEntry * entry, request_t * request) if (mod_time < 0) return 1; /* Find size of the object */ - object_length = mem->reply->content_length; + object_length = entry->getReply()->content_length; if (object_length < 0) object_length = contentLen(entry); if (mod_time > request->ims) { @@ -353,7 +379,7 @@ static int clientGetsOldEntry(StoreEntry * new_entry, StoreEntry * old_entry, request_t * request) { - const http_status status = new_entry->mem_obj->reply->sline.status; + const http_status status = new_entry->getReply()->sline.status; if (0 == status) { debug(88, 5) ("clientGetsOldEntry: YES, broken HTTP reply\n"); return 1; @@ -370,6 +396,20 @@ clientGetsOldEntry(StoreEntry * new_entry, StoreEntry * old_entry, debug(88, 5) ("clientGetsOldEntry: NO, reply=%d\n", status); return 0; } + /* If key metadata in the reply are not consistent with the + * old entry, we must use the new reply. + * Note: this means that the server is sending garbage replies + * in that it has sent an IMS that is incompatible with our request!? + */ + /* This is a duplicate call through the HandleIMS code path. + * Can we guarantee we don't need it elsewhere? + */ + if (!httpReplyValidatorsMatch(new_entry->getReply(), + old_entry->getReply())) { + debug(88, 5) ("clientGetsOldEntry: NO, Old object has invalidated" + "by the new one\n"); + return 0; + } /* If the client did not send IMS in the request, then it * must get the old object, not this "Not Modified" reply */ if (!request->flags.ims) { @@ -387,13 +427,31 @@ clientGetsOldEntry(StoreEntry * new_entry, StoreEntry * old_entry, return 0; } +void +clientReplyContext::sendClientUpstreamResponse() +{ + StoreIOBuffer tempresult; + http->logType = LOG_TCP_REFRESH_MISS; + clientRemoveStoreReference(this, &old_sc, &http->old_entry); + /* here the data to send is the data we just recieved */ + tempBuffer.offset = 0; + old_reqsize = 0; + /* clientSendMoreData tracks the offset as well. + * Force it back to zero */ + reqofs = 0; + assert(!EBIT_TEST(http->entry->flags, ENTRY_ABORTED)); + /* TODO: provide SendMoreData with the ready parsed reply */ + tempresult.length = reqsize; + tempresult.data = tempbuf; + clientSendMoreData(this, tempresult); +} + void clientHandleIMSReply(void *data, StoreIOBuffer result) { clientReplyContext *context = (clientReplyContext *)data; clientHttpRequest *http = context->http; StoreEntry *entry = http->entry; - MemObject *mem; const char *url = storeUrl(entry); int unlink_request = 0; StoreEntry *oldentry; @@ -408,9 +466,7 @@ clientHandleIMSReply(void *data, StoreIOBuffer result) } /* update size of the request */ context->reqsize = result.length + context->reqofs; - context->reqofs = context->reqsize; - mem = entry->mem_obj; - status = mem->reply->sline.status; + status = entry->getReply()->sline.status; if (EBIT_TEST(entry->flags, ENTRY_ABORTED)) { debug(88, 3) ("clientHandleIMSReply: ABORTED '%s'\n", url); /* We have an existing entry, but failed to validate it */ @@ -426,7 +482,7 @@ clientHandleIMSReply(void *data, StoreIOBuffer result) /* more headers needed to decide */ debug(88, 3) ("clientHandleIMSReply: Incomplete headers for '%s'\n", url); - if (result.length + context->reqofs >= HTTP_REQBUF_SZ) { + if (result.length + context->reqsize >= HTTP_REQBUF_SZ) { /* will not get any bigger than that */ debug(88, 3) ("clientHandleIMSReply: Reply is too large '%s', using old entry\n", @@ -439,33 +495,28 @@ clientHandleIMSReply(void *data, StoreIOBuffer result) context->restoreState(http); entry = http->entry; } else { - StoreIOBuffer tempBuffer = EMPTYIOBUFFER; - tempBuffer.offset = context->reqofs; - tempBuffer.length = HTTP_REQBUF_SZ - context->reqofs; - tempBuffer.data = context->tempbuf + context->reqofs; - storeClientCopy(context->sc, entry, - tempBuffer, - clientHandleIMSReply, context); + context->waitForMoreData(result); } return; } if (clientGetsOldEntry(entry, http->old_entry, http->request)) { - /* We initiated the IMS request, the client is not expecting + /* We initiated the IMS request and the IMS is compatible with + * our object. As the client is not expecting * 304, so put the good one back. First, make sure the old entry * headers have been loaded from disk. */ clientStreamNode *next = (clientStreamNode *)context->http->client_stream.head->next->data; - StoreIOBuffer tempresult = EMPTYIOBUFFER; + StoreIOBuffer tempresult; oldentry = http->old_entry; http->logType = LOG_TCP_REFRESH_HIT; if (oldentry->mem_obj->request == NULL) { - oldentry->mem_obj->request = requestLink(mem->request); + oldentry->mem_obj->request = requestLink(entry->mem_obj->request); unlink_request = 1; } /* Don't memcpy() the whole reply structure here. For example, * www.thegist.com (Netscape/1.13) returns a content-length for * 304's which seems to be the length of the 304 HEADERS!!! and * not the body they refer to. */ - httpReplyUpdateOnNotModified(oldentry->mem_obj->reply, mem->reply); + httpReplyUpdateOnNotModified((HttpReply *)oldentry->getReply(), entry->getReply()); storeTimestampsSet(oldentry); clientRemoveStoreReference(context, &context->sc, &entry); oldentry->timestamp = squid_curtime; @@ -482,15 +533,31 @@ clientHandleIMSReply(void *data, StoreIOBuffer result) tempresult.data = next->readBuffer.data; clientSendMoreData(context, tempresult); return; - } - debug(88, 3) ("clientHandleIMSReply: Sending client the IMS reply for '%s'\n", url); - { - /* the client can handle this reply, whatever it is */ - StoreIOBuffer tempresult = EMPTYIOBUFFER; + } else { + /* The client gets the new entry, + * either as a 304 (they initiated the IMS) or + * as a full request from the upstream + * The new entry is *not* a 304 reply, or + * is a 304 that is incompatible with our cached entities. + */ + if (http->request->flags.ims) { + /* The client asked for a IMS, and can deal + * with any reply + * XXX TODO: invalidate our object if it's not valid any more. + * Send the IMS reply to the client. + */ + context->sendClientUpstreamResponse(); + } else if (httpReplyValidatorsMatch (entry->getReply(), + http->old_entry->getReply())) { + /* Our object is usable once updated */ + /* the client did not ask for IMS, send the whole object + */ + /* the client needs to get this reply */ + StoreIOBuffer tempresult; http->logType = LOG_TCP_REFRESH_MISS; - if (HTTP_NOT_MODIFIED == mem->reply->sline.status) { - httpReplyUpdateOnNotModified(http->old_entry->mem_obj->reply, - mem->reply); + if (HTTP_NOT_MODIFIED == entry->getReply()->sline.status) { + httpReplyUpdateOnNotModified((HttpReply *)http->old_entry->getReply(), + entry->getReply()); storeTimestampsSet(http->old_entry); http->logType = LOG_TCP_REFRESH_HIT; } @@ -506,7 +573,22 @@ clientHandleIMSReply(void *data, StoreIOBuffer result) tempresult.length = context->reqsize; tempresult.data = context->tempbuf; clientSendMoreData(context, tempresult); - return; + } else { + /* the client asked for the whole object, and + * 1) our object was stale + * 2) our internally generated IMS failed to validate + * 3) the server sent incompatible headers in it's reply + */ + http->logType = LOG_TCP_REFRESH_MISS; + clientProcessMiss(context); + /* We start over for everything except IMS because: + * 1) HEAD requests will go straight through now + * 2) GET requests will go straight through now + * 3) IMS requests are a corner case. If the server + * decided to give us different data, we should give + * that to the client, which means returning our IMS request. + */ + } } } @@ -526,7 +608,6 @@ clientCacheHit(void *data, StoreIOBuffer result) clientReplyContext *context = (clientReplyContext *)data; clientHttpRequest *http = context->http; StoreEntry *e = http->entry; - MemObject *mem; request_t *r = http->request; debug(88, 3) ("clientCacheHit: %s, %ud bytes\n", http->uri, (unsigned int)result.length); if (http->entry == NULL) { @@ -549,11 +630,10 @@ clientCacheHit(void *data, StoreIOBuffer result) clientProcessMiss(context); return; } - mem = e->mem_obj; assert(!EBIT_TEST(e->flags, ENTRY_ABORTED)); /* update size of the request */ context->reqsize = result.length + context->reqofs; - if (mem->reply->sline.status == 0) { + if (e->getReply()->sline.status == 0) { /* * we don't have full reply headers yet; either wait for more or * punt to clientProcessMiss. @@ -565,7 +645,7 @@ clientCacheHit(void *data, StoreIOBuffer result) clientProcessMiss(context); } else { clientStreamNode *next; - StoreIOBuffer tempBuffer = EMPTYIOBUFFER; + StoreIOBuffer tempBuffer; debug(88, 3) ("clientCacheHit: waiting for HTTP reply headers\n"); context->reqofs += result.length; assert(context->reqofs <= HTTP_REQBUF_SZ); @@ -620,15 +700,6 @@ clientCacheHit(void *data, StoreIOBuffer result) if (storeCheckNegativeHit(e)) { http->logType = LOG_TCP_NEGATIVE_HIT; clientSendMoreData(context, result); - } else if (r->method == METHOD_HEAD) { - /* - * RFC 2068 seems to indicate there is no "conditional HEAD" - * request. We cannot validate a cached object for a HEAD - * request, nor can we return 304. - */ - if (e->mem_status == IN_MEMORY) - http->logType = LOG_TCP_MEM_HIT; - clientSendMoreData(context, result); } else if (!Config.onoff.offline && refreshCheckHTTP(e, r) && !http->flags.internal) { debug(88, 5) ("clientCacheHit: in refreshCheck() block\n"); /* @@ -675,9 +746,9 @@ clientCacheHit(void *data, StoreIOBuffer result) /* * Handle If-Modified-Since requests from the client */ - if (mem->reply->sline.status != HTTP_OK) { + if (e->getReply()->sline.status != HTTP_OK) { debug(88, 4) ("clientCacheHit: Reply code %d != 200\n", - mem->reply->sline.status); + e->getReply()->sline.status); http->logType = LOG_TCP_MISS; clientProcessMiss(context); } else if (modifiedSince(e, http->request)) { @@ -685,7 +756,7 @@ clientCacheHit(void *data, StoreIOBuffer result) clientSendMoreData(context, result); } else { time_t timestamp = e->timestamp; - MemBuf mb = httpPacked304Reply(e->mem_obj->reply); + HttpReply *temprep = httpReplyMake304 (e->getReply()); http->logType = LOG_TCP_IMS_HIT; clientRemoveStoreReference(context, &context->sc, &http->entry); http->entry = e = @@ -696,15 +767,13 @@ clientCacheHit(void *data, StoreIOBuffer result) * reply has a meaningful Age: header. */ e->timestamp = timestamp; - httpReplyParse(e->mem_obj->reply, mb.buf, mb.size); - storeAppend(e, mb.buf, mb.size); - memBufClean(&mb); - storeComplete(e); + httpReplySwapOut (temprep, e); + e->complete(); /* TODO: why put this in the store and then serialise it and then parse it again. * Simply mark the request complete in our context and * write the reply struct to the client side */ - triggerStoreReadWithClientParameters(context, http); + triggerInitialStoreReadWithClientParameters(context, http); } } else { /* @@ -762,12 +831,12 @@ clientProcessMiss(clientReplyContext * context) http->entry = clientCreateStoreEntry(context, r->method, request_flags()); errorAppendEntry(http->entry, err); - triggerStoreReadWithClientParameters(context, http); + triggerInitialStoreReadWithClientParameters(context, http); return; } else { assert(http->out.offset == 0); http->entry = clientCreateStoreEntry(context, r->method, r->flags); - triggerStoreReadWithClientParameters(context, http); + triggerInitialStoreReadWithClientParameters(context, http); if (http->redirect.status) { HttpReply *rep = httpReplyCreate(); #if LOG_TCP_REDIRECTS @@ -777,8 +846,7 @@ clientProcessMiss(clientReplyContext * context) httpRedirectReply(rep, http->redirect.status, http->redirect.location); httpReplySwapOut(rep, http->entry); - httpReplyDestroy(rep); - storeComplete(http->entry); + http->entry->complete(); return; } if (http->flags.internal) @@ -856,7 +924,7 @@ void clientReplyContext::purgeFoundObject(StoreEntry *entry) { assert (entry && !entry->isNull()); - StoreIOBuffer tempBuffer = EMPTYIOBUFFER; + StoreIOBuffer tempBuffer; /* Swap in the metadata */ http->entry = entry; storeLockObject(http->entry); @@ -953,15 +1021,18 @@ clientReplyContext::purgeDoPurgeHead(StoreEntry *newEntry) * Make a new entry to hold the reply to be written * to the client. */ + /* FIXME: This doesn't need to go through the store. Simply + * push down the client chain + */ http->entry = clientCreateStoreEntry(this, http->request->method, request_flags()); - triggerStoreReadWithClientParameters(this, http); - httpReplyReset(r = http->entry->mem_obj->reply); + triggerInitialStoreReadWithClientParameters(this, http); + r = httpReplyCreate(); httpBuildVersion(&version, 1, 0); httpReplySetHeaders(r, version, purgeStatus, NULL, NULL, 0, 0, -1); httpReplySwapOut(r, http->entry); - storeComplete(http->entry); + http->entry->complete(); } void @@ -970,7 +1041,7 @@ clientTraceReply(clientStreamNode * node, clientReplyContext * context) HttpReply *rep; http_version_t version; clientStreamNode *next = (clientStreamNode *)node->node.next->data; - StoreIOBuffer tempBuffer = EMPTYIOBUFFER; + StoreIOBuffer tempBuffer; assert(context->http->request->max_forwards == 0); context->http->entry = clientCreateStoreEntry(context, context->http->request->method, @@ -987,9 +1058,8 @@ clientTraceReply(clientStreamNode * node, clientReplyContext * context) httpReplySetHeaders(rep, version, HTTP_OK, NULL, "text/plain", httpRequestPrefixLen(context->http->request), 0, squid_curtime); httpReplySwapOut(rep, context->http->entry); - httpReplyDestroy(rep); httpRequestSwapOut(context->http->request, context->http->entry); - storeComplete(context->http->entry); + context->http->entry->complete(); } #define SENDING_BODY 0 @@ -1037,7 +1107,7 @@ clientReplyContext::storeNotOKTransferDone() const assert(mem != NULL); assert(http->request != NULL); /* mem->reply was wrong because it uses the UPSTREAM header length!!! */ - http_reply *reply = mem->reply; + http_reply const *reply = mem->getReply(); if (headers_sz == 0) /* haven't found end of headers yet */ return 0; @@ -1069,7 +1139,7 @@ int clientGotNotEnough(clientHttpRequest const *http) { int cl = - httpReplyBodySize(http->request->method, http->entry->mem_obj->reply); + httpReplyBodySize(http->request->method, http->entry->mem_obj->getReply()); assert(cl >= 0); if (http->out.offset < cl) return 1; @@ -1139,7 +1209,7 @@ clientReplyStatus(clientStreamNode * aNode, clientHttpRequest * http) debug(88, 5) ("clientReplyStatus: transfer is DONE\n"); /* Ok we're finished, but how? */ if (httpReplyBodySize(http->request->method, - http->entry->mem_obj->reply) < 0) { + http->entry->getReply()) < 0) { debug(88, 5) ("clientReplyStatus: closing, content_length < 0\n"); return STREAM_FAILED; } @@ -1158,7 +1228,7 @@ clientReplyStatus(clientStreamNode * aNode, clientHttpRequest * http) debug(88, 5) ("clientReplyStatus: stream was not expected to complete!\n"); return STREAM_UNPLANNED_COMPLETE; } - if (clientReplyBodyTooLarge(http->entry->mem_obj->reply, http->out.offset)) { + if (clientReplyBodyTooLarge(http->entry->getReply(), http->out.offset)) { debug(88, 5) ("clientReplyStatus: client reply body is too large\n"); return STREAM_FAILED; } @@ -1191,6 +1261,32 @@ clientAlwaysAllowResponse(http_status sline) } } +void +clientObeyConnectionHeader(clientHttpRequest * http, HttpReply * rep) +{ + HttpHeader *hdr = &rep->header; + if (httpHeaderHas(hdr, HDR_CONNECTION)) { + /* anything that matches Connection list member will be deleted */ + String strConnection = httpHeaderGetList(hdr, HDR_CONNECTION); + const HttpHeaderEntry *e; + HttpHeaderPos pos = HttpHeaderInitPos; + /* + * think: on-average-best nesting of the two loops (hdrEntry + * and strListItem) @?@ + */ + /* + * maybe we should delete standard stuff ("keep-alive","close") + * from strConnection first? + */ + while ((e = httpHeaderGetEntry(hdr, &pos))) { + if (strListIsMember(&strConnection, e->name.buf(), ',')) + httpHeaderDelAt(hdr, pos); + } + httpHeaderDelById(hdr, HDR_CONNECTION); + strConnection.clean(); + } +} + /* * filters out unwanted entries from original reply header * adds extra entries if we have more info than origin server @@ -1214,27 +1310,9 @@ clientBuildReplyHeader(clientReplyContext *context, HttpReply * rep) /* remove Set-Cookie if a hit */ if (is_hit) httpHeaderDelById(hdr, HDR_SET_COOKIE); - /* handle Connection header */ - if (httpHeaderHas(hdr, HDR_CONNECTION)) { - /* anything that matches Connection list member will be deleted */ - String strConnection = httpHeaderGetList(hdr, HDR_CONNECTION); - const HttpHeaderEntry *e; - HttpHeaderPos pos = HttpHeaderInitPos; - /* - * think: on-average-best nesting of the two loops (hdrEntry - * and strListItem) @?@ - */ - /* - * maybe we should delete standard stuff ("keep-alive","close") - * from strConnection first? - */ - while ((e = httpHeaderGetEntry(hdr, &pos))) { - if (strListIsMember(&strConnection, strBuf(e->name), ',')) - httpHeaderDelAt(hdr, pos); - } - httpHeaderDelById(hdr, HDR_CONNECTION); - stringClean(&strConnection); - } + clientObeyConnectionHeader(http, rep); +// if (request->range) +// clientBuildRangeHeader(http, rep); /* * Add a estimated Age header on cache hits. */ @@ -1260,9 +1338,26 @@ clientBuildReplyHeader(clientReplyContext *context, HttpReply * rep) (void) 0; else if (http->entry->timestamp < 0) (void) 0; - else if (http->entry->timestamp < squid_curtime) + else if (http->entry->timestamp < squid_curtime) { httpHeaderPutInt(hdr, HDR_AGE, squid_curtime - http->entry->timestamp); + /* Signal old objects. NB: rfc 2616 is not clear, + * by implication, on whether we should do this to all + * responses, or only cache hits. + * 14.46 states it ONLY applys for heuristically caclulated + * freshness values, 13.2.4 doesn't specify the same limitation. + * We interpret RFC 2616 under the combination. + */ + /* TODO: if maxage or s-maxage is present, don't do this */ + if (squid_curtime - http->entry->timestamp >= 86400) { + char tempbuf[512]; + snprintf (tempbuf, sizeof(tempbuf), "%s %s %s", + "113", ThisCache, + "This cache hit is still fresh and more than 1 day old"); + httpHeaderPutStr(hdr, HDR_WARNING, tempbuf); + } + } + } /* Filter unproxyable authentication types */ if (http->logType != LOG_TCP_DENIED && @@ -1271,7 +1366,7 @@ clientBuildReplyHeader(clientReplyContext *context, HttpReply * rep) HttpHeaderEntry *e; while ((e = httpHeaderGetEntry(hdr, &pos))) { if (e->id == HDR_WWW_AUTHENTICATE || e->id == HDR_PROXY_AUTHENTICATE) { - const char *value = strBuf(e->value); + const char *value = e->value.buf(); if ((strncasecmp(value, "NTLM", 4) == 0 && (value[4] == '\0' || value[4] == ' ')) || @@ -1310,8 +1405,8 @@ clientBuildReplyHeader(clientReplyContext *context, HttpReply * rep) ThisCache); strListAdd(&strVia, bbuf, ','); httpHeaderDelById(hdr, HDR_VIA); - httpHeaderPutStr(hdr, HDR_VIA, strBuf(strVia)); - stringClean(&strVia); + httpHeaderPutStr(hdr, HDR_VIA, strVia.buf()); + strVia.clean(); } /* Signal keep-alive if needed */ httpHeaderPutStr(hdr, @@ -1345,6 +1440,13 @@ clientBuildReply(clientReplyContext *context, const char *buf, size_t size) /* parsing failure, get rid of the invalid reply */ httpReplyDestroy(rep); rep = NULL; + /* This is wrong. httpReplyDestroy should to the rep + * for us, and we can destroy our own range info + */ + if (context->http->request->range) { + /* this will fail and destroy request->range */ +// clientBuildRangeHeader(context->http, rep); + } } return rep; } @@ -1370,6 +1472,7 @@ clientReplyContext::identifyFoundObject(StoreEntry *newEntry) } else { http->entry = e; } + e = http->entry; /* Release negatively cached IP-cache entries on reload */ if (r->flags.nocache) ipcacheInvalidate(r->host); @@ -1432,7 +1535,13 @@ clientReplyContext::identifyFoundObject(StoreEntry *newEntry) return; } /* We don't cache any range requests (for now!) -- adrian */ + /* RBC - and we won't until the store supports sparse objects. + * I suspec this test is incorrect though, as we can extract ranges from + * a fully cached object + */ if (r->flags.range) { + /* XXX: test to see if we can satisfy the range with the cached object */ + debug(85, 3) ("clientProcessRequest2: force MISS due to range presence\n"); http->entry = NULL; http->logType = LOG_TCP_MISS; doGetMoreData(); @@ -1470,7 +1579,7 @@ clientGetMoreData(clientStreamNode * aNode, clientHttpRequest * http) context->ourNode = aNode; /* no cbdatareference, this is only used once, and safely */ if (context->flags.storelogiccomplete) { - StoreIOBuffer tempBuffer = EMPTYIOBUFFER; + StoreIOBuffer tempBuffer; tempBuffer.offset = next->readBuffer.offset + context->headers_sz; tempBuffer.length = next->readBuffer.length; tempBuffer.data = next->readBuffer.data; @@ -1501,7 +1610,7 @@ clientReplyContext::doGetMoreData() /* We still have to do store logic processing - vary, cache hit etc */ if (http->entry != NULL) { /* someone found the object in the cache for us */ - StoreIOBuffer tempBuffer = EMPTYIOBUFFER; + StoreIOBuffer tempBuffer; storeLockObject(http->entry); if (http->entry->mem_obj == NULL) { /* @@ -1554,98 +1663,176 @@ clientReplyDetach(clientStreamNode * node, clientHttpRequest * http) */ void clientSendMoreData(void *data, StoreIOBuffer result) +{ + clientReplyContext::clientSendMoreData (data, result); +} + +void +clientReplyContext::clientSendMoreData (void *data, StoreIOBuffer result) { clientReplyContext *context = static_cast(data); - clientHttpRequest *http = context->http; - clientStreamNode *next = (clientStreamNode*)http->client_stream.head->next->data; + context->sendMoreData (result); +} + +void +clientReplyContext::makeThisHead() +{ + /* At least, I think thats what this does */ + dlinkDelete(&http->active, &ClientActiveRequests); + dlinkAdd(http, &http->active, &ClientActiveRequests); +} + +bool +clientReplyContext::errorInStream(StoreIOBuffer const &result, size_t const &sizeToProcess)const +{ + return /* aborted request */ + (http->entry && EBIT_TEST(http->entry->flags, ENTRY_ABORTED)) || + /* Upstream read error */ (result.flags.error) || + /* Upstream EOF */ (sizeToProcess == 0); +} + +void +clientReplyContext::sendStreamError(StoreIOBuffer const &result) +{ + /* call clientWriteComplete so the client socket gets closed */ + /* We call into the stream, because we don't know that there is a + * client socket! + */ + debug(88,5)("clientReplyContext::sendStreamError: A stream error has occured, marking as complete and sending no data.\n"); + StoreIOBuffer tempBuffer; + flags.complete = 1; + tempBuffer.flags.error = result.flags.error; + clientStreamCallback((clientStreamNode*)http->client_stream.head->data, http, NULL, + tempBuffer); +} + +void +clientReplyContext::pushStreamData(StoreIOBuffer const &result, char *source) +{ + StoreIOBuffer tempBuffer; + if (result.length == 0) { + debug (88,5)("clientReplyContext::pushStreamData: marking request as complete due to 0 length store result\n"); + flags.complete = 1; + } + /* REMOVE ME: Only useful for two node streams */ + assert(result.offset - headers_sz == ((clientStreamNode *) http->client_stream.tail->data)->readBuffer.offset); + tempBuffer.offset = result.offset - headers_sz; + tempBuffer.length = result.length; + tempBuffer.data = source; + clientStreamCallback((clientStreamNode*)http->client_stream.head->data, http, NULL, + tempBuffer); +} + +clientStreamNode * +clientReplyContext::next() const +{ + assert ( (clientStreamNode*)http->client_stream.head->next->data == getNextNode()); + return getNextNode(); +} + +void +clientReplyContext::waitForMoreData (StoreIOBuffer const &result) +{ + debug(88,5)("clientReplyContext::waitForMoreData: Waiting for more data to parse reply headers in client side.\n"); + /* We don't have enough to parse the metadata yet */ + /* TODO: the store should give us out of band metadata and + * obsolete this routine + */ + /* wait for more to arrive */ + reqofs += result.length; + startSendProcess(); +} + +void +clientReplyContext::startSendProcess() +{ + debug(88,5)("clientReplyContext::startSendProcess: triggering store read to clientSendMoreData\n"); + assert(reqofs <= HTTP_REQBUF_SZ); + /* TODO: copy into the supplied buffer */ + StoreIOBuffer tempBuffer; + tempBuffer.offset = reqofs; + tempBuffer.length = next()->readBuffer.length - reqofs; + tempBuffer.data = next()->readBuffer.data + reqofs; + storeClientCopy(sc, http->entry, + tempBuffer, clientSendMoreData, this); +} + +void +clientReplyContext::sendMoreData (StoreIOBuffer result) +{ StoreEntry *entry = http->entry; ConnStateData *conn = http->conn; int fd = conn ? conn->fd : -1; HttpReply *rep = NULL; - char *buf = next->readBuffer.data; + char *buf = next()->readBuffer.data; char *body_buf = buf; - ssize_t size = context->reqofs + result.length; - ssize_t body_size = size; + ssize_t sizeToProcess = reqofs + result.length; - /* This is not valid once we start doing range requests. - * Then it becomes context->reqofs == startoffirstrangeentry + + /* This is always valid until we get the headers as metadata from + * storeClientCopy. + * Then it becomes reqofs == next->readBuffer.offset() */ - assert(context->reqofs == 0 || context->flags.storelogiccomplete); + assert(reqofs == 0 || flags.storelogiccomplete); - if (context->flags.headersSent && buf != result.data) { + if (flags.headersSent && buf != result.data) { /* we've got to copy some data */ - assert(result.length <= next->readBuffer.length); + assert(result.length <= next()->readBuffer.length); xmemcpy(buf, result.data, result.length); body_buf = buf; - } else if (!context->flags.headersSent && - buf + context->reqofs !=result.data) { + } else if (!flags.headersSent && + buf + reqofs !=result.data) { /* we've got to copy some data */ - assert(result.length + context->reqofs <= next->readBuffer.length); - xmemcpy(buf + context->reqofs, result.data, result.length); + assert(result.length + reqofs <= next()->readBuffer.length); + xmemcpy(buf + reqofs, result.data, result.length); body_buf = buf; } /* We've got the final data to start pushing... */ - context->flags.storelogiccomplete = 1; + flags.storelogiccomplete = 1; - debug(88, 5) ("clientSendMoreData: %s, %d bytes (%u new bytes)\n", - http->uri, (int) size, (unsigned int)result.length); - assert(size <= HTTP_REQBUF_SZ || context->flags.headersSent); + assert(sizeToProcess <= HTTP_REQBUF_SZ || flags.headersSent); assert(http->request != NULL); /* ESI TODO: remove this assert once everything is stable */ assert(http->client_stream.head->data && cbdataReferenceValid(http->client_stream.head->data)); - dlinkDelete(&http->active, &ClientActiveRequests); - dlinkAdd(http, &http->active, &ClientActiveRequests); + + makeThisHead(); + debug(88, 5) ("clientSendMoreData: %s, %d bytes (%u new bytes)\n", + http->uri, (int) sizeToProcess, (unsigned int)result.length); debug(88, 5) ("clientSendMoreData: FD %d '%s', out.offset=%ld \n", fd, storeUrl(entry), (long int) http->out.offset); + /* update size of the request */ - context->reqsize = size; + reqsize = sizeToProcess; + if (http->request->flags.resetTCP()) { /* yuck. FIXME: move to client_side.c */ if (fd != -1) comm_reset_close(fd); return; - } else if ( /* aborted request */ - (entry && EBIT_TEST(entry->flags, ENTRY_ABORTED)) || - /* Upstream read error */ (result.flags.error) || - /* Upstream EOF */ (body_size == 0)) { - /* call clientWriteComplete so the client socket gets closed */ - /* We call into the stream, because we don't know that there is a - * client socket! - */ - StoreIOBuffer tempBuffer = EMPTYIOBUFFER; - context->flags.complete = 1; - tempBuffer.flags.error = result.flags.error; - clientStreamCallback((clientStreamNode*)http->client_stream.head->data, http, NULL, - tempBuffer); - /* clientWriteComplete(fd, NULL, 0, COMM_OK, http); */ + } + + if (errorInStream(result, sizeToProcess)) { + sendStreamError(result); return; } - if (context->flags.headersSent != 0) { - StoreIOBuffer tempBuffer = EMPTYIOBUFFER; - if (result.length == 0) - context->flags.complete = 1; - /* REMOVE ME: Only useful for two node streams */ - assert(result.offset - context->headers_sz == ((clientStreamNode *) http->client_stream.tail->data)->readBuffer.offset); - tempBuffer.offset = result.offset - context->headers_sz; - tempBuffer.length = result.length; - tempBuffer.data = buf; - clientStreamCallback((clientStreamNode*)http->client_stream.head->data, http, NULL, - tempBuffer); + + if (flags.headersSent) { + pushStreamData (result, buf); return; } /* handle headers */ if (Config.onoff.log_mime_hdrs) { size_t k; - if ((k = headersEnd(buf, size))) { + if ((k = headersEnd(buf, sizeToProcess))) { safe_free(http->al.headers.reply); http->al.headers.reply = (char *)xcalloc(k + 1, 1); xstrncpy(http->al.headers.reply, buf, k); } } - rep = clientBuildReply(context, buf, size); + rep = clientBuildReply(this, buf, sizeToProcess); + ssize_t body_size = sizeToProcess; if (rep) { - aclCheck_t *ch; int rv; httpReplyBodyBuildSize(http->request, rep, &Config.ReplyBodySize); if (clientReplyBodyTooLarge(rep, rep->content_length)) { @@ -1653,20 +1840,19 @@ clientSendMoreData(void *data, StoreIOBuffer result) clientBuildError(ERR_TOO_BIG, HTTP_FORBIDDEN, NULL, http->conn ? &http->conn->peer.sin_addr : &no_addr, http->request); - clientRemoveStoreReference(context, &context->sc, &http->entry); - startError(context, http, err); + clientRemoveStoreReference(this, &sc, &http->entry); + startError(this, http, err); httpReplyDestroy(rep); return; } - context->headers_sz = rep->hdr_sz; - body_size = size - rep->hdr_sz; + headers_sz = rep->hdr_sz; + body_size = sizeToProcess - rep->hdr_sz; assert(body_size >= 0); body_buf = buf + rep->hdr_sz; - debug(88, - 3) + debug(88,3) ("clientSendMoreData: Appending %d bytes after %d bytes of headers\n", (int) body_size, rep->hdr_sz); - ch = clientAclChecklistCreate(Config.accessList.reply, http); + aclCheck_t *ch = clientAclChecklistCreate(Config.accessList.reply, http); ch->reply = rep; rv = aclCheckFast(Config.accessList.reply, ch); aclChecklistFree(ch); @@ -1685,34 +1871,42 @@ clientSendMoreData(void *data, StoreIOBuffer result) clientBuildError(ERR_ACCESS_DENIED, HTTP_FORBIDDEN, NULL, http->conn ? &http->conn->peer.sin_addr : &no_addr, http->request); - clientRemoveStoreReference(context, &context->sc, &http->entry); - startError(context, http, err); + clientRemoveStoreReference(this, &sc, &http->entry); + startError(this, http, err); httpReplyDestroy(rep); return; } - } else if (size < HTTP_REQBUF_SZ && entry->store_status == STORE_PENDING) { - StoreIOBuffer tempBuffer = EMPTYIOBUFFER; - /* wait for more to arrive */ - context->reqofs += result.length; - assert(context->reqofs <= HTTP_REQBUF_SZ); - /* TODO: copy into the supplied buffer */ - tempBuffer.offset = context->reqofs; - tempBuffer.length = next->readBuffer.length - context->reqofs; - tempBuffer.data = next->readBuffer.data + context->reqofs; - storeClientCopy(context->sc, entry, - tempBuffer, clientSendMoreData, context); - return; - } - if (!context->flags.headersSent) - context->flags.headersSent = 1; - if (http->request->method == METHOD_HEAD) { - if (rep) { + if (http->request->method == METHOD_HEAD) { /* do not forward body for HEAD replies */ - /* ESI TODO: Can ESI affect headers on the master document */ body_size = 0; http->flags.done_copying = 1; - context->flags.complete = 1; + flags.complete = 1; + } + assert (!flags.headersSent); + flags.headersSent = true; + + StoreIOBuffer tempBuffer; + if (next()->readBuffer.offset != 0) { + if (next()->readBuffer.offset > body_size) { + /* Can't use any of the body we recieved. send nothing */ + tempBuffer.length = 0; + tempBuffer.data = NULL; + } else { + tempBuffer.length = body_size - next()->readBuffer.offset; + tempBuffer.data = body_buf + next()->readBuffer.offset; + } } else { + tempBuffer.length = body_size; + tempBuffer.data = body_buf; + } + /* TODO: move the data in the buffer back by the request header size */ + clientStreamCallback((clientStreamNode *)http->client_stream.head->data, + http, rep, tempBuffer); + return; + } else if (sizeToProcess < HTTP_REQBUF_SZ && entry->store_status == STORE_PENDING) { + waitForMoreData(result); + return; + } else if (http->request->method == METHOD_HEAD) { /* * If we are here, then store_status == STORE_OK and it * seems we have a HEAD repsponse which is missing the @@ -1721,22 +1915,32 @@ clientSendMoreData(void *data, StoreIOBuffer result) * call this reply a body, set the done_copying flag and * continue... */ + /* RBC: Note that this is seriously broken, as we *need* the + * metadata to allow further client modules to work. As such + * webservers are seriously broken, this is probably not + * going to get fixed.. perhapos we should remove it? + */ + debug (88,0)("Broken head response - probably phttpd/0.99.72\n"); http->flags.done_copying = 1; - context->flags.complete = 1; - } - } { - StoreIOBuffer tempBuffer = EMPTYIOBUFFER; - assert(rep || (body_buf && body_size)); - tempBuffer.length = body_size; - tempBuffer.data = body_buf; - /* TODO: move the data in the buffer back by the request header size */ - clientStreamCallback((clientStreamNode *)http->client_stream.head->data, http, rep, - tempBuffer); + flags.complete = 1; + + StoreIOBuffer tempBuffer; + assert(body_buf && body_size); + tempBuffer.length = body_size; + tempBuffer.data = body_buf; + clientStreamCallback((clientStreamNode *)http->client_stream.head->data, + http, NULL, tempBuffer); + } else { + debug (88,0)("clientReplyContext::sendMoreData: Unable to parse reply headers within a single HTTP_REQBUF_SZ length buffer\n"); + StoreIOBuffer tempBuffer; + tempBuffer.flags.error = 1; + sendStreamError(tempBuffer); } + fatal ("clientReplyContext::sendMoreData: Unreachable code reached \n"); } int -clientReplyBodyTooLarge(HttpReply * rep, ssize_t clen) +clientReplyBodyTooLarge(HttpReply const * rep, ssize_t clen) { if (0 == rep->maxBodySize) return 0; /* disabled */ diff --git a/src/client_side_request.cc b/src/client_side_request.cc index 495d14f4ed..783e5f4c19 100644 --- a/src/client_side_request.cc +++ b/src/client_side_request.cc @@ -1,6 +1,6 @@ /* - * $Id: client_side_request.cc,v 1.8 2002/10/22 21:16:11 hno Exp $ + * $Id: client_side_request.cc,v 1.9 2003/01/23 00:37:18 robertc Exp $ * * DEBUG: section 85 Client-side Request Routines * AUTHOR: Robert Collins (Originally Duane Wessels in client_side.c) @@ -45,6 +45,7 @@ #include "clientStream.h" #include "client_side_request.h" #include "authenticate.h" +#include "HttpRequest.h" #if LINGERING_CLOSE #define comm_close comm_lingering_close @@ -77,6 +78,7 @@ void clientProcessRequest(clientHttpRequest *); extern "C" CSR clientGetMoreData; extern "C" CSS clientReplyStatus; extern "C" CSD clientReplyDetach; +static void checkFailureRatio(err_type, hier_code); void clientRequestContextFree(void *data) @@ -98,6 +100,106 @@ clientRequestContextNew(clientHttpRequest * http) return rv; } +CBDATA_CLASS_INIT(ClientHttpRequest); +void * +ClientHttpRequest::operator new (size_t size) +{ + assert (size == sizeof (ClientHttpRequest)); + CBDATA_INIT_TYPE(ClientHttpRequest); + ClientHttpRequest *result = cbdataAlloc(ClientHttpRequest); + /* Mark result as being owned - we want the refcounter to do the delete + * call */ + cbdataReference(result); + return result; +} + +void +ClientHttpRequest::operator delete (void *address) +{ + ClientHttpRequest *temp = static_cast(address); + cbdataFree(address); + /* And allow the memory to be freed */ + cbdataReferenceDone (temp); +} + +void +ClientHttpRequest::deleteSelf() const +{ + delete this; +} + +ClientHttpRequest::ClientHttpRequest() +{ + /* reset range iterator */ + start = current_time; +} + +/* + * This function is designed to serve a fairly specific purpose. + * Occasionally our vBNS-connected caches can talk to each other, but not + * the rest of the world. Here we try to detect frequent failures which + * make the cache unusable (e.g. DNS lookup and connect() failures). If + * the failure:success ratio goes above 1.0 then we go into "hit only" + * mode where we only return UDP_HIT or UDP_MISS_NOFETCH. Neighbors + * will only fetch HITs from us if they are using the ICP protocol. We + * stay in this mode for 5 minutes. + * + * Duane W., Sept 16, 1996 + */ + +#define FAILURE_MODE_TIME 300 + +static void +checkFailureRatio(err_type etype, hier_code hcode) +{ + static double magic_factor = 100.0; + double n_good; + double n_bad; + if (hcode == HIER_NONE) + return; + n_good = magic_factor / (1.0 + request_failure_ratio); + n_bad = magic_factor - n_good; + switch (etype) { + case ERR_DNS_FAIL: + case ERR_CONNECT_FAIL: + case ERR_READ_ERROR: + n_bad++; + break; + default: + n_good++; + } + request_failure_ratio = n_bad / n_good; + if (hit_only_mode_until > squid_curtime) + return; + if (request_failure_ratio < 1.0) + return; + debug(33, 0) ("Failure Ratio at %4.2f\n", request_failure_ratio); + debug(33, 0) ("Going into hit-only-mode for %d minutes...\n", + FAILURE_MODE_TIME / 60); + hit_only_mode_until = squid_curtime + FAILURE_MODE_TIME; + request_failure_ratio = 0.8; /* reset to something less than 1.0 */ +} + +ClientHttpRequest::~ClientHttpRequest() +{ + debug(33, 3) ("httpRequestFree: %s\n", uri); + /* if body_connection !NULL, then ProcessBody has not + * found the end of the body yet + */ + if (request && request->body_connection) + clientAbortBody(request); /* abort body transter */ + /* the ICP check here was erroneous + * - storeReleaseRequest was always called if entry was valid + */ + assert(logType < LOG_TYPE_MAX); + logRequest(); + if (request) + checkFailureRatio(request->errType, al.hier.code); + freeResources(); + /* moving to the next connection is handled by the context free */ + dlinkDelete(&active, &ClientActiveRequests); +} + /* Create a request and kick it off */ /* * TODO: Pass in the buffers to be used in the inital Read request, as they are @@ -111,9 +213,9 @@ clientBeginRequest(method_t method, char const *url, CSCB * streamcallback, size_t url_sz; http_version_t http_ver = {1, 0}; - clientHttpRequest *http = cbdataAlloc(clientHttpRequest); + clientHttpRequest *http = new ClientHttpRequest; request_t *request; - StoreIOBuffer tempBuffer = EMPTYIOBUFFER; + StoreIOBuffer tempBuffer; http->http_ver = http_ver; http->conn = NULL; http->start = current_time; @@ -372,7 +474,7 @@ clientInterpretRequestHeaders(clientHttpRequest * http) String s = httpHeaderGetList(req_hdr, HDR_PRAGMA); if (strListIsMember(&s, "no-cache", ',')) no_cache++; - stringClean(&s); + s.clean(); } request->cache_control = httpHeaderGetCc(req_hdr); if (request->cache_control) @@ -412,15 +514,20 @@ clientInterpretRequestHeaders(clientHttpRequest * http) } /* ignore range header in non-GETs */ if (request->method == METHOD_GET) { - /* - * Since we're not doing ranges atm, just set the flag if the header - * exists, and then free the range header info -- adrian - */ request->range = httpHeaderGetRange(req_hdr); if (request->range) { request->flags.range = 1; - httpHdrRangeDestroy(request->range); - request->range = NULL; + clientStreamNode *node = (clientStreamNode *)http->client_stream.tail->data; + /* XXX: This is suboptimal. We should give the stream the range set, + * and thereby let the top of the stream set the offset when the + * size becomes known. As it is, we will end up requesting from 0 + * for evey -X range specification. + * RBC - this may be somewhat wrong. We should probably set the range + * iter up at this point. + */ + node->readBuffer.offset = request->range->lowestOffset(0); + http->range_iter.pos = request->range->begin(); + http->range_iter.valid = true; } } if (httpHeaderHas(req_hdr, HDR_AUTHORIZATION)) @@ -440,9 +547,9 @@ clientInterpretRequestHeaders(clientHttpRequest * http) request->flags.loopdetect = 1; } #if FORW_VIA_DB - fvdbCountVia(strBuf(s)); + fvdbCountVia(s.buf()); #endif - stringClean(&s); + s.clean(); } #if USE_USERAGENT_LOG if ((str = httpHeaderGetStr(req_hdr, HDR_USER_AGENT))) @@ -455,8 +562,8 @@ clientInterpretRequestHeaders(clientHttpRequest * http) #if FORW_VIA_DB if (httpHeaderHas(req_hdr, HDR_X_FORWARDED_FOR)) { String s = httpHeaderGetList(req_hdr, HDR_X_FORWARDED_FOR); - fvdbCountForw(strBuf(s)); - stringClean(&s); + fvdbCountForw(s.buf()); + s.clean(); } #endif if (request->method == METHOD_TRACE) { @@ -568,7 +675,6 @@ void clientProcessRequest(clientHttpRequest * http) { request_t *r = http->request; - clientStreamNode *node; debug(85, 4) ("clientProcessRequest: %s '%s'\n", RequestMethodStr[r->method], http->uri); if (r->method == METHOD_CONNECT) { @@ -583,6 +689,6 @@ clientProcessRequest(clientHttpRequest * http) /* no one should have touched this */ assert(http->out.offset == 0); /* Use the Stream Luke */ - node = (clientStreamNode *)http->client_stream.tail->data; + clientStreamNode *node = (clientStreamNode *)http->client_stream.tail->data; clientStreamRead(node, http, node->readBuffer); } diff --git a/src/client_side_request.h b/src/client_side_request.h index df532b5a08..76ac6f0332 100644 --- a/src/client_side_request.h +++ b/src/client_side_request.h @@ -1,6 +1,6 @@ /* - * $Id: client_side_request.h,v 1.1 2002/09/24 10:46:43 robertc Exp $ + * $Id: client_side_request.h,v 1.2 2003/01/23 00:37:18 robertc Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -34,7 +34,79 @@ #ifndef SQUID_CLIENTSIDEREQUEST_H #define SQUID_CLIENTSIDEREQUEST_H +#include "HttpHeader.h" +#include "clientStream.h" + /* client_side_request.c - client side request related routines (pure logic) */ extern int clientBeginRequest(method_t, char const *, CSCB *, CSD *, void *, HttpHeader const *, char *, size_t); +typedef class ClientHttpRequest clientHttpRequest; + +class ClientHttpRequest { +public: + void *operator new (size_t); + void operator delete (void *); + void deleteSelf() const; + + ClientHttpRequest(); + ~ClientHttpRequest(); + /* Not implemented - present to prevent synthetic operations */ + ClientHttpRequest(ClientHttpRequest const &); + ClientHttpRequest& operator=(ClientHttpRequest const &); + + String rangeBoundaryStr() const; + void freeResources(); + void updateCounters(); + void logRequest(); + MemObject * memObject() const; + bool multipartRangeRequest() const; + ConnStateData *conn; + request_t *request; /* Parsed URL ... */ + char *uri; + char *log_uri; + struct { + off_t offset; + size_t size; + size_t headers_sz; + } out; + HttpHdrRangeIter range_iter; /* data for iterating thru range specs */ + size_t req_sz; /* raw request size on input, not current request size */ + StoreEntry *entry; + StoreEntry *old_entry; + log_type logType; + struct timeval start; + http_version_t http_ver; + AccessLogEntry al; + struct { + unsigned int accel:1; + unsigned int internal:1; + unsigned int done_copying:1; + unsigned int purging:1; + } flags; + struct { + http_status status; + char *location; + } redirect; + dlink_node active; + dlink_list client_stream; + int mRangeCLen(); +private: + CBDATA_CLASS(ClientHttpRequest); +}; + +/* client http based routines */ +SQUIDCEXTERN char *clientConstructTraceEcho(clientHttpRequest *); +SQUIDCEXTERN aclCheck_t *clientAclChecklistCreate(const acl_access * acl, const clientHttpRequest * http); +SQUIDCEXTERN void *clientReplyNewContext(clientHttpRequest *); +SQUIDCEXTERN int clientHttpRequestStatus(int fd, clientHttpRequest const *http); + +/* ones that should be elsewhere */ +SQUIDCEXTERN void redirectStart(clientHttpRequest *, RH *, void *); + +SQUIDCEXTERN void sslStart(clientHttpRequest *, size_t *, int *); + +#if DELAY_POOLS +SQUIDCEXTERN delay_id delayClient(clientHttpRequest *); +#endif + #endif /* SQUID_CLIENTSIDEREQUEST_H */ diff --git a/src/comm.cc b/src/comm.cc index acbbc80d00..bb2214fc6e 100644 --- a/src/comm.cc +++ b/src/comm.cc @@ -1,6 +1,6 @@ /* - * $Id: comm.cc,v 1.361 2003/01/09 12:27:14 robertc Exp $ + * $Id: comm.cc,v 1.362 2003/01/23 00:37:18 robertc Exp $ * * DEBUG: section 5 Socket Functions * AUTHOR: Harvest Derived @@ -36,6 +36,7 @@ #include "squid.h" #include "StoreIOBuffer.h" #include "comm.h" +#include "fde.h" #if defined(_SQUID_CYGWIN_) #include @@ -443,6 +444,8 @@ comm_read(int fd, char *buf, int size, IOCB *handler, void *handler_data) assert(fdc_table[fd].read.handler == NULL); assert(!fd_table[fd].flags.closing); + debug(5,4)("comm_read, queueing read for FD %d\n",fd); + /* Queue a read */ fdc_table[fd].read.buf = buf; fdc_table[fd].read.size = size; @@ -559,8 +562,9 @@ comm_has_pending_read_callback(int fd) * return whether a file descriptor has a read handler * * Assumptions: the fd is open + * the fd is a comm fd. */ -int +bool comm_has_pending_read(int fd) { assert(fd_table[fd].flags.open == 1); diff --git a/src/comm.h b/src/comm.h index 6ce1bfbf69..1339366896 100644 --- a/src/comm.h +++ b/src/comm.h @@ -9,7 +9,7 @@ typedef void IOWCB(int fd, char *data, size_t len, comm_err_t flag, int xerrno, extern void comm_fill_immediate(int fd, StoreIOBuffer sb, IOFCB *callback, void *data); extern int comm_has_pending_read_callback(int fd); -extern int comm_has_pending_read(int fd); +extern bool comm_has_pending_read(int fd); extern void comm_read_cancel(int fd, IOCB *callback, void *data); extern void fdc_open(int fd, unsigned int type, char *desc); extern int comm_udp_recvfrom(int fd, void *buf, size_t len, int flags, diff --git a/src/comm_kqueue.cc b/src/comm_kqueue.cc index 0bb4a00863..04ee0f3d92 100644 --- a/src/comm_kqueue.cc +++ b/src/comm_kqueue.cc @@ -1,6 +1,6 @@ /* - * $Id: comm_kqueue.cc,v 1.6 2002/10/28 00:37:36 adrian Exp $ + * $Id: comm_kqueue.cc,v 1.7 2003/01/23 00:37:19 robertc Exp $ * * DEBUG: section 5 Socket functions * diff --git a/src/comm_poll.cc b/src/comm_poll.cc index e18d30d0bc..441e62b8d8 100644 --- a/src/comm_poll.cc +++ b/src/comm_poll.cc @@ -1,6 +1,6 @@ /* - * $Id: comm_poll.cc,v 1.8 2002/10/28 01:12:28 adrian Exp $ + * $Id: comm_poll.cc,v 1.9 2003/01/23 00:37:19 robertc Exp $ * * DEBUG: section 5 Socket Functions * @@ -34,6 +34,7 @@ #include "squid.h" #include "Store.h" +#include "fde.h" #ifdef USE_POLL diff --git a/src/comm_select.cc b/src/comm_select.cc index 906c8b74ec..2a81f64792 100644 --- a/src/comm_select.cc +++ b/src/comm_select.cc @@ -1,6 +1,6 @@ /* - * $Id: comm_select.cc,v 1.64 2002/11/15 13:29:20 hno Exp $ + * $Id: comm_select.cc,v 1.65 2003/01/23 00:37:19 robertc Exp $ * * DEBUG: section 5 Socket Functions * diff --git a/src/debug.cc b/src/debug.cc index e14665fa38..3c8a5f17be 100644 --- a/src/debug.cc +++ b/src/debug.cc @@ -1,6 +1,6 @@ /* - * $Id: debug.cc,v 1.86 2003/01/17 05:14:29 robertc Exp $ + * $Id: debug.cc,v 1.87 2003/01/23 00:37:19 robertc Exp $ * * DEBUG: section 0 Debug Routines * AUTHOR: Harvest Derived diff --git a/src/defines.h b/src/defines.h index f07909c1bb..0eda5eb49e 100644 --- a/src/defines.h +++ b/src/defines.h @@ -1,6 +1,6 @@ /* - * $Id: defines.h,v 1.111 2003/01/17 05:14:29 robertc Exp $ + * $Id: defines.h,v 1.112 2003/01/23 00:37:19 robertc Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -223,18 +223,12 @@ #define DEFAULT_SQUID_ERROR_DIR "/usr/local/squid/etc/errors" #endif -/* iteration for HttpHdrRange */ -#define HttpHdrRangeInitPos (-1) - /* use this and only this to initialize HttpHeaderPos */ #define HttpHeaderInitPos (-1) /* handy to determine the #elements in a static array */ #define countof(arr) (sizeof(arr)/sizeof(*arr)) -/* to initialize static variables (see also MemBufNull) */ -#define MemBufNULL { NULL, 0, 0, 0, 0 } - /* * Max number of ICP messages to receive per call to icpHandleUdp */ diff --git a/src/delay_pools.cc b/src/delay_pools.cc index 2c46cdd24d..f1254d0c1d 100644 --- a/src/delay_pools.cc +++ b/src/delay_pools.cc @@ -1,6 +1,6 @@ /* - * $Id: delay_pools.cc,v 1.29 2002/10/14 08:43:46 hno Exp $ + * $Id: delay_pools.cc,v 1.30 2003/01/23 00:37:19 robertc Exp $ * * DEBUG: section 77 Delay Pools * AUTHOR: David Luyer @@ -39,6 +39,8 @@ #include "squid.h" #include "StoreClient.h" #include "Store.h" +#include "MemObject.h" +#include "client_side_request.h" struct _class1DelayPool { int delay_class; @@ -655,9 +657,10 @@ delayMostBytesWanted(const MemObject * mem, int max) dlink_node *node; for (node = mem->clients.head; node; node = node->next) { sc = (store_client *) node->data; - if (sc->callback_data == NULL) /* not waiting for more data */ + if (!sc->callbackPending()) + /* not waiting for more data */ continue; - if (sc->type != STORE_MEM_CLIENT) + if (sc->getType() != STORE_MEM_CLIENT) continue; wanted = sc->copyInto.length; if (wanted > max) @@ -678,9 +681,10 @@ delayMostBytesAllowed(const MemObject * mem) delay_id d = 0; for (node = mem->clients.head; node; node = node->next) { sc = (store_client *) node->data; - if (sc->callback_data == NULL) /* not waiting for more data */ + if (!sc->callbackPending()) + /* not waiting for more data */ continue; - if (sc->type != STORE_MEM_CLIENT) + if (sc->getType() != STORE_MEM_CLIENT) continue; j = delayBytesWanted(sc->delayId, 0, sc->copyInto.length); if (j > jmax) { diff --git a/src/disk.cc b/src/disk.cc index f49139d777..9be90b15e8 100644 --- a/src/disk.cc +++ b/src/disk.cc @@ -1,6 +1,6 @@ /* - * $Id: disk.cc,v 1.162 2002/10/13 20:35:00 robertc Exp $ + * $Id: disk.cc,v 1.163 2003/01/23 00:37:19 robertc Exp $ * * DEBUG: section 6 Disk I/O Routines * AUTHOR: Harvest Derived @@ -34,6 +34,7 @@ */ #include "squid.h" +#include "fde.h" static PF diskHandleRead; static PF diskHandleWrite; @@ -295,7 +296,7 @@ diskHandleWrite(int fd, void *notused) void file_write(int fd, off_t file_offset, - void *ptr_to_buf, + void const *ptr_to_buf, int len, DWCB * handle, void *handle_data, diff --git a/src/dns.cc b/src/dns.cc index 44dd2a972c..30b92b91da 100644 --- a/src/dns.cc +++ b/src/dns.cc @@ -1,6 +1,6 @@ /* - * $Id: dns.cc,v 1.89 2002/11/15 13:28:33 hno Exp $ + * $Id: dns.cc,v 1.90 2003/01/23 00:37:19 robertc Exp $ * * DEBUG: section 34 Dnsserver interface * AUTHOR: Harvest Derived diff --git a/src/dns_internal.cc b/src/dns_internal.cc index e642b5e8b8..8643ced7c8 100644 --- a/src/dns_internal.cc +++ b/src/dns_internal.cc @@ -1,6 +1,6 @@ /* - * $Id: dns_internal.cc,v 1.51 2003/01/17 05:14:29 robertc Exp $ + * $Id: dns_internal.cc,v 1.52 2003/01/23 00:37:20 robertc Exp $ * * DEBUG: section 78 DNS lookups; interacts with lib/rfc1035.c * AUTHOR: Duane Wessels diff --git a/src/dnsserver.cc b/src/dnsserver.cc index 64b2344348..e7436629ab 100644 --- a/src/dnsserver.cc +++ b/src/dnsserver.cc @@ -1,6 +1,6 @@ /* - * $Id: dnsserver.cc,v 1.61 2002/10/13 20:35:00 robertc Exp $ + * $Id: dnsserver.cc,v 1.62 2003/01/23 00:37:20 robertc Exp $ * * DEBUG: section 0 DNS Resolver * AUTHOR: Harvest Derived diff --git a/src/enums.h b/src/enums.h index a01402de5f..b66a728bdd 100644 --- a/src/enums.h +++ b/src/enums.h @@ -1,6 +1,6 @@ /* - * $Id: enums.h,v 1.218 2002/12/06 23:19:15 hno Exp $ + * $Id: enums.h,v 1.219 2003/01/23 00:37:20 robertc Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -151,7 +151,7 @@ typedef enum { ACL_PROXY_AUTH_NEEDED } acl_lookup_state; -enum { +enum fd_type { FD_NONE, FD_LOG, FD_FILE, @@ -615,14 +615,10 @@ typedef enum { MEM_HTTP_HDR_CC, MEM_HTTP_HDR_CONTENT_RANGE, MEM_HTTP_HDR_ENTRY, - MEM_HTTP_HDR_RANGE, - MEM_HTTP_HDR_RANGE_SPEC, MEM_HTTP_REPLY, MEM_INTLIST, MEM_IPCACHE_ENTRY, MEM_MD5_DIGEST, - MEM_MEMOBJECT, - MEM_MEM_NODE, MEM_NETDBENTRY, MEM_NET_DB_NAME, MEM_RELIST, @@ -632,7 +628,6 @@ typedef enum { MEM_IDNS_QUERY, #endif MEM_EVENT, - MEM_TLV, MEM_SWAP_LOG_DATA, #if USE_SSL MEM_ACL_CERT_DATA, @@ -718,7 +713,6 @@ typedef enum { CBDATA_UNDEF = 0, CBDATA_acl_access, CBDATA_aclCheck_t, - CBDATA_clientHttpRequest, CBDATA_ConnStateData, CBDATA_ErrorState, CBDATA_FwdState, diff --git a/src/errorpage.cc b/src/errorpage.cc index f61315d764..a9fc86d1c4 100644 --- a/src/errorpage.cc +++ b/src/errorpage.cc @@ -1,6 +1,6 @@ /* - * $Id: errorpage.cc,v 1.181 2003/01/22 10:05:43 robertc Exp $ + * $Id: errorpage.cc,v 1.182 2003/01/23 00:37:20 robertc Exp $ * * DEBUG: section 4 Error Generation * AUTHOR: Duane Wessels @@ -43,6 +43,10 @@ #include "squid.h" #include "authenticate.h" #include "Store.h" +#include "HttpReply.h" +#include "HttpRequest.h" +#include "MemObject.h" +#include "fde.h" /* local types */ @@ -225,14 +229,13 @@ errorDynamicPageInfoDestroy(ErrorDynamicPageInfo * info) static int errorPageId(const char *page_name) { - int i; - for (i = 0; i < ERR_MAX; i++) { + for (int i = 0; i < ERR_MAX; i++) { if (strcmp(err_type_str[i], page_name) == 0) return i; } - for (size_t in = 0; in < ErrorDynamicPages.count; in++) { - if (strcmp(((ErrorDynamicPageInfo *) ErrorDynamicPages.items[in])->page_name, page_name) == 0) - return in + ERR_MAX; + for (size_t i = 0; i < ErrorDynamicPages.count; i++) { + if (strcmp(((ErrorDynamicPageInfo *) ErrorDynamicPages.items[i])->page_name, page_name) == 0) + return i + ERR_MAX; } return ERR_NONE; } @@ -297,7 +300,7 @@ errorAppendEntry(StoreEntry * entry, ErrorState * err) HttpReply *rep; MemObject *mem = entry->mem_obj; assert(mem != NULL); - assert(mem->inmem_hi == 0); + assert (entry->isEmpty()); if (entry->store_status != STORE_PENDING) { /* * If the entry is not STORE_PENDING, then no clients @@ -325,10 +328,9 @@ errorAppendEntry(StoreEntry * entry, ErrorState * err) */ authenticateFixHeader(rep, err->auth_user_request, err->request, 0, 1); httpReplySwapOut(rep, entry); - httpReplyAbsorb(mem->reply, rep); EBIT_CLR(entry->flags, ENTRY_FWD_HDR_WAIT); storeBufferFlush(entry); - storeComplete(entry); + entry->complete(); storeNegativeCache(entry); storeReleaseRequest(entry); storeUnlockObject(entry); @@ -457,7 +459,7 @@ errorDump(ErrorState * err, MemBuf * mb) Packer p; memBufPrintf(&str, "%s %s HTTP/%d.%d\n", RequestMethodStr[r->method], - strLen(r->urlpath) ? strBuf(r->urlpath) : "/", + r->urlpath.size() ? r->urlpath.buf() : "/", r->http_ver.major, r->http_ver.minor); packerToMemInit(&p, &str); httpHeaderPackInto(&r->header, &p); @@ -600,7 +602,7 @@ errorConvert(char token, ErrorState * err) Packer p; memBufPrintf(&mb, "%s %s HTTP/%d.%d\n", RequestMethodStr[r->method], - strLen(r->urlpath) ? strBuf(r->urlpath) : "/", + r->urlpath.size() ? r->urlpath.buf() : "/", r->http_ver.major, r->http_ver.minor); packerToMemInit(&p, &mb); httpHeaderPackInto(&r->header, &p); diff --git a/src/event.cc b/src/event.cc index 3a35ac40ef..418d0efa15 100644 --- a/src/event.cc +++ b/src/event.cc @@ -1,6 +1,6 @@ /* - * $Id: event.cc,v 1.34 2002/11/15 13:29:20 hno Exp $ + * $Id: event.cc,v 1.35 2003/01/23 00:37:20 robertc Exp $ * * DEBUG: section 41 Event Processing * AUTHOR: Henrik Nordstrom diff --git a/src/external_acl.cc b/src/external_acl.cc index 9560ea6d69..544777c263 100644 --- a/src/external_acl.cc +++ b/src/external_acl.cc @@ -1,6 +1,6 @@ /* - * $Id: external_acl.cc,v 1.21 2002/12/09 16:55:24 hno Exp $ + * $Id: external_acl.cc,v 1.22 2003/01/23 00:37:20 robertc Exp $ * * DEBUG: section 82 External ACL * AUTHOR: Henrik Nordstrom, MARA Systems AB @@ -548,26 +548,26 @@ makeExternalAclKey(aclCheck_t * ch, external_acl_data * acl_data) str = buf; break; case _external_acl_format::EXT_ACL_PATH: - str = strBuf(request->urlpath); + str = request->urlpath.buf(); break; case _external_acl_format::EXT_ACL_METHOD: str = RequestMethodStr[request->method]; break; case _external_acl_format::EXT_ACL_HEADER: sb = httpHeaderGetByName(&request->header, format->header); - str = strBuf(sb); + str = sb.buf(); break; case _external_acl_format::EXT_ACL_HEADER_ID: sb = httpHeaderGetStrOrList(&request->header, format->header_id); - str = strBuf(sb); + str = sb.buf(); break; case _external_acl_format::EXT_ACL_HEADER_MEMBER: sb = httpHeaderGetByNameListMember(&request->header, format->header, format->member, format->separator); - str = strBuf(sb); + str = sb.buf(); break; case _external_acl_format::EXT_ACL_HEADER_ID_MEMBER: sb = httpHeaderGetListMember(&request->header, format->header_id, format->member, format->separator); - str = strBuf(sb); + str = sb.buf(); break; #if USE_SSL case _external_acl_format::EXT_ACL_USER_CERT: @@ -598,7 +598,7 @@ makeExternalAclKey(aclCheck_t * ch, external_acl_data * acl_data) if (!first) memBufAppend(&mb, " ", 1); strwordquote(&mb, str); - stringClean(&sb); + sb.clean(); first = 0; } for (arg = acl_data->arguments; arg; arg = arg->next) { diff --git a/src/fd.cc b/src/fd.cc index 82f556c946..18f2ae28db 100644 --- a/src/fd.cc +++ b/src/fd.cc @@ -1,6 +1,6 @@ /* - * $Id: fd.cc,v 1.45 2002/10/13 20:35:01 robertc Exp $ + * $Id: fd.cc,v 1.46 2003/01/23 00:37:20 robertc Exp $ * * DEBUG: section 51 Filedescriptor Functions * AUTHOR: Duane Wessels @@ -34,6 +34,7 @@ */ #include "squid.h" +#include "fde.h" int default_read_method(int, char *, int); int default_write_method(int, const char *, int); diff --git a/src/fde.cc b/src/fde.cc new file mode 100644 index 0000000000..dc27ddb988 --- /dev/null +++ b/src/fde.cc @@ -0,0 +1,94 @@ + +/* + * $Id: fde.cc,v 1.1 2003/01/23 00:37:20 robertc Exp $ + * + * DEBUG: section ?? FDE + * AUTHOR: Robert Collins + * + * 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 "fde.h" +#include "Store.h" +#include "comm.h" + +bool +fde::readPending(int fdNumber) +{ + if (type == FD_SOCKET) + return comm_has_pending_read(fdNumber); + return read_handler ? true : false ; +} + +void +fde::dumpStats (StoreEntry &dumpEntry, int fdNumber) +{ + if (!flags.open) + return; + storeAppendPrintf(&dumpEntry, "%4d %-6.6s %4d %7d%c %7d%c %-21s %s\n", + fdNumber, + fdTypeStr[type], + timeout_handler ? (int) (timeout - squid_curtime) / 60 : 0, + bytes_read, + readPending(fdNumber) ? '*' : ' ', + bytes_written, + write_handler ? '*' : ' ', + remoteAddr(), + desc); +} + +void +fde::DumpStats (StoreEntry *dumpEntry) +{ + int i; + storeAppendPrintf(dumpEntry, "Active file descriptors:\n"); + storeAppendPrintf(dumpEntry, "%-4s %-6s %-4s %-7s* %-7s* %-21s %s\n", + "File", + "Type", + "Tout", + "Nread", + "Nwrite", + "Remote Address", + "Description"); + storeAppendPrintf(dumpEntry, "---- ------ ---- -------- -------- --------------------- ------------------------------\n"); + for (i = 0; i < Squid_MaxFD; i++) { + fd_table[i].dumpStats(*dumpEntry, i); + } +} + +char const * +fde::remoteAddr() const +{ + LOCAL_ARRAY(char, buf, 32); + if (type != FD_SOCKET) + return null_string; + snprintf(buf, 32, "%s.%d", ipaddr, (int) remote_port); + return buf; +} + diff --git a/src/fde.h b/src/fde.h new file mode 100644 index 0000000000..058ef5b556 --- /dev/null +++ b/src/fde.h @@ -0,0 +1,90 @@ + +/* + * $Id: fde.h,v 1.1 2003/01/23 00:37:20 robertc Exp $ + * + * + * 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. + * + */ + +#ifndef SQUID_FDE_H +#define SQUID_FDE_H + +class fde { +public: + static void DumpStats (StoreEntry *); + + char const *remoteAddr() const; + void dumpStats (StoreEntry &, int); + bool readPending(int); + + unsigned int type; + u_short local_port; + u_short remote_port; + struct in_addr local_addr; + unsigned char tos; + char ipaddr[16]; /* dotted decimal address of peer */ + char desc[FD_DESC_SZ]; + struct { + unsigned int open:1; + unsigned int close_request:1; + unsigned int write_daemon:1; + unsigned int closing:1; + unsigned int socket_eof:1; + unsigned int nolinger:1; + unsigned int nonblocking:1; + unsigned int ipc:1; + unsigned int called_connect:1; + unsigned int nodelay:1; + unsigned int close_on_exec:1; + unsigned int read_pending:1; + } flags; + int bytes_read; + int bytes_written; + int uses; /* ie # req's over persistent conn */ + struct _fde_disk disk; + PF *read_handler; + void *read_data; + PF *write_handler; + void *write_data; + PF *timeout_handler; + time_t timeout; + void *timeout_data; + void *lifetime_data; + close_handler *closeHandler; /* linked list */ + DEFER *defer_check; /* check if we should defer read */ + void *defer_data; + CommWriteStateData *rwstate; /* State data for comm_write */ + READ_HANDLER *read_method; + WRITE_HANDLER *write_method; +#if USE_SSL + SSL *ssl; + int ssl_shutdown:1; +#endif +}; + +#endif /* SQUID_FDE_H */ diff --git a/src/filemap.cc b/src/filemap.cc index b7441b022a..3c1c55c69d 100644 --- a/src/filemap.cc +++ b/src/filemap.cc @@ -1,6 +1,6 @@ /* - * $Id: filemap.cc,v 1.40 2002/10/13 20:35:01 robertc Exp $ + * $Id: filemap.cc,v 1.41 2003/01/23 00:37:20 robertc Exp $ * * DEBUG: section 8 Swap File Bitmap * AUTHOR: Harvest Derived diff --git a/src/forward.cc b/src/forward.cc index f59eeabdbd..6314f4d12b 100644 --- a/src/forward.cc +++ b/src/forward.cc @@ -1,6 +1,6 @@ /* - * $Id: forward.cc,v 1.90 2002/12/06 23:19:15 hno Exp $ + * $Id: forward.cc,v 1.91 2003/01/23 00:37:20 robertc Exp $ * * DEBUG: section 17 Request Forwarding * AUTHOR: Duane Wessels @@ -36,7 +36,9 @@ #include "squid.h" #include "Store.h" - +#include "HttpRequest.h" +#include "fde.h" +#include "MemObject.h" static PSC fwdStartComplete; static void fwdDispatch(FwdState *); @@ -87,19 +89,19 @@ fwdStateFree(FwdState * fwdState) debug(17, 3) ("fwdStateFree: %p\n", fwdState); assert(e->mem_obj); #if URL_CHECKSUM_DEBUG - assert(e->mem_obj->chksum == url_checksum(e->mem_obj->url)); + e->mem_obj->checkUrlChecksum(); #endif #if WIP_FWD_LOG fwdLog(fwdState); #endif if (e->store_status == STORE_PENDING) { - if (e->mem_obj->inmem_hi == 0) { + if (e->isEmpty()) { assert(fwdState->err); errorAppendEntry(e, fwdState->err); fwdState->err = NULL; } else { EBIT_CLR(e->flags, ENTRY_FWD_HDR_WAIT); - storeComplete(e); + e->complete(); storeReleaseRequest(e); } } @@ -131,7 +133,7 @@ fwdCheckRetry(FwdState * fwdState) { if (fwdState->entry->store_status != STORE_PENDING) return 0; - if (fwdState->entry->mem_obj->inmem_hi > 0) + if (!fwdState->entry->isEmpty()) return 0; if (fwdState->n_tries > 10) return 0; @@ -338,7 +340,7 @@ fwdConnectTimeout(int fd, void *data) peer *p = fwdStateServerPeer(fwdState); debug(17, 2) ("fwdConnectTimeout: FD %d: '%s'\n", fd, storeUrl(entry)); assert(fd == fwdState->server_fd); - if (entry->mem_obj->inmem_hi == 0) { + if (entry->isEmpty()) { err = errorCon(ERR_CONNECT_FAIL, HTTP_GATEWAY_TIMEOUT); err->request = requestLink(fwdState->request); err->xerrno = ETIMEDOUT; @@ -429,6 +431,7 @@ fwdConnectStart(void *data) ctimeout = fs->_peer->connect_timeout > 0 ? fs->_peer->connect_timeout : Config.Timeout.peer_connect; } else if (fwdState->request->flags.accelerated && + !fwdState->request->flags.internalclient && Config.Accel.single_host && Config.Accel.host) { host = Config.Accel.host; port = Config.Accel.port; @@ -447,7 +450,7 @@ fwdConnectStart(void *data) return; } #if URL_CHECKSUM_DEBUG - assert(fwdState->entry->mem_obj->chksum == url_checksum(url)); + fwdState->entry->mem_obj->checkUrlChecksum(); #endif outgoing = getOutgoingAddr(fwdState->request); tos = getOutgoingTOS(fwdState->request); @@ -614,7 +617,7 @@ fwdReforward(FwdState * fwdState) assert(e->store_status == STORE_PENDING); assert(e->mem_obj); #if URL_CHECKSUM_DEBUG - assert(e->mem_obj->chksum == url_checksum(e->mem_obj->url)); + e->mem_obj->checkUrlChecksum(); #endif debug(17, 3) ("fwdReforward: %s?\n", storeUrl(e)); if (!EBIT_TEST(e->flags, ENTRY_FWD_HDR_WAIT)) { @@ -632,7 +635,7 @@ fwdReforward(FwdState * fwdState) debug(17, 3) ("fwdReforward: No forward-servers left\n"); return 0; } - s = e->mem_obj->reply->sline.status; + s = e->getReply()->sline.status; debug(17, 3) ("fwdReforward: status %d\n", (int) s); return fwdReforwardableStatus(s); } @@ -683,7 +686,7 @@ fwdStart(int fd, StoreEntry * e, request_t * r) e->mem_obj->request = requestLink(r); e->mem_obj->fd = fd; #if URL_CHECKSUM_DEBUG - assert(e->mem_obj->chksum == url_checksum(e->mem_obj->url)); + e->mem_obj->checkUrlChecksum(); #endif if (shutting_down) { /* more yuck */ @@ -720,40 +723,6 @@ fwdStart(int fd, StoreEntry * e, request_t * r) peerSelect(r, e, fwdStartComplete, fwdState); } -int -fwdCheckDeferRead(int fd, void *data) -{ - StoreEntry *e = (StoreEntry *)data; - MemObject *mem = e->mem_obj; - int rc = 0; - if (mem == NULL) - return 0; -#if URL_CHECKSUM_DEBUG - assert(e->mem_obj->chksum == url_checksum(e->mem_obj->url)); -#endif -#if DELAY_POOLS - if (fd < 0) - (void) 0; - else if (delayIsNoDelay(fd)) - (void) 0; - else { - int i = delayMostBytesWanted(mem, INT_MAX); - if (0 == i) - return 1; - /* was: rc = -(rc != INT_MAX); */ - else if (INT_MAX == i) - rc = 0; - else - rc = -1; - } -#endif - if (EBIT_TEST(e->flags, ENTRY_FWD_HDR_WAIT)) - return rc; - if ((size_t)mem->inmem_hi - storeLowestMemReaderOffset(e) < Config.readAheadGap) - return rc; - return 1; -} - void fwdFail(FwdState * fwdState, ErrorState * errorState) { @@ -803,14 +772,14 @@ fwdComplete(FwdState * fwdState) StoreEntry *e = fwdState->entry; assert(e->store_status == STORE_PENDING); debug(17, 3) ("fwdComplete: %s\n\tstatus %d\n", storeUrl(e), - e->mem_obj->reply->sline.status); + e->getReply()->sline.status); #if URL_CHECKSUM_DEBUG - assert(e->mem_obj->chksum == url_checksum(e->mem_obj->url)); + e->mem_obj->checkUrlChecksum(); #endif - fwdLogReplyStatus(fwdState->n_tries, e->mem_obj->reply->sline.status); + fwdLogReplyStatus(fwdState->n_tries, e->getReply()->sline.status); if (fwdReforward(fwdState)) { debug(17, 3) ("fwdComplete: re-forwarding %d %s\n", - e->mem_obj->reply->sline.status, + e->getReply()->sline.status, storeUrl(e)); if (fwdState->server_fd > -1) fwdUnregister(fwdState->server_fd, fwdState); @@ -818,9 +787,9 @@ fwdComplete(FwdState * fwdState) fwdStartComplete(fwdState->servers, fwdState); } else { debug(17, 3) ("fwdComplete: not re-forwarding status %d\n", - e->mem_obj->reply->sline.status); + e->getReply()->sline.status); EBIT_CLR(e->flags, ENTRY_FWD_HDR_WAIT); - storeComplete(e); + e->complete(); /* * If fwdState isn't associated with a server FD, it * won't get freed unless we do it here. diff --git a/src/fqdncache.cc b/src/fqdncache.cc index 67fbfa16ef..b4f3c6f495 100644 --- a/src/fqdncache.cc +++ b/src/fqdncache.cc @@ -1,6 +1,6 @@ /* - * $Id: fqdncache.cc,v 1.152 2002/10/13 20:35:01 robertc Exp $ + * $Id: fqdncache.cc,v 1.153 2003/01/23 00:37:21 robertc Exp $ * * DEBUG: section 35 FQDN Cache * AUTHOR: Harvest Derived diff --git a/src/fs/Makefile.am b/src/fs/Makefile.am index 8a619ba9cb..de1aad8671 100644 --- a/src/fs/Makefile.am +++ b/src/fs/Makefile.am @@ -1,6 +1,6 @@ # Makefile for storage modules in the Squid Object Cache server # -# $Id: Makefile.am,v 1.3 2002/10/13 20:35:24 robertc Exp $ +# $Id: Makefile.am,v 1.4 2003/01/23 00:38:06 robertc Exp $ # AUTOMAKE_OPTIONS = subdir-objects diff --git a/src/fs/Makefile.in b/src/fs/Makefile.in index c4c19977a3..c4209cac66 100644 --- a/src/fs/Makefile.in +++ b/src/fs/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -15,9 +16,8 @@ # Makefile for storage modules in the Squid Object Cache server # -# $Id: Makefile.in,v 1.25 2002/10/25 03:48:57 robertc Exp $ +# $Id: Makefile.in,v 1.26 2003/01/23 00:38:07 robertc Exp $ # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -48,9 +48,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -62,6 +66,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -79,7 +87,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -92,7 +99,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -109,6 +115,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -184,19 +191,20 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/aufs/aiops.Po \ -@AMDEP_TRUE@ $(DEPDIR)/aufs/async_io.Po \ -@AMDEP_TRUE@ $(DEPDIR)/aufs/store_dir_aufs.Po \ -@AMDEP_TRUE@ $(DEPDIR)/aufs/store_io_aufs.Po \ -@AMDEP_TRUE@ $(DEPDIR)/coss/async_io.Po \ -@AMDEP_TRUE@ $(DEPDIR)/coss/store_dir_coss.Po \ -@AMDEP_TRUE@ $(DEPDIR)/coss/store_io_coss.Po \ -@AMDEP_TRUE@ $(DEPDIR)/diskd/diskd.Po \ -@AMDEP_TRUE@ $(DEPDIR)/diskd/store_dir_diskd.Po \ -@AMDEP_TRUE@ $(DEPDIR)/diskd/store_io_diskd.Po \ -@AMDEP_TRUE@ $(DEPDIR)/null/store_null.Po \ -@AMDEP_TRUE@ $(DEPDIR)/ufs/store_dir_ufs.Po \ -@AMDEP_TRUE@ $(DEPDIR)/ufs/store_io_ufs.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = aufs/$(DEPDIR)/aiops.Po \ +@AMDEP_TRUE@ aufs/$(DEPDIR)/async_io.Po \ +@AMDEP_TRUE@ aufs/$(DEPDIR)/store_dir_aufs.Po \ +@AMDEP_TRUE@ aufs/$(DEPDIR)/store_io_aufs.Po \ +@AMDEP_TRUE@ coss/$(DEPDIR)/async_io.Po \ +@AMDEP_TRUE@ coss/$(DEPDIR)/store_dir_coss.Po \ +@AMDEP_TRUE@ coss/$(DEPDIR)/store_io_coss.Po \ +@AMDEP_TRUE@ diskd/$(DEPDIR)/diskd.Po \ +@AMDEP_TRUE@ diskd/$(DEPDIR)/store_dir_diskd.Po \ +@AMDEP_TRUE@ diskd/$(DEPDIR)/store_io_diskd.Po \ +@AMDEP_TRUE@ null/$(DEPDIR)/store_null.Po \ +@AMDEP_TRUE@ ufs/$(DEPDIR)/store_dir_ufs.Po \ +@AMDEP_TRUE@ ufs/$(DEPDIR)/store_io_ufs.Po CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) @@ -226,28 +234,24 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign src/fs/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status - -AR = ar + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) aufs/.dirstamp: @$(mkinstalldirs) aufs @: > aufs/.dirstamp -$(DEPDIR)/aufs/.dirstamp: - @$(mkinstalldirs) $(DEPDIR)/aufs - @: > $(DEPDIR)/aufs/.dirstamp +aufs/$(DEPDIR)/.dirstamp: + @$(mkinstalldirs) aufs/$(DEPDIR) + @: > aufs/$(DEPDIR)/.dirstamp aufs/aiops.$(OBJEXT): aufs/aiops.cc aufs/.dirstamp \ - $(DEPDIR)/aufs/.dirstamp + aufs/$(DEPDIR)/.dirstamp aufs/async_io.$(OBJEXT): aufs/async_io.cc aufs/.dirstamp \ - $(DEPDIR)/aufs/.dirstamp + aufs/$(DEPDIR)/.dirstamp aufs/store_dir_aufs.$(OBJEXT): aufs/store_dir_aufs.cc aufs/.dirstamp \ - $(DEPDIR)/aufs/.dirstamp + aufs/$(DEPDIR)/.dirstamp aufs/store_io_aufs.$(OBJEXT): aufs/store_io_aufs.cc aufs/.dirstamp \ - $(DEPDIR)/aufs/.dirstamp + aufs/$(DEPDIR)/.dirstamp libaufs.a: $(libaufs_a_OBJECTS) $(libaufs_a_DEPENDENCIES) -rm -f libaufs.a $(libaufs_a_AR) libaufs.a $(libaufs_a_OBJECTS) $(libaufs_a_LIBADD) @@ -255,15 +259,15 @@ libaufs.a: $(libaufs_a_OBJECTS) $(libaufs_a_DEPENDENCIES) coss/.dirstamp: @$(mkinstalldirs) coss @: > coss/.dirstamp -$(DEPDIR)/coss/.dirstamp: - @$(mkinstalldirs) $(DEPDIR)/coss - @: > $(DEPDIR)/coss/.dirstamp +coss/$(DEPDIR)/.dirstamp: + @$(mkinstalldirs) coss/$(DEPDIR) + @: > coss/$(DEPDIR)/.dirstamp coss/store_io_coss.$(OBJEXT): coss/store_io_coss.cc coss/.dirstamp \ - $(DEPDIR)/coss/.dirstamp + coss/$(DEPDIR)/.dirstamp coss/store_dir_coss.$(OBJEXT): coss/store_dir_coss.cc coss/.dirstamp \ - $(DEPDIR)/coss/.dirstamp + coss/$(DEPDIR)/.dirstamp coss/async_io.$(OBJEXT): coss/async_io.cc coss/.dirstamp \ - $(DEPDIR)/coss/.dirstamp + coss/$(DEPDIR)/.dirstamp libcoss.a: $(libcoss_a_OBJECTS) $(libcoss_a_DEPENDENCIES) -rm -f libcoss.a $(libcoss_a_AR) libcoss.a $(libcoss_a_OBJECTS) $(libcoss_a_LIBADD) @@ -271,15 +275,15 @@ libcoss.a: $(libcoss_a_OBJECTS) $(libcoss_a_DEPENDENCIES) diskd/.dirstamp: @$(mkinstalldirs) diskd @: > diskd/.dirstamp -$(DEPDIR)/diskd/.dirstamp: - @$(mkinstalldirs) $(DEPDIR)/diskd - @: > $(DEPDIR)/diskd/.dirstamp +diskd/$(DEPDIR)/.dirstamp: + @$(mkinstalldirs) diskd/$(DEPDIR) + @: > diskd/$(DEPDIR)/.dirstamp diskd/diskd.$(OBJEXT): diskd/diskd.cc diskd/.dirstamp \ - $(DEPDIR)/diskd/.dirstamp + diskd/$(DEPDIR)/.dirstamp diskd/store_dir_diskd.$(OBJEXT): diskd/store_dir_diskd.cc \ - diskd/.dirstamp $(DEPDIR)/diskd/.dirstamp + diskd/.dirstamp diskd/$(DEPDIR)/.dirstamp diskd/store_io_diskd.$(OBJEXT): diskd/store_io_diskd.cc diskd/.dirstamp \ - $(DEPDIR)/diskd/.dirstamp + diskd/$(DEPDIR)/.dirstamp libdiskd.a: $(libdiskd_a_OBJECTS) $(libdiskd_a_DEPENDENCIES) -rm -f libdiskd.a $(libdiskd_a_AR) libdiskd.a $(libdiskd_a_OBJECTS) $(libdiskd_a_LIBADD) @@ -287,11 +291,11 @@ libdiskd.a: $(libdiskd_a_OBJECTS) $(libdiskd_a_DEPENDENCIES) null/.dirstamp: @$(mkinstalldirs) null @: > null/.dirstamp -$(DEPDIR)/null/.dirstamp: - @$(mkinstalldirs) $(DEPDIR)/null - @: > $(DEPDIR)/null/.dirstamp +null/$(DEPDIR)/.dirstamp: + @$(mkinstalldirs) null/$(DEPDIR) + @: > null/$(DEPDIR)/.dirstamp null/store_null.$(OBJEXT): null/store_null.cc null/.dirstamp \ - $(DEPDIR)/null/.dirstamp + null/$(DEPDIR)/.dirstamp libnull.a: $(libnull_a_OBJECTS) $(libnull_a_DEPENDENCIES) -rm -f libnull.a $(libnull_a_AR) libnull.a $(libnull_a_OBJECTS) $(libnull_a_LIBADD) @@ -299,13 +303,13 @@ libnull.a: $(libnull_a_OBJECTS) $(libnull_a_DEPENDENCIES) ufs/.dirstamp: @$(mkinstalldirs) ufs @: > ufs/.dirstamp -$(DEPDIR)/ufs/.dirstamp: - @$(mkinstalldirs) $(DEPDIR)/ufs - @: > $(DEPDIR)/ufs/.dirstamp +ufs/$(DEPDIR)/.dirstamp: + @$(mkinstalldirs) ufs/$(DEPDIR) + @: > ufs/$(DEPDIR)/.dirstamp ufs/store_dir_ufs.$(OBJEXT): ufs/store_dir_ufs.cc ufs/.dirstamp \ - $(DEPDIR)/ufs/.dirstamp + ufs/$(DEPDIR)/.dirstamp ufs/store_io_ufs.$(OBJEXT): ufs/store_io_ufs.cc ufs/.dirstamp \ - $(DEPDIR)/ufs/.dirstamp + ufs/$(DEPDIR)/.dirstamp libufs.a: $(libufs_a_OBJECTS) $(libufs_a_DEPENDENCIES) -rm -f libufs.a $(libufs_a_AR) libufs.a $(libufs_a_OBJECTS) $(libufs_a_LIBADD) @@ -329,39 +333,39 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c - -rm -f $(DEPDIR)/aufs/.dirstamp - -rm -f $(DEPDIR)/coss/.dirstamp - -rm -f $(DEPDIR)/diskd/.dirstamp - -rm -f $(DEPDIR)/null/.dirstamp - -rm -f $(DEPDIR)/ufs/.dirstamp + -rm -f aufs/$(DEPDIR)/.dirstamp -rm -f aufs/.dirstamp + -rm -f coss/$(DEPDIR)/.dirstamp -rm -f coss/.dirstamp + -rm -f diskd/$(DEPDIR)/.dirstamp -rm -f diskd/.dirstamp + -rm -f null/$(DEPDIR)/.dirstamp -rm -f null/.dirstamp + -rm -f ufs/$(DEPDIR)/.dirstamp -rm -f ufs/.dirstamp -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/aufs/aiops.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/aufs/async_io.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/aufs/store_dir_aufs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/aufs/store_io_aufs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/coss/async_io.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/coss/store_dir_coss.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/coss/store_io_coss.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/diskd/diskd.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/diskd/store_dir_diskd.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/diskd/store_io_diskd.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/null/store_null.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ufs/store_dir_ufs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ufs/store_io_ufs.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@aufs/$(DEPDIR)/aiops.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@aufs/$(DEPDIR)/async_io.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@aufs/$(DEPDIR)/store_dir_aufs.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@aufs/$(DEPDIR)/store_io_aufs.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@coss/$(DEPDIR)/async_io.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@coss/$(DEPDIR)/store_dir_coss.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@coss/$(DEPDIR)/store_io_coss.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@diskd/$(DEPDIR)/diskd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@diskd/$(DEPDIR)/store_dir_diskd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@diskd/$(DEPDIR)/store_io_diskd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@null/$(DEPDIR)/store_null.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ufs/$(DEPDIR)/store_dir_ufs.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ufs/$(DEPDIR)/store_io_ufs.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf aufs/$(DEPDIR) coss/$(DEPDIR) diskd/$(DEPDIR) null/$(DEPDIR) ufs/$(DEPDIR) .cc.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< + $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< .cc.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -371,157 +375,157 @@ distclean-depend: aufs/aiops.o: aufs/aiops.cc @AMDEP_TRUE@ source='aufs/aiops.cc' object='aufs/aiops.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/aufs/aiops.Po' tmpdepfile='$(DEPDIR)/aufs/aiops.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='aufs/$(DEPDIR)/aiops.Po' tmpdepfile='aufs/$(DEPDIR)/aiops.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o aufs/aiops.o `test -f aufs/aiops.cc || echo '$(srcdir)/'`aufs/aiops.cc + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o aufs/aiops.o `test -f 'aufs/aiops.cc' || echo '$(srcdir)/'`aufs/aiops.cc aufs/aiops.obj: aufs/aiops.cc @AMDEP_TRUE@ source='aufs/aiops.cc' object='aufs/aiops.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/aufs/aiops.Po' tmpdepfile='$(DEPDIR)/aufs/aiops.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='aufs/$(DEPDIR)/aiops.Po' tmpdepfile='aufs/$(DEPDIR)/aiops.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o aufs/aiops.obj `cygpath -w aufs/aiops.cc` aufs/async_io.o: aufs/async_io.cc @AMDEP_TRUE@ source='aufs/async_io.cc' object='aufs/async_io.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/aufs/async_io.Po' tmpdepfile='$(DEPDIR)/aufs/async_io.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='aufs/$(DEPDIR)/async_io.Po' tmpdepfile='aufs/$(DEPDIR)/async_io.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o aufs/async_io.o `test -f aufs/async_io.cc || echo '$(srcdir)/'`aufs/async_io.cc + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o aufs/async_io.o `test -f 'aufs/async_io.cc' || echo '$(srcdir)/'`aufs/async_io.cc aufs/async_io.obj: aufs/async_io.cc @AMDEP_TRUE@ source='aufs/async_io.cc' object='aufs/async_io.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/aufs/async_io.Po' tmpdepfile='$(DEPDIR)/aufs/async_io.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='aufs/$(DEPDIR)/async_io.Po' tmpdepfile='aufs/$(DEPDIR)/async_io.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o aufs/async_io.obj `cygpath -w aufs/async_io.cc` aufs/store_dir_aufs.o: aufs/store_dir_aufs.cc @AMDEP_TRUE@ source='aufs/store_dir_aufs.cc' object='aufs/store_dir_aufs.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/aufs/store_dir_aufs.Po' tmpdepfile='$(DEPDIR)/aufs/store_dir_aufs.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='aufs/$(DEPDIR)/store_dir_aufs.Po' tmpdepfile='aufs/$(DEPDIR)/store_dir_aufs.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o aufs/store_dir_aufs.o `test -f aufs/store_dir_aufs.cc || echo '$(srcdir)/'`aufs/store_dir_aufs.cc + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o aufs/store_dir_aufs.o `test -f 'aufs/store_dir_aufs.cc' || echo '$(srcdir)/'`aufs/store_dir_aufs.cc aufs/store_dir_aufs.obj: aufs/store_dir_aufs.cc @AMDEP_TRUE@ source='aufs/store_dir_aufs.cc' object='aufs/store_dir_aufs.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/aufs/store_dir_aufs.Po' tmpdepfile='$(DEPDIR)/aufs/store_dir_aufs.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='aufs/$(DEPDIR)/store_dir_aufs.Po' tmpdepfile='aufs/$(DEPDIR)/store_dir_aufs.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o aufs/store_dir_aufs.obj `cygpath -w aufs/store_dir_aufs.cc` aufs/store_io_aufs.o: aufs/store_io_aufs.cc @AMDEP_TRUE@ source='aufs/store_io_aufs.cc' object='aufs/store_io_aufs.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/aufs/store_io_aufs.Po' tmpdepfile='$(DEPDIR)/aufs/store_io_aufs.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='aufs/$(DEPDIR)/store_io_aufs.Po' tmpdepfile='aufs/$(DEPDIR)/store_io_aufs.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o aufs/store_io_aufs.o `test -f aufs/store_io_aufs.cc || echo '$(srcdir)/'`aufs/store_io_aufs.cc + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o aufs/store_io_aufs.o `test -f 'aufs/store_io_aufs.cc' || echo '$(srcdir)/'`aufs/store_io_aufs.cc aufs/store_io_aufs.obj: aufs/store_io_aufs.cc @AMDEP_TRUE@ source='aufs/store_io_aufs.cc' object='aufs/store_io_aufs.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/aufs/store_io_aufs.Po' tmpdepfile='$(DEPDIR)/aufs/store_io_aufs.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='aufs/$(DEPDIR)/store_io_aufs.Po' tmpdepfile='aufs/$(DEPDIR)/store_io_aufs.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o aufs/store_io_aufs.obj `cygpath -w aufs/store_io_aufs.cc` coss/store_io_coss.o: coss/store_io_coss.cc @AMDEP_TRUE@ source='coss/store_io_coss.cc' object='coss/store_io_coss.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/coss/store_io_coss.Po' tmpdepfile='$(DEPDIR)/coss/store_io_coss.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='coss/$(DEPDIR)/store_io_coss.Po' tmpdepfile='coss/$(DEPDIR)/store_io_coss.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o coss/store_io_coss.o `test -f coss/store_io_coss.cc || echo '$(srcdir)/'`coss/store_io_coss.cc + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o coss/store_io_coss.o `test -f 'coss/store_io_coss.cc' || echo '$(srcdir)/'`coss/store_io_coss.cc coss/store_io_coss.obj: coss/store_io_coss.cc @AMDEP_TRUE@ source='coss/store_io_coss.cc' object='coss/store_io_coss.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/coss/store_io_coss.Po' tmpdepfile='$(DEPDIR)/coss/store_io_coss.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='coss/$(DEPDIR)/store_io_coss.Po' tmpdepfile='coss/$(DEPDIR)/store_io_coss.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o coss/store_io_coss.obj `cygpath -w coss/store_io_coss.cc` coss/store_dir_coss.o: coss/store_dir_coss.cc @AMDEP_TRUE@ source='coss/store_dir_coss.cc' object='coss/store_dir_coss.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/coss/store_dir_coss.Po' tmpdepfile='$(DEPDIR)/coss/store_dir_coss.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='coss/$(DEPDIR)/store_dir_coss.Po' tmpdepfile='coss/$(DEPDIR)/store_dir_coss.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o coss/store_dir_coss.o `test -f coss/store_dir_coss.cc || echo '$(srcdir)/'`coss/store_dir_coss.cc + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o coss/store_dir_coss.o `test -f 'coss/store_dir_coss.cc' || echo '$(srcdir)/'`coss/store_dir_coss.cc coss/store_dir_coss.obj: coss/store_dir_coss.cc @AMDEP_TRUE@ source='coss/store_dir_coss.cc' object='coss/store_dir_coss.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/coss/store_dir_coss.Po' tmpdepfile='$(DEPDIR)/coss/store_dir_coss.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='coss/$(DEPDIR)/store_dir_coss.Po' tmpdepfile='coss/$(DEPDIR)/store_dir_coss.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o coss/store_dir_coss.obj `cygpath -w coss/store_dir_coss.cc` coss/async_io.o: coss/async_io.cc @AMDEP_TRUE@ source='coss/async_io.cc' object='coss/async_io.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/coss/async_io.Po' tmpdepfile='$(DEPDIR)/coss/async_io.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='coss/$(DEPDIR)/async_io.Po' tmpdepfile='coss/$(DEPDIR)/async_io.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o coss/async_io.o `test -f coss/async_io.cc || echo '$(srcdir)/'`coss/async_io.cc + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o coss/async_io.o `test -f 'coss/async_io.cc' || echo '$(srcdir)/'`coss/async_io.cc coss/async_io.obj: coss/async_io.cc @AMDEP_TRUE@ source='coss/async_io.cc' object='coss/async_io.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/coss/async_io.Po' tmpdepfile='$(DEPDIR)/coss/async_io.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='coss/$(DEPDIR)/async_io.Po' tmpdepfile='coss/$(DEPDIR)/async_io.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o coss/async_io.obj `cygpath -w coss/async_io.cc` diskd/diskd.o: diskd/diskd.cc @AMDEP_TRUE@ source='diskd/diskd.cc' object='diskd/diskd.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/diskd/diskd.Po' tmpdepfile='$(DEPDIR)/diskd/diskd.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='diskd/$(DEPDIR)/diskd.Po' tmpdepfile='diskd/$(DEPDIR)/diskd.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o diskd/diskd.o `test -f diskd/diskd.cc || echo '$(srcdir)/'`diskd/diskd.cc + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o diskd/diskd.o `test -f 'diskd/diskd.cc' || echo '$(srcdir)/'`diskd/diskd.cc diskd/diskd.obj: diskd/diskd.cc @AMDEP_TRUE@ source='diskd/diskd.cc' object='diskd/diskd.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/diskd/diskd.Po' tmpdepfile='$(DEPDIR)/diskd/diskd.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='diskd/$(DEPDIR)/diskd.Po' tmpdepfile='diskd/$(DEPDIR)/diskd.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o diskd/diskd.obj `cygpath -w diskd/diskd.cc` diskd/store_dir_diskd.o: diskd/store_dir_diskd.cc @AMDEP_TRUE@ source='diskd/store_dir_diskd.cc' object='diskd/store_dir_diskd.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/diskd/store_dir_diskd.Po' tmpdepfile='$(DEPDIR)/diskd/store_dir_diskd.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='diskd/$(DEPDIR)/store_dir_diskd.Po' tmpdepfile='diskd/$(DEPDIR)/store_dir_diskd.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o diskd/store_dir_diskd.o `test -f diskd/store_dir_diskd.cc || echo '$(srcdir)/'`diskd/store_dir_diskd.cc + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o diskd/store_dir_diskd.o `test -f 'diskd/store_dir_diskd.cc' || echo '$(srcdir)/'`diskd/store_dir_diskd.cc diskd/store_dir_diskd.obj: diskd/store_dir_diskd.cc @AMDEP_TRUE@ source='diskd/store_dir_diskd.cc' object='diskd/store_dir_diskd.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/diskd/store_dir_diskd.Po' tmpdepfile='$(DEPDIR)/diskd/store_dir_diskd.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='diskd/$(DEPDIR)/store_dir_diskd.Po' tmpdepfile='diskd/$(DEPDIR)/store_dir_diskd.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o diskd/store_dir_diskd.obj `cygpath -w diskd/store_dir_diskd.cc` diskd/store_io_diskd.o: diskd/store_io_diskd.cc @AMDEP_TRUE@ source='diskd/store_io_diskd.cc' object='diskd/store_io_diskd.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/diskd/store_io_diskd.Po' tmpdepfile='$(DEPDIR)/diskd/store_io_diskd.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='diskd/$(DEPDIR)/store_io_diskd.Po' tmpdepfile='diskd/$(DEPDIR)/store_io_diskd.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o diskd/store_io_diskd.o `test -f diskd/store_io_diskd.cc || echo '$(srcdir)/'`diskd/store_io_diskd.cc + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o diskd/store_io_diskd.o `test -f 'diskd/store_io_diskd.cc' || echo '$(srcdir)/'`diskd/store_io_diskd.cc diskd/store_io_diskd.obj: diskd/store_io_diskd.cc @AMDEP_TRUE@ source='diskd/store_io_diskd.cc' object='diskd/store_io_diskd.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/diskd/store_io_diskd.Po' tmpdepfile='$(DEPDIR)/diskd/store_io_diskd.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='diskd/$(DEPDIR)/store_io_diskd.Po' tmpdepfile='diskd/$(DEPDIR)/store_io_diskd.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o diskd/store_io_diskd.obj `cygpath -w diskd/store_io_diskd.cc` null/store_null.o: null/store_null.cc @AMDEP_TRUE@ source='null/store_null.cc' object='null/store_null.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/null/store_null.Po' tmpdepfile='$(DEPDIR)/null/store_null.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='null/$(DEPDIR)/store_null.Po' tmpdepfile='null/$(DEPDIR)/store_null.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o null/store_null.o `test -f null/store_null.cc || echo '$(srcdir)/'`null/store_null.cc + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o null/store_null.o `test -f 'null/store_null.cc' || echo '$(srcdir)/'`null/store_null.cc null/store_null.obj: null/store_null.cc @AMDEP_TRUE@ source='null/store_null.cc' object='null/store_null.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/null/store_null.Po' tmpdepfile='$(DEPDIR)/null/store_null.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='null/$(DEPDIR)/store_null.Po' tmpdepfile='null/$(DEPDIR)/store_null.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o null/store_null.obj `cygpath -w null/store_null.cc` ufs/store_dir_ufs.o: ufs/store_dir_ufs.cc @AMDEP_TRUE@ source='ufs/store_dir_ufs.cc' object='ufs/store_dir_ufs.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/ufs/store_dir_ufs.Po' tmpdepfile='$(DEPDIR)/ufs/store_dir_ufs.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='ufs/$(DEPDIR)/store_dir_ufs.Po' tmpdepfile='ufs/$(DEPDIR)/store_dir_ufs.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ufs/store_dir_ufs.o `test -f ufs/store_dir_ufs.cc || echo '$(srcdir)/'`ufs/store_dir_ufs.cc + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ufs/store_dir_ufs.o `test -f 'ufs/store_dir_ufs.cc' || echo '$(srcdir)/'`ufs/store_dir_ufs.cc ufs/store_dir_ufs.obj: ufs/store_dir_ufs.cc @AMDEP_TRUE@ source='ufs/store_dir_ufs.cc' object='ufs/store_dir_ufs.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/ufs/store_dir_ufs.Po' tmpdepfile='$(DEPDIR)/ufs/store_dir_ufs.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='ufs/$(DEPDIR)/store_dir_ufs.Po' tmpdepfile='ufs/$(DEPDIR)/store_dir_ufs.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ufs/store_dir_ufs.obj `cygpath -w ufs/store_dir_ufs.cc` ufs/store_io_ufs.o: ufs/store_io_ufs.cc @AMDEP_TRUE@ source='ufs/store_io_ufs.cc' object='ufs/store_io_ufs.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/ufs/store_io_ufs.Po' tmpdepfile='$(DEPDIR)/ufs/store_io_ufs.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='ufs/$(DEPDIR)/store_io_ufs.Po' tmpdepfile='ufs/$(DEPDIR)/store_io_ufs.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ufs/store_io_ufs.o `test -f ufs/store_io_ufs.cc || echo '$(srcdir)/'`ufs/store_io_ufs.cc + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ufs/store_io_ufs.o `test -f 'ufs/store_io_ufs.cc' || echo '$(srcdir)/'`ufs/store_io_ufs.cc ufs/store_io_ufs.obj: ufs/store_io_ufs.cc @AMDEP_TRUE@ source='ufs/store_io_ufs.cc' object='ufs/store_io_ufs.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@ depfile='$(DEPDIR)/ufs/store_io_ufs.Po' tmpdepfile='$(DEPDIR)/ufs/store_io_ufs.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='ufs/$(DEPDIR)/store_io_ufs.Po' tmpdepfile='ufs/$(DEPDIR)/store_io_ufs.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ufs/store_io_ufs.obj `cygpath -w ufs/store_io_ufs.cc` CXXDEPMODE = @CXXDEPMODE@ @@ -534,7 +538,7 @@ uninstall-info-am: # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): - @set fnord $(MAKEFLAGS); amf=$$2; \ + @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ @@ -554,7 +558,7 @@ $(RECURSIVE_TARGETS): mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: - @set fnord $(MAKEFLAGS); amf=$$2; \ + @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ @@ -582,16 +586,19 @@ tags-recursive: test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) @@ -602,23 +609,23 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../.. @@ -626,22 +633,27 @@ distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) $(mkinstalldirs) $(distdir)/coss - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done - for subdir in $(DIST_SUBDIRS); do \ + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ @@ -671,6 +683,7 @@ install-am: all-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -678,7 +691,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/src/fs/aufs/Makefile.in b/src/fs/aufs/Makefile.in index 79477be343..a0557cfabe 100644 --- a/src/fs/aufs/Makefile.in +++ b/src/fs/aufs/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -12,7 +13,6 @@ # PARTICULAR PURPOSE. @SET_MAKE@ - SHELL = @SHELL@ srcdir = @srcdir@ @@ -43,9 +43,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -57,6 +61,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -74,7 +82,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -87,7 +94,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -104,6 +110,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -125,29 +132,31 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign src/fs/aufs/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) uninstall-info-am: tags: TAGS TAGS: - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -171,6 +180,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -178,7 +188,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -227,7 +237,6 @@ uninstall-am: uninstall-info-am maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic uninstall uninstall-am uninstall-info-am - all clean: @cd .. && $(MAKE) $(MFLAGS) aufs/$@ # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/src/fs/aufs/aiops.cc b/src/fs/aufs/aiops.cc index d397b5ffa3..8786a9fc9d 100644 --- a/src/fs/aufs/aiops.cc +++ b/src/fs/aufs/aiops.cc @@ -1,5 +1,5 @@ /* - * $Id: aiops.cc,v 1.21 2003/01/09 12:27:18 robertc Exp $ + * $Id: aiops.cc,v 1.22 2003/01/23 00:38:09 robertc Exp $ * * DEBUG: section 43 AIOPS * AUTHOR: Stewart Forster diff --git a/src/fs/aufs/async_io.cc b/src/fs/aufs/async_io.cc index 0733881745..02fe2020f2 100644 --- a/src/fs/aufs/async_io.cc +++ b/src/fs/aufs/async_io.cc @@ -1,6 +1,6 @@ /* - * $Id: async_io.cc,v 1.21 2003/01/04 01:28:13 hno Exp $ + * $Id: async_io.cc,v 1.22 2003/01/23 00:38:09 robertc Exp $ * * DEBUG: section 32 Asynchronous Disk I/O * AUTHOR: Pete Bentley @@ -37,6 +37,7 @@ #include "squid.h" #include "store_asyncufs.h" #include "Store.h" +#include "fde.h" #define _AIO_OPEN 0 #define _AIO_READ 1 diff --git a/src/fs/aufs/store_dir_aufs.cc b/src/fs/aufs/store_dir_aufs.cc index 45cf1efa8e..4fe12e10fa 100644 --- a/src/fs/aufs/store_dir_aufs.cc +++ b/src/fs/aufs/store_dir_aufs.cc @@ -1,6 +1,6 @@ /* - * $Id: store_dir_aufs.cc,v 1.53 2002/12/27 10:26:35 robertc Exp $ + * $Id: store_dir_aufs.cc,v 1.54 2003/01/23 00:38:09 robertc Exp $ * * DEBUG: section 47 Store Directory Routines * AUTHOR: Duane Wessels diff --git a/src/fs/coss/Makefile.in b/src/fs/coss/Makefile.in index efeffc497b..ccc5233a7d 100644 --- a/src/fs/coss/Makefile.in +++ b/src/fs/coss/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -12,7 +13,6 @@ # PARTICULAR PURPOSE. @SET_MAKE@ - SHELL = @SHELL@ srcdir = @srcdir@ @@ -43,9 +43,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -57,6 +61,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -74,7 +82,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -87,7 +94,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -104,6 +110,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -125,29 +132,31 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign src/fs/coss/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) uninstall-info-am: tags: TAGS TAGS: - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -171,6 +180,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -178,7 +188,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -227,7 +237,6 @@ uninstall-am: uninstall-info-am maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic uninstall uninstall-am uninstall-info-am - all clean: @cd .. && $(MAKE) $(MFLAGS) coss/$@ # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/src/fs/coss/async_io.cc b/src/fs/coss/async_io.cc index 48c5d0ab93..9c244da9f6 100644 --- a/src/fs/coss/async_io.cc +++ b/src/fs/coss/async_io.cc @@ -11,7 +11,7 @@ * supports are read/write, and since COSS works on a single file * per storedir it should work just fine. * - * $Id: async_io.cc,v 1.12 2002/10/13 20:35:25 robertc Exp $ + * $Id: async_io.cc,v 1.13 2003/01/23 00:38:13 robertc Exp $ */ #include "squid.h" diff --git a/src/fs/coss/coss-notes.txt b/src/fs/coss/coss-notes.txt index 6dceaf7a5b..99f79198b5 100644 --- a/src/fs/coss/coss-notes.txt +++ b/src/fs/coss/coss-notes.txt @@ -2,7 +2,7 @@ COSS notes Adrian Chadd -$Id: coss-notes.txt,v 1.1 2001/09/19 13:23:30 adrian Exp $ +$Id: coss-notes.txt,v 1.2 2003/01/23 00:38:13 robertc Exp $ COSS is a Cyclic Object storage system originally designed by diff --git a/src/fs/coss/store_coss.h b/src/fs/coss/store_coss.h index 630f46ef89..2d3e9d173e 100644 --- a/src/fs/coss/store_coss.h +++ b/src/fs/coss/store_coss.h @@ -64,7 +64,7 @@ public: } flags; size_t st_size; void read_(char *buf, size_t size, off_t offset, STRCB * callback, void *callback_data); - void write(char *buf, size_t size, off_t offset, FREE * free_func); + void write(char const *buf, size_t size, off_t offset, FREE * free_func); void close(); CossSwapDir *SD; diff --git a/src/fs/coss/store_dir_coss.cc b/src/fs/coss/store_dir_coss.cc index 50b790bd6a..577adf4b82 100644 --- a/src/fs/coss/store_dir_coss.cc +++ b/src/fs/coss/store_dir_coss.cc @@ -1,6 +1,6 @@ /* - * $Id: store_dir_coss.cc,v 1.42 2003/01/09 11:49:53 hno Exp $ + * $Id: store_dir_coss.cc,v 1.43 2003/01/23 00:38:13 robertc Exp $ * * DEBUG: section 47 Store COSS Directory Routines * AUTHOR: Eric Stern @@ -39,6 +39,7 @@ #include "async_io.h" #include "store_coss.h" +#include "fde.h" #include "SwapDir.h" #define STORE_META_BUFSZ 4096 diff --git a/src/fs/coss/store_io_coss.cc b/src/fs/coss/store_io_coss.cc index f1b4c01838..420a287d7d 100644 --- a/src/fs/coss/store_io_coss.cc +++ b/src/fs/coss/store_io_coss.cc @@ -1,6 +1,6 @@ /* - * $Id: store_io_coss.cc,v 1.20 2002/12/27 10:26:36 robertc Exp $ + * $Id: store_io_coss.cc,v 1.21 2003/01/23 00:38:13 robertc Exp $ * * DEBUG: section 79 Storage Manager COSS Interface * AUTHOR: Eric Stern @@ -38,6 +38,8 @@ #include #include "async_io.h" #include "store_coss.h" +#include "MemObject.h" +#include "fde.h" #include "SwapDir.h" static DWCB storeCossWriteMemBufDone; @@ -317,7 +319,7 @@ CossState::read_(char *buf, size_t size, off_t offset, STRCB * callback, void *c } void -CossState::write(char *buf, size_t size, off_t offset, FREE * free_func) +CossState::write(char const *buf, size_t size, off_t offset, FREE * free_func) { char *dest; CossMemBuf *membuf; @@ -337,7 +339,7 @@ CossState::write(char *buf, size_t size, off_t offset, FREE * free_func) xmemcpy(dest, buf, size); offset_ += size; if (free_func) - (free_func) (buf); + (free_func) ((char *)buf); } diff --git a/src/fs/diskd/Makefile.am b/src/fs/diskd/Makefile.am index bbc4e73d3d..28160e28c7 100644 --- a/src/fs/diskd/Makefile.am +++ b/src/fs/diskd/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the DISKD storage driver for the Squid Object Cache server # -# $Id: Makefile.am,v 1.2 2002/10/13 20:35:26 robertc Exp $ +# $Id: Makefile.am,v 1.3 2003/01/23 00:38:15 robertc Exp $ # libexec_PROGRAMS = diskd diff --git a/src/fs/diskd/Makefile.in b/src/fs/diskd/Makefile.in index 46fe54299a..ffc4fd720b 100644 --- a/src/fs/diskd/Makefile.in +++ b/src/fs/diskd/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,9 +17,8 @@ # # Makefile for the DISKD storage driver for the Squid Object Cache server # -# $Id: Makefile.in,v 1.22 2002/10/25 03:49:00 robertc Exp $ +# $Id: Makefile.in,v 1.23 2003/01/23 00:38:15 robertc Exp $ # - SHELL = @SHELL@ srcdir = @srcdir@ @@ -49,9 +49,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -63,6 +67,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -80,7 +88,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -93,7 +100,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -110,6 +116,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -145,7 +152,8 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp -@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/diskd.Po +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/diskd.Po CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) @@ -164,9 +172,8 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign src/fs/diskd/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libexecdir) @@ -174,16 +181,16 @@ install-libexecPROGRAMS: $(libexec_PROGRAMS) p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ - f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libexecdir)/$$f; \ + 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; \ else :; fi; \ done uninstall-libexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(libexec_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f $(DESTDIR)$(libexecdir)/$$f"; \ rm -f $(DESTDIR)$(libexecdir)/$$f; \ done @@ -200,16 +207,16 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/diskd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskd.Po@am__quote@ distclean-depend: - -rm -rf $(DEPDIR) + -rm -rf ./$(DEPDIR) .cc.o: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< + $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< .cc.obj: @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @@ -219,53 +226,61 @@ distclean-depend: CXXDEPMODE = @CXXDEPMODE@ uninstall-info-am: +ETAGS = etags +ETAGSFLAGS = + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - mkid -fID $$unique $(LISP) + mkid -fID $$unique TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique GTAGS: - here=`CDPATH=: && cd $(top_builddir) && pwd` \ + here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -290,6 +305,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -297,7 +313,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" diff --git a/src/fs/diskd/diskd.cc b/src/fs/diskd/diskd.cc index f001979054..0db90ec59c 100644 --- a/src/fs/diskd/diskd.cc +++ b/src/fs/diskd/diskd.cc @@ -1,5 +1,5 @@ /* - * $Id: diskd.cc,v 1.12 2002/12/27 10:26:37 robertc Exp $ + * $Id: diskd.cc,v 1.13 2003/01/23 00:38:15 robertc Exp $ * * DEBUG: section -- External DISKD process implementation. * AUTHOR: Harvest Derived diff --git a/src/fs/diskd/store_dir_diskd.cc b/src/fs/diskd/store_dir_diskd.cc index 72f26dfbd6..cd30ae1ec3 100644 --- a/src/fs/diskd/store_dir_diskd.cc +++ b/src/fs/diskd/store_dir_diskd.cc @@ -1,6 +1,6 @@ /* - * $Id: store_dir_diskd.cc,v 1.74 2002/12/27 10:26:37 robertc Exp $ + * $Id: store_dir_diskd.cc,v 1.75 2003/01/23 00:38:15 robertc Exp $ * * DEBUG: section 47 Store Directory Routines * AUTHOR: Duane Wessels diff --git a/src/fs/diskd/store_io_diskd.cc b/src/fs/diskd/store_io_diskd.cc index 35e6114cdf..aceffabe3c 100644 --- a/src/fs/diskd/store_io_diskd.cc +++ b/src/fs/diskd/store_io_diskd.cc @@ -1,6 +1,6 @@ /* - * $Id: store_io_diskd.cc,v 1.30 2002/12/27 10:26:37 robertc Exp $ + * $Id: store_io_diskd.cc,v 1.31 2003/01/23 00:38:15 robertc Exp $ * * DEBUG: section 79 Squid-side DISKD I/O functions. * AUTHOR: Duane Wessels diff --git a/src/fs/null/Makefile.in b/src/fs/null/Makefile.in index f052776e5f..241edc0a15 100644 --- a/src/fs/null/Makefile.in +++ b/src/fs/null/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -12,7 +13,6 @@ # PARTICULAR PURPOSE. @SET_MAKE@ - SHELL = @SHELL@ srcdir = @srcdir@ @@ -43,9 +43,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -57,6 +61,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -74,7 +82,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -87,7 +94,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -104,6 +110,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -125,29 +132,31 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign src/fs/null/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) uninstall-info-am: tags: TAGS TAGS: - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -171,6 +180,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -178,7 +188,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -227,7 +237,6 @@ uninstall-am: uninstall-info-am maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic uninstall uninstall-am uninstall-info-am - all clean: @cd .. && $(MAKE) $(MFLAGS) null/$@ # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/src/fs/null/store_null.cc b/src/fs/null/store_null.cc index 2708215b37..7ed1ea9baf 100644 --- a/src/fs/null/store_null.cc +++ b/src/fs/null/store_null.cc @@ -1,6 +1,6 @@ /* - * $Id: store_null.cc,v 1.4 2002/12/27 10:26:38 robertc Exp $ + * $Id: store_null.cc,v 1.5 2003/01/23 00:38:19 robertc Exp $ * * DEBUG: section 47 Store Directory Routines * AUTHOR: Duane Wessels diff --git a/src/fs/ufs/Makefile.in b/src/fs/ufs/Makefile.in index e88efe00ca..5446199934 100644 --- a/src/fs/ufs/Makefile.in +++ b/src/fs/ufs/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.5 from Makefile.am. +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -12,7 +13,6 @@ # PARTICULAR PURPOSE. @SET_MAKE@ - SHELL = @SHELL@ srcdir = @srcdir@ @@ -43,9 +43,13 @@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_HEADER = $(INSTALL_DATA) transform = @program_transform_name@ @@ -57,6 +61,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ AMTAR = @AMTAR@ AR = @AR@ AR_R = @AR_R@ @@ -74,7 +82,6 @@ DEPDIR = @DEPDIR@ DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ -EXEEXT = @EXEEXT@ EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@ FALSE = @FALSE@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ @@ -87,7 +94,6 @@ MAINT = @MAINT@ MKDIR = @MKDIR@ MV = @MV@ NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@ -OBJEXT = @OBJEXT@ OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@ PACKAGE = @PACKAGE@ PERL = @PERL@ @@ -104,6 +110,7 @@ STORE_LIBS = @STORE_LIBS@ STORE_MODULES = @STORE_MODULES@ STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@ STORE_OBJS = @STORE_OBJS@ +STRIP = @STRIP@ TRUE = @TRUE@ VERSION = @VERSION@ XTRA_LIBS = @XTRA_LIBS@ @@ -125,29 +132,31 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configu cd $(top_srcdir) && \ $(AUTOMAKE) --foreign src/fs/ufs/Makefile Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && \ - CONFIG_HEADERS= CONFIG_LINKS= \ - CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) uninstall-info-am: tags: TAGS TAGS: - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) top_distdir = ../../.. distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - $(mkinstalldirs) "$(distdir)/$$dir"; \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ fi; \ if test -d $$d/$$file; then \ - cp -pR $$d/$$file $(distdir) \ - || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ @@ -171,6 +180,7 @@ install-am: all-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: @@ -178,7 +188,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -227,7 +237,6 @@ uninstall-am: uninstall-info-am maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic uninstall uninstall-am uninstall-info-am - all clean: @cd .. && $(MAKE) $(MFLAGS) ufs/$@ # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/src/fs/ufs/store_dir_ufs.cc b/src/fs/ufs/store_dir_ufs.cc index 0bdf49331c..8ae03a0362 100644 --- a/src/fs/ufs/store_dir_ufs.cc +++ b/src/fs/ufs/store_dir_ufs.cc @@ -1,6 +1,6 @@ /* - * $Id: store_dir_ufs.cc,v 1.53 2003/01/17 08:21:52 robertc Exp $ + * $Id: store_dir_ufs.cc,v 1.54 2003/01/23 00:38:22 robertc Exp $ * * DEBUG: section 47 Store Directory Routines * AUTHOR: Duane Wessels @@ -35,7 +35,7 @@ #include "squid.h" #include "Store.h" - +#include "fde.h" #include "store_ufs.h" #include "ufscommon.h" diff --git a/src/fs/ufs/store_io_ufs.cc b/src/fs/ufs/store_io_ufs.cc index e53320a3a2..433a5b265c 100644 --- a/src/fs/ufs/store_io_ufs.cc +++ b/src/fs/ufs/store_io_ufs.cc @@ -1,6 +1,6 @@ /* - * $Id: store_io_ufs.cc,v 1.14 2002/12/27 10:26:39 robertc Exp $ + * $Id: store_io_ufs.cc,v 1.15 2003/01/23 00:38:22 robertc Exp $ * * DEBUG: section 79 Storage Manager UFS Interface * AUTHOR: Duane Wessels @@ -273,7 +273,7 @@ UFSFile::write(char const *buf, size_t size, off_t offset, FREE *free_func) } void -UFSStoreState::write(char *buf, size_t size, off_t offset, FREE * free_func) +UFSStoreState::write(char const *buf, size_t size, off_t offset, FREE * free_func) { debug(79, 3) ("UFSStoreState::write: dirn %d, fileno %08X\n", swap_dirn, swap_filen); if (!theFile->canWrite() || writing) { @@ -406,7 +406,7 @@ UFSStoreState::~UFSStoreState() struct _queued_write *qw; while ((qw = (struct _queued_write *)linklistShift(&pending_writes))) { if (qw->free_func) - qw->free_func(qw->buf); + qw->free_func(const_cast(qw->buf)); delete qw; } } @@ -481,13 +481,13 @@ UFSStoreState::kickWriteQueue() return false; debug(79, 3) ("storeAufsKickWriteQueue: writing queued chunk of %ld bytes\n", (long int) q->size); - write(q->buf, q->size, q->offset, q->free_func); + write(const_cast(q->buf), q->size, q->offset, q->free_func); delete q; return true; } void -UFSStoreState::queueWrite(char *buf, size_t size, off_t offset, FREE * free_func) +UFSStoreState::queueWrite(char const *buf, size_t size, off_t offset, FREE * free_func) { debug(79, 3) ("UFSStoreState::queueWrite: queuing write\n"); struct _queued_write *q; diff --git a/src/ftp.cc b/src/ftp.cc index db3dc4a026..d5b3877826 100644 --- a/src/ftp.cc +++ b/src/ftp.cc @@ -1,6 +1,6 @@ /* - * $Id: ftp.cc,v 1.337 2002/10/21 15:35:12 adrian Exp $ + * $Id: ftp.cc,v 1.338 2003/01/23 00:37:21 robertc Exp $ * * DEBUG: section 9 File Transfer Protocol (FTP) * AUTHOR: Harvest Derived @@ -35,8 +35,13 @@ #include "squid.h" #include "Store.h" +#include "HttpRequest.h" +#include "HttpReply.h" +#include "fde.h" #include "comm.h" - +#include "HttpHeaderRange.h" +#include "HttpHdrContRange.h" +#include "HttpHeader.h" static const char *const crlf = "\r\n"; static char cbuf[1024]; @@ -296,8 +301,8 @@ ftpStateFree(int fdnotused, void *data) safe_free(ftpState->old_request); safe_free(ftpState->old_reply); safe_free(ftpState->old_filepath); - stringClean(&ftpState->title_url); - stringClean(&ftpState->base_href); + ftpState->title_url.clean(); + ftpState->base_href.clean(); safe_free(ftpState->filepath); safe_free(ftpState->data.host); if (ftpState->data.fd > -1) { @@ -360,12 +365,12 @@ ftpListingStart(FtpStateData * ftpState) storeAppendPrintf(e, "\n"); storeAppendPrintf(e, "\n"); storeAppendPrintf(e, "FTP Directory: %s\n", - html_quote(strBuf(ftpState->title_url))); + html_quote(ftpState->title_url.buf())); storeAppendPrintf(e, "\n"); storeAppendPrintf(e, "\n"); if (ftpState->flags.need_base_href) storeAppendPrintf(e, "\n", - html_quote(strBuf(ftpState->base_href))); + html_quote(ftpState->base_href.buf())); storeAppendPrintf(e, "\n"); if (ftpState->cwd_message) { storeAppendPrintf(e, "
\n");
@@ -378,8 +383,8 @@ ftpListingStart(FtpStateData * ftpState)
     storeAppendPrintf(e, "

\n"); storeAppendPrintf(e, "FTP Directory: "); /* "ftp://" == 6 characters */ - assert(strLen(ftpState->title_url) >= 6); - title = html_quote(strBuf(ftpState->title_url)); + assert(ftpState->title_url.size() >= 6); + title = html_quote(ftpState->title_url.buf()); for (i = 6, j = 0; title[i]; j = i) { storeAppendPrintf(e, ""); for (k = j; k < i - 1; k++) storeAppendPrintf(e, "%c", title[k]); - if (strBuf(ftpState->title_url)[k] != '/') + if (ftpState->title_url.buf()[k] != '/') storeAppendPrintf(e, "%c", title[k++]); storeAppendPrintf(e, ""); if (k < i) @@ -398,8 +403,8 @@ ftpListingStart(FtpStateData * ftpState) if (i == j) { /* Error guard, or "assert" */ storeAppendPrintf(e, "ERROR: Failed to parse URL: %s\n", - html_quote(strBuf(ftpState->title_url))); - debug(9, 0) ("Failed to parse URL: %s\n", strBuf(ftpState->title_url)); + html_quote(ftpState->title_url.buf())); + debug(9, 0) ("Failed to parse URL: %s\n", ftpState->title_url.buf()); break; } } @@ -882,8 +887,7 @@ ftpDataRead(int fd, char *buf, size_t len, comm_err_t flag, int xerrno, void *da StoreEntry *entry = ftpState->entry; size_t read_sz; #if DELAY_POOLS - MemObject *mem = entry->mem_obj; - delay_id delayId = delayMostBytesAllowed(mem); + delay_id delayId = delayMostBytesAllowed(entry->mem_obj); #endif assert(fd == ftpState->data.fd); /* Bail out early on COMM_ERR_CLOSING - close handlers will tidy up for us @@ -989,7 +993,7 @@ ftpCheckUrlpath(FtpStateData * ftpState) strCutPtr(request->urlpath, t); } } - l = strLen(request->urlpath); + l = request->urlpath.size(); ftpState->flags.need_base_href = 1; /* check for null path */ if (!l) { @@ -1000,7 +1004,7 @@ ftpCheckUrlpath(FtpStateData * ftpState) ftpState->flags.need_base_href = 0; ftpState->flags.isdir = 1; ftpState->flags.root_dir = 1; - } else if ((l >= 1) && (*(strBuf(request->urlpath) + l - 1) == '/')) { + } else if ((l >= 1) && (*(request->urlpath.buf() + l - 1) == '/')) { /* Directory URL, ending in / */ ftpState->flags.isdir = 1; ftpState->flags.need_base_href = 0; @@ -1014,34 +1018,34 @@ ftpBuildTitleUrl(FtpStateData * ftpState) { request_t *request = ftpState->request; - stringReset(&ftpState->title_url, "ftp://"); + ftpState->title_url = "ftp://"; if (strcmp(ftpState->user, "anonymous")) { - strCat(ftpState->title_url, ftpState->user); - strCat(ftpState->title_url, "@"); + ftpState->title_url.append(ftpState->user); + ftpState->title_url.append("@"); } - strCat(ftpState->title_url, request->host); + ftpState->title_url.append(request->host); if (request->port != urlDefaultPort(PROTO_FTP)) { - strCat(ftpState->title_url, ":"); - strCat(ftpState->title_url, xitoa(request->port)); + ftpState->title_url.append(":"); + ftpState->title_url.append(xitoa(request->port)); } - strCat(ftpState->title_url, strBuf(request->urlpath)); + ftpState->title_url.append (request->urlpath); - stringReset(&ftpState->base_href, "ftp://"); + ftpState->base_href = "ftp://"; if (strcmp(ftpState->user, "anonymous") != 0) { - strCat(ftpState->base_href, rfc1738_escape_part(ftpState->user)); + ftpState->base_href.append(rfc1738_escape_part(ftpState->user)); if (ftpState->password_url) { - strCat(ftpState->base_href, ":"); - strCat(ftpState->base_href, rfc1738_escape_part(ftpState->password)); + ftpState->base_href.append (":"); + ftpState->base_href.append(rfc1738_escape_part(ftpState->password)); } - strCat(ftpState->base_href, "@"); + ftpState->base_href.append("@"); } - strCat(ftpState->base_href, request->host); + ftpState->base_href.append(request->host); if (request->port != urlDefaultPort(PROTO_FTP)) { - strCat(ftpState->base_href, ":"); - strCat(ftpState->base_href, xitoa(request->port)); + ftpState->base_href.append(":"); + ftpState->base_href.append(xitoa(request->port)); } - strCat(ftpState->base_href, strBuf(request->urlpath)); - strCat(ftpState->base_href, "/"); + ftpState->base_href.append(request->urlpath); + ftpState->base_href.append("/"); } CBDATA_TYPE(FtpStateData); @@ -1088,7 +1092,7 @@ ftpStart(FwdState * fwd) ftpState->user, request->port); } /* create reply */ - reply = entry->mem_obj->reply; + reply = httpReplyCreate (); assert(reply != NULL); /* create appropriate reply */ ftpAuthRequired(reply, request, realm); @@ -1100,7 +1104,7 @@ ftpStart(FwdState * fwd) ftpCheckUrlpath(ftpState); ftpBuildTitleUrl(ftpState); debug(9, 5) ("ftpStart: host=%s, path=%s, user=%s, passwd=%s\n", - ftpState->request->host, strBuf(ftpState->request->urlpath), + ftpState->request->host, ftpState->request->urlpath.buf(), ftpState->user, ftpState->password); ftpState->state = BEGIN; ftpState->ctrl.last_command = xstrdup("Connect to server"); @@ -1419,7 +1423,7 @@ ftpSendType(FtpStateData * ftpState) mode = 'A'; } else { t = strRChr(ftpState->request->urlpath, '/'); - filename = t ? t + 1 : strBuf(ftpState->request->urlpath); + filename = t ? t + 1 : ftpState->request->urlpath.buf(); mode = mimeGetTransferMode(filename); } break; @@ -1441,7 +1445,7 @@ ftpReadType(FtpStateData * ftpState) char *d, *p; debug(9, 3) ("This is ftpReadType\n"); if (code == 200) { - p = path = xstrdup(strBuf(ftpState->request->urlpath)); + p = path = xstrdup(ftpState->request->urlpath.buf()); if (*p == '/') p++; while (*p) { @@ -1575,7 +1579,7 @@ ftpListDir(FtpStateData * ftpState) { if (!ftpState->flags.isdir) { debug(9, 3) ("Directory path did not end in /\n"); - strCat(ftpState->title_url, "/"); + ftpState->title_url.append("/"); ftpState->flags.isdir = 1; ftpState->flags.need_base_href = 1; } @@ -1632,7 +1636,7 @@ ftpReadSize(FtpStateData * ftpState) if (ftpState->size == 0) { debug(9, 2) ("ftpReadSize: SIZE reported %s on %s\n", ftpState->ctrl.last_reply, - strBuf(ftpState->title_url)); + ftpState->title_url.buf()); ftpState->size = -1; } } else if (code < 0) { @@ -2034,7 +2038,7 @@ ftpRestartable(FtpStateData * ftpState) if (ftpState->size <= 0) return 0; - ftpState->restart_offset = httpHdrRangeLowestOffset(ftpState->request->range, (size_t) ftpState->size); + ftpState->restart_offset = ftpState->request->range->lowestOffset((size_t) ftpState->size); if (ftpState->restart_offset <= 0) return 0; return 1; @@ -2096,7 +2100,7 @@ ftpReadList(FtpStateData * ftpState) /* XXX what about Config.Timeout.read? */ assert(ftpState->data.offset == 0); comm_read(ftpState->data.fd, ftpState->data.buf, ftpState->data.size, ftpDataRead, ftpState); - commSetDefer(ftpState->data.fd, fwdCheckDeferRead, ftpState->entry); + commSetDefer(ftpState->data.fd, StoreEntry::CheckDeferRead, ftpState->entry); ftpState->state = READING_DATA; /* * Cancel the timeout on the Control socket and establish one @@ -2148,7 +2152,7 @@ ftpReadRetr(FtpStateData * ftpState) #endif comm_read(ftpState->data.fd, ftpState->data.buf + ftpState->data.offset, read_sz, ftpDataRead, ftpState); - commSetDefer(ftpState->data.fd, fwdCheckDeferRead, ftpState->entry); + commSetDefer(ftpState->data.fd, StoreEntry::CheckDeferRead, ftpState->entry); ftpState->state = READING_DATA; /* * Cancel the timeout on the Control socket and establish one @@ -2283,7 +2287,7 @@ ftpTrySlashHack(FtpStateData * ftpState) wordlistDestroy(&ftpState->pathcomps); safe_free(ftpState->filepath); /* Build the new path (urlpath begins with /) */ - path = xstrdup(strBuf(ftpState->request->urlpath)); + path = xstrdup(ftpState->request->urlpath.buf()); rfc1738_unescape(path); ftpState->filepath = path; /* And off we go */ @@ -2348,7 +2352,7 @@ ftpFail(FtpStateData * ftpState) if (!ftpState->flags.isdir && /* Not a directory */ !ftpState->flags.try_slash_hack && /* Not in slash hack */ ftpState->mdtm <= 0 && ftpState->size < 0 && /* Not known as a file */ - strNCaseCmp(ftpState->request->urlpath, "/%2f", 4) != 0) { /* No slash encoded */ + ftpState->request->urlpath.nCaseCmp("/%2f", 4) != 0) { /* No slash encoded */ switch (ftpState->state) { case SENT_CWD: case SENT_RETR: @@ -2381,7 +2385,7 @@ static void ftpFailed(FtpStateData * ftpState, err_type error) { StoreEntry *entry = ftpState->entry; - if (entry->mem_obj->inmem_hi == 0) + if (entry->isEmpty()) ftpFailedErrorMessage(ftpState, error); if (ftpState->data.fd > -1) { comm_close(ftpState->data.fd); @@ -2493,15 +2497,15 @@ ftpAppendSuccessHeader(FtpStateData * ftpState) const char *filename = NULL; const char *t = NULL; StoreEntry *e = ftpState->entry; - http_reply *reply = e->mem_obj->reply; + http_reply *reply = httpReplyCreate (); http_version_t version; if (ftpState->flags.http_header_sent) return; ftpState->flags.http_header_sent = 1; - assert(e->mem_obj->inmem_hi == 0); + assert(e->isEmpty()); EBIT_CLR(e->flags, ENTRY_FWD_HDR_WAIT); - filename = (t = strRChr(urlpath, '/')) ? t + 1 : strBuf(urlpath); + filename = (t = strRChr(urlpath, '/')) ? t + 1 : urlpath.buf(); if (ftpState->flags.isdir) { mime_type = "text/html"; } else { @@ -2520,7 +2524,7 @@ ftpAppendSuccessHeader(FtpStateData * ftpState) } } storeBuffer(e); - httpReplyReset(reply); + reply = httpReplyCreate(); /* set standard stuff */ if (ftpState->restarted_offset) { /* Partial reply */ @@ -2542,7 +2546,6 @@ ftpAppendSuccessHeader(FtpStateData * ftpState) httpHeaderPutStr(&reply->header, HDR_CONTENT_ENCODING, mime_enc); httpReplySwapOut(reply, e); storeBufferFlush(e); - reply->hdr_sz = e->mem_obj->inmem_hi; storeTimestampsSet(e); if (ftpState->flags.authenticated) { /* @@ -2595,7 +2598,7 @@ ftpUrlWith2f(const request_t * request) request->host, portbuf, "/%2f", - strBuf(request->urlpath)); + request->urlpath.buf()); if ((t = strchr(buf, '?'))) *t = '\0'; return buf; diff --git a/src/globals.h b/src/globals.h index 73f5b2cc98..f918df8fe2 100644 --- a/src/globals.h +++ b/src/globals.h @@ -1,6 +1,6 @@ /* - * $Id: globals.h,v 1.117 2003/01/18 02:10:40 hno Exp $ + * $Id: globals.h,v 1.118 2003/01/23 00:37:21 robertc Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -117,7 +117,6 @@ extern int shutting_down; /* 0 */ extern int reconfiguring; /* 0 */ extern int store_dirs_rebuilding; /* 1 */ extern unsigned long store_swap_size; /* 0 */ -extern unsigned long store_mem_size; /* 0 */ extern time_t hit_only_mode_until; /* 0 */ extern StatCounters statCounter; extern char *err_type_str[]; @@ -129,8 +128,6 @@ extern double current_dtime; extern int store_hash_buckets; /* 0 */ extern hash_table *store_table; /* NULL */ extern dlink_list ClientActiveRequests; -extern const String StringNull; /* { 0, 0, NULL } */ -extern const MemBuf MemBufNull; /* MemBufNULL */ extern int hot_obj_count; /* 0 */ extern const int CacheDigestHashFuncCount; /* 4 */ extern CacheDigest *store_digest; /* NULL */ @@ -150,7 +147,7 @@ extern storefs_entry_t *storefs_list; /* NULL */ extern storerepl_entry_t *storerepl_list; /* NULL */ extern int store_swap_low; /* 0 */ extern int store_swap_high; /* 0 */ -extern int store_pages_max; /* 0 */ +extern size_t store_pages_max; /* 0 */ extern ssize_t store_maxobjsize; /* -1 */ extern RemovalPolicy *mem_policy; extern hash_table *proxy_auth_username_cache; /* NULL */ diff --git a/src/gopher.cc b/src/gopher.cc index 2ebd8f24ae..77c96faaad 100644 --- a/src/gopher.cc +++ b/src/gopher.cc @@ -1,6 +1,6 @@ /* - * $Id: gopher.cc,v 1.177 2002/10/21 15:31:44 adrian Exp $ + * $Id: gopher.cc,v 1.178 2003/01/23 00:37:21 robertc Exp $ * * DEBUG: section 10 Gopher * AUTHOR: Harvest Derived @@ -35,6 +35,7 @@ #include "squid.h" #include "Store.h" +#include "HttpRequest.h" #include "comm.h" /* gopher type code from rfc. Anawat. */ @@ -196,7 +197,7 @@ gopherMimeCreate(GopherStateData * gopherState) static void gopher_request_parse(const request_t * req, char *type_id, char *request) { - const char *path = strBuf(req->urlpath); + const char *path = req->urlpath.buf(); if (request) request[0] = '\0'; @@ -338,7 +339,7 @@ gopherToHTML(GopherStateData * gopherState, char *inbuf, int len) gopherHTMLHeader(entry, "CSO Search Result", NULL); else gopherHTMLHeader(entry, "Gopher Menu", NULL); - strCat(outbuf, "
");
+	outbuf.append ("
");
 	gopherState->HTML_header_added = 1;
     }
     while ((pos != NULL) && (pos < inbuf + len)) {
@@ -507,7 +508,7 @@ gopherToHTML(GopherStateData * gopherState, char *inbuf, int len)
 			    }
 			}
 			safe_free(escaped_selector);
-			strCat(outbuf, tmpbuf);
+			outbuf.append(tmpbuf);
 			gopherState->data_in = 1;
 		    } else {
 			memset(line, '\0', TEMP_BUF_SIZE);
@@ -545,7 +546,7 @@ gopherToHTML(GopherStateData * gopherState, char *inbuf, int len)
 		    } else {
 			snprintf(tmpbuf, TEMP_BUF_SIZE, "%s\n", html_quote(result));
 		    }
-		    strCat(outbuf, tmpbuf);
+		    outbuf.append(tmpbuf);
 		    gopherState->data_in = 1;
 		    break;
 		} else {
@@ -573,7 +574,7 @@ gopherToHTML(GopherStateData * gopherState, char *inbuf, int len)
 			{
 			    /* Print the message the server returns */
 			    snprintf(tmpbuf, TEMP_BUF_SIZE, "

%s

\n
", html_quote(result));
-			    strCat(outbuf, tmpbuf);
+			    outbuf.append(tmpbuf);
 			    gopherState->data_in = 1;
 			    break;
 			}
@@ -590,12 +591,12 @@ gopherToHTML(GopherStateData * gopherState, char *inbuf, int len)
 
     }				/* while loop */
 
-    if (strLen(outbuf) > 0) {
-	storeAppend(entry, strBuf(outbuf), strLen(outbuf));
+    if (outbuf.size() > 0) {
+	storeAppend(entry, outbuf.buf(), outbuf.size());
 	/* now let start sending stuff to client */
 	storeBufferFlush(entry);
     }
-    stringClean(&outbuf);
+    outbuf.clean();
     return;
 }
 
@@ -606,7 +607,7 @@ gopherTimeout(int fd, void *data)
     StoreEntry *entry = gopherState->entry;
     debug(10, 4) ("gopherTimeout: FD %d: '%s'\n", fd, storeUrl(entry));
     if (entry->store_status == STORE_PENDING) {
-	if (entry->mem_obj->inmem_hi == 0) {
+	if (entry->isEmpty()) {
 	    fwdFail(gopherState->fwdState,
 		errorCon(ERR_READ_TIMEOUT, HTTP_GATEWAY_TIMEOUT));
 	}
@@ -665,7 +666,7 @@ gopherReadReply(int fd, char *buf, size_t len, comm_err_t flag, int xerrno, void
 	debug(50, 1) ("gopherReadReply: error reading: %s\n", xstrerror());
 	if (ignoreErrno(errno)) {
             do_next_read = 1;
-	} else if (entry->mem_obj->inmem_hi == 0) {
+	} else if (entry->isEmpty()) {
 	    ErrorState *err;
 	    err = errorCon(ERR_READ_ERROR, HTTP_INTERNAL_SERVER_ERROR);
 	    err->xerrno = errno;
@@ -677,7 +678,7 @@ gopherReadReply(int fd, char *buf, size_t len, comm_err_t flag, int xerrno, void
 	    comm_close(fd);
             do_next_read = 0;
 	}
-    } else if (len == 0 && entry->mem_obj->inmem_hi == 0) {
+    } else if (len == 0 && entry->isEmpty()) {
 	ErrorState *err;
 	err = errorCon(ERR_ZERO_SIZE_OBJECT, HTTP_SERVICE_UNAVAILABLE);
 	err->xerrno = errno;
@@ -766,7 +767,7 @@ gopherSendComplete(int fd, char *buf, size_t size, comm_err_t errflag, int xerrn
     /* Schedule read reply. */
     /* XXX this read isn't being bound by delay pools! */
     comm_read(fd, gopherState->replybuf, BUFSIZ, gopherReadReply, gopherState);
-    commSetDefer(fd, fwdCheckDeferRead, entry);
+    commSetDefer(fd, StoreEntry::CheckDeferRead, entry);
     if (buf)
 	memFree(buf, MEM_4K_BUF);	/* Allocated by gopherSendRequest. */
 }
diff --git a/src/helper.cc b/src/helper.cc
index 80c2c0c3ef..2200dded22 100644
--- a/src/helper.cc
+++ b/src/helper.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: helper.cc,v 1.55 2003/01/09 11:41:40 hno Exp $
+ * $Id: helper.cc,v 1.56 2003/01/23 00:37:21 robertc Exp $
  *
  * DEBUG: section 84    Helper process maintenance
  * AUTHOR: Harvest Derived?
diff --git a/src/htcp.cc b/src/htcp.cc
index 09cc85f23a..78cf50a219 100644
--- a/src/htcp.cc
+++ b/src/htcp.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: htcp.cc,v 1.49 2003/01/17 05:49:34 robertc Exp $
+ * $Id: htcp.cc,v 1.50 2003/01/23 00:37:21 robertc Exp $
  *
  * DEBUG: section 31    Hypertext Caching Protocol
  * AUTHOR: Duane Wesssels
@@ -36,6 +36,7 @@
 #include "squid.h"
 #include "Store.h"
 #include "StoreClient.h"
+#include "HttpRequest.h"
 #include "comm.h"
 
 typedef struct _Countstr Countstr;
diff --git a/src/htcp.h b/src/htcp.h
index b9ca52f7a7..7975ae8203 100644
--- a/src/htcp.h
+++ b/src/htcp.h
@@ -1,6 +1,6 @@
 
 /*
- * $Id: htcp.h,v 1.1 2002/10/13 20:35:01 robertc Exp $
+ * $Id: htcp.h,v 1.2 2003/01/23 00:37:22 robertc Exp $
  *
  *
  * SQUID Web Proxy Cache          http://www.squid-cache.org/
diff --git a/src/http.cc b/src/http.cc
index fa385ba1e5..ab4a010393 100644
--- a/src/http.cc
+++ b/src/http.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: http.cc,v 1.403 2002/12/06 23:19:15 hno Exp $
+ * $Id: http.cc,v 1.404 2003/01/23 00:37:22 robertc Exp $
  *
  * DEBUG: section 11    Hypertext Transfer Protocol (HTTP)
  * AUTHOR: Harvest Derived
@@ -42,6 +42,10 @@
 #include "http.h"
 #include "authenticate.h"
 #include "Store.h"
+#include "HttpReply.h"
+#include "HttpRequest.h"
+#include "MemObject.h"
+#include "HttpHdrContRange.h"
 
 CBDATA_TYPE(HttpStateData);
 
@@ -60,6 +64,10 @@ static void httpMakePrivate(StoreEntry *);
 static void httpMakePublic(StoreEntry *);
 static int httpCachableReply(HttpStateData *);
 static void httpMaybeRemovePublic(StoreEntry *, http_status);
+static void copyOneHeaderFromClientsideRequestToUpstreamRequest(const HttpHeaderEntry *e, String strConnection, request_t * request, request_t * orig_request,
+HttpHeader * hdr_out, int we_do_ranges, bool);
+static int decideIfWeDoRanges (request_t * orig_request);
+
 
 static void
 httpStateFree(int fd, void *data)
@@ -100,7 +108,7 @@ httpTimeout(int fd, void *data)
     StoreEntry *entry = httpState->entry;
     debug(11, 4) ("httpTimeout: FD %d: '%s'\n", fd, storeUrl(entry));
     if (entry->store_status == STORE_PENDING) {
-	if (entry->mem_obj->inmem_hi == 0) {
+	if (entry->isEmpty()) {
 	    fwdFail(httpState->fwd,
 		errorCon(ERR_READ_TIMEOUT, HTTP_GATEWAY_TIMEOUT));
 	}
@@ -224,18 +232,29 @@ httpMaybeRemovePublic(StoreEntry * e, http_status status)
     }
 }
 
+int
+cacheControlAllowsCaching(HttpHdrCc *cc)
+{
+    if (cc) {
+       const int cc_mask = cc->mask;
+       if (EBIT_TEST(cc_mask, CC_PRIVATE))
+           return 0;
+       if (EBIT_TEST(cc_mask, CC_NO_CACHE))
+           return 0;
+       if (EBIT_TEST(cc_mask, CC_NO_STORE))
+           return 0;
+    }
+    return 1;
+}
+
 static int
 httpCachableReply(HttpStateData * httpState)
 {
-    HttpReply *rep = httpState->entry->mem_obj->reply;
-    HttpHeader *hdr = &rep->header;
+    HttpReply const *rep = httpState->entry->getReply();
+    HttpHeader const *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))
-	return 0;
-    if (EBIT_TEST(cc_mask, CC_NO_CACHE))
-	return 0;
-    if (EBIT_TEST(cc_mask, CC_NO_STORE))
+    if (!cacheControlAllowsCaching(rep->cache_control))
 	return 0;
     if (httpState->request->flags.auth) {
 	/*
@@ -251,7 +270,7 @@ httpCachableReply(HttpStateData * httpState)
     if (httpHeaderHas(hdr, HDR_PRAGMA)) {
 	String s = httpHeaderGetList(hdr, HDR_PRAGMA);
 	const int no_cache = strListIsMember(&s, "no-cache", ',');
-	stringClean(&s);
+	s.clean();
 	if (no_cache)
 	    return 0;
     }
@@ -263,7 +282,7 @@ httpCachableReply(HttpStateData * httpState)
     if ((v = httpHeaderGetStr(hdr, HDR_CONTENT_TYPE)))
 	if (!strncasecmp(v, "multipart/x-mixed-replace", 25))
 	    return 0;
-    switch (httpState->entry->mem_obj->reply->sline.status) {
+    switch (httpState->entry->getReply()->sline.status) {
 	/* Responses that are cacheable */
     case HTTP_OK:
     case HTTP_NON_AUTHORITATIVE_INFORMATION:
@@ -322,7 +341,9 @@ httpCachableReply(HttpStateData * httpState)
     case HTTP_UNAUTHORIZED:
     case HTTP_PROXY_AUTHENTICATION_REQUIRED:
     case HTTP_INVALID_HEADER:	/* Squid header parsing error */
+	return 0;
     default:			/* Unknown status code */
+	debug (11,0)("httpCachableReply: unknown http status code in reply\n");
 	return 0;
 	/* NOTREACHED */
 	break;
@@ -336,17 +357,16 @@ httpCachableReply(HttpStateData * httpState)
  * Returns false if the variance cannot be stored
  */
 const char *
-httpMakeVaryMark(request_t * request, HttpReply * reply)
+httpMakeVaryMark(request_t * request, HttpReply const * reply)
 {
     String vary, hdr;
     const char *pos = NULL;
     const char *item;
     const char *value;
     int ilen;
-    static String vstr =
-    {0, 0, NULL};
+    static String vstr;
 
-    stringClean(&vstr);
+    vstr.clean();
     vary = httpHeaderGetList(&reply->header, HDR_VARY);
     while (strListGetItem(&vary, ',', &item, &ilen, &pos)) {
 	char *name = (char *)xmalloc(ilen + 1);
@@ -355,16 +375,16 @@ httpMakeVaryMark(request_t * request, HttpReply * reply)
 	strListAdd(&vstr, name, ',');
 	hdr = httpHeaderGetByName(&request->header, name);
 	safe_free(name);
-	value = strBuf(hdr);
+	value = hdr.buf();
 	if (value) {
 	    value = rfc1738_escape_part(value);
-	    stringAppend(&vstr, "=\"", 2);
-	    stringAppend(&vstr, value, strlen(value));
-	    stringAppend(&vstr, "\"", 1);
+	    vstr.append("=\"", 2);
+	    vstr.append(value);
+	    vstr.append("\"", 1);
 	}
-	stringClean(&hdr);
+	hdr.clean();
     }
-    stringClean(&vary);
+    vary.clean();
 #if X_ACCELERATOR_VARY
     vary = httpHeaderGetList(&reply->header, HDR_X_ACCELERATOR_VARY);
     while (strListGetItem(&vary, ',', &item, &ilen, &pos)) {
@@ -374,19 +394,19 @@ httpMakeVaryMark(request_t * request, HttpReply * reply)
 	strListAdd(&vstr, name, ',');
 	hdr = httpHeaderGetByName(&request->header, name);
 	safe_free(name);
-	value = strBuf(hdr);
+	value = hdr.buf();
 	if (value) {
 	    value = rfc1738_escape_part(value);
-	    stringAppend(&vstr, "=\"", 2);
-	    stringAppend(&vstr, value, strlen(value));
-	    stringAppend(&vstr, "\"", 1);
+	    vstr.append("=\"", 2);
+	    vstr.append(value);
+	    vstr.append("\"", 1);
 	}
-	stringClean(&hdr);
+	hdr.clean();
     }
-    stringClean(&vary);
+    vary.clean();
 #endif
-    debug(11, 3) ("httpMakeVaryMark: %s\n", strBuf(vstr));
-    return strBuf(vstr);
+    debug(11, 3) ("httpMakeVaryMark: %s\n", vstr.buf());
+    return vstr.buf();
 }
 
 /* rewrite this later using new interfaces @?@ */
@@ -396,7 +416,10 @@ HttpStateData::processReplyHeader(const char *buf, int size)
     char *t = NULL;
     int room;
     size_t hdr_len;
-    HttpReply *reply = entry->mem_obj->reply;
+    /* Creates a blank header. If this routine is made incremental, this will
+     * not do 
+     */
+    HttpReply *reply = httpReplyCreate();
     Ctx ctx;
     debug(11, 3) ("httpProcessReplyHeader: key '%s'\n",
 	entry->getMD5Text());
@@ -413,6 +436,7 @@ HttpStateData::processReplyHeader(const char *buf, int size)
 	debug(11, 3) ("httpProcessReplyHeader: Non-HTTP-compliant header: '%s'\n", reply_hdr);
 	reply_hdr_state += 2;
 	reply->sline.status = HTTP_INVALID_HEADER;
+	storeEntryReplaceObject (entry, reply);
 	if (eof == 1) {
 	    fwdComplete(fwd);
 	    comm_close(fd);
@@ -442,20 +466,34 @@ HttpStateData::processReplyHeader(const char *buf, int size)
     /* Parse headers into reply structure */
     /* what happens if we fail to parse here? */
     httpReplyParse(reply, reply_hdr, hdr_len);
+    /* TODO: we need our own reply * in the httpState, as we probably don't want to replace
+     * the storeEntry with interim headers
+     */
+
+    /* TODO: IF the reply is a 1.0 reply, AND it has a Connection: Header
+     * Parse the header and remove all referenced headers
+     */
+
+    storeEntryReplaceObject(entry, reply);
+    /* DO NOT USE reply now */
+    reply = NULL;
+
+    if (entry->getReply()->content_range)
+       currentOffset = entry->getReply()->content_range->spec.offset;
     storeTimestampsSet(entry);
     /* Check if object is cacheable or not based on reply code */
-    debug(11, 3) ("httpProcessReplyHeader: HTTP CODE: %d\n", reply->sline.status);
+    debug(11, 3) ("httpProcessReplyHeader: HTTP CODE: %d\n", entry->getReply()->sline.status);
     if (neighbors_do_private_keys)
-	httpMaybeRemovePublic(entry, reply->sline.status);
+	httpMaybeRemovePublic(entry, entry->getReply()->sline.status);
 
     switch (httpCachableReply(this)) {
     case 1:
-	if (httpHeaderHas(&reply->header, HDR_VARY)
+	if (httpHeaderHas(&entry->getReply()->header, HDR_VARY)
 #if X_ACCELERATOR_VARY
-	    || httpHeaderHas(&reply->header, HDR_X_ACCELERATOR_VARY)
+	    || httpHeaderHas(&entry->getReply()->header, HDR_X_ACCELERATOR_VARY)
 #endif
 	    ) {
-	    const char *vary = httpMakeVaryMark(orig_request, reply);
+	    const char *vary = httpMakeVaryMark(orig_request, entry->getReply());
 	    if (vary) {
 		entry->mem_obj->vary_headers = xstrdup(vary);
 		/* Kill the old base object if a change in variance is detected */
@@ -477,27 +515,27 @@ HttpStateData::processReplyHeader(const char *buf, int size)
 	assert(0);
 	break;
     }
-    if (reply->cache_control) {
-	if (EBIT_TEST(reply->cache_control->mask, CC_PROXY_REVALIDATE))
+    if (entry->getReply()->cache_control) {
+	if (EBIT_TEST(entry->getReply()->cache_control->mask, CC_PROXY_REVALIDATE))
 	    EBIT_SET(entry->flags, ENTRY_REVALIDATE);
-	else if (EBIT_TEST(reply->cache_control->mask, CC_MUST_REVALIDATE))
+	else if (EBIT_TEST(entry->getReply()->cache_control->mask, CC_MUST_REVALIDATE))
 	    EBIT_SET(entry->flags, ENTRY_REVALIDATE);
     }
     if (flags.keepalive)
 	if (_peer)
 	    _peer->stats.n_keepalives_sent++;
-    if (reply->keep_alive)
+    if (entry->getReply()->keep_alive)
 	if (_peer)
 	    _peer->stats.n_keepalives_recv++;
-    if (reply->date > -1 && !_peer) {
-	int skew = abs(reply->date - squid_curtime);
+    if (entry->getReply()->date > -1 && !_peer) {
+	int skew = abs(entry->getReply()->date - squid_curtime);
 	if (skew > 86400)
 	    debug(11, 3) ("%s's clock is skewed by %d seconds!\n",
 		request->host, skew);
     }
     ctx_exit(ctx);
 #if HEADERS_LOG
-    headersLog(1, 0, request->method, reply);
+    headersLog(1, 0, request->method, entry->getReply());
 #endif
     if (eof == 1) {
 	fwdComplete(fwd);
@@ -505,20 +543,18 @@ HttpStateData::processReplyHeader(const char *buf, int size)
     }
 }
 
-static int
-httpPconnTransferDone(HttpStateData * httpState)
+HttpStateData::ConnectionStatus
+HttpStateData::statusIfComplete() const
 {
-    /* return 1 if we got the last of the data on a persistent connection */
-    MemObject *mem = httpState->entry->mem_obj;
-    HttpReply *reply = mem->reply;
-    int clen;
-    debug(11, 3) ("httpPconnTransferDone: FD %d\n", httpState->fd);
-    /*
-     * If we didn't send a keep-alive request header, then this
+    HttpReply const *reply = entry->getReply();
+    /* If the reply wants to close the connection, it takes precedence */
+    if (httpHeaderHasConnDir(&reply->header, "close"))
+	return COMPLETE_NONPERSISTENT_MSG;
+    /* If we didn't send a keep-alive request header, then this
      * can not be a persistent connection.
      */
-    if (!httpState->flags.keepalive)
-	return 0;
+    if (!flags.keepalive)
+	return COMPLETE_NONPERSISTENT_MSG;
     /*
      * What does the reply have to say about keep-alive?
      */
@@ -532,24 +568,34 @@ httpPconnTransferDone(HttpStateData * httpState)
      * the server times out the socket.
      */
     if (!reply->keep_alive)
-	return 0;
+        return COMPLETE_NONPERSISTENT_MSG;
+    return COMPLETE_PERSISTENT_MSG;
+}
+
+HttpStateData::ConnectionStatus
+HttpStateData::persistentConnStatus() const
+{
+    HttpReply const *reply = entry->getReply();
+    int clen;
+    debug(11, 3) ("httpPconnTransferDone: FD %d\n", fd);
+    ConnectionStatus result = statusIfComplete();
     debug(11, 5) ("httpPconnTransferDone: content_length=%d\n",
 	reply->content_length);
     /* If we haven't seen the end of reply headers, we are not done */
-    if (httpState->reply_hdr_state < 2)
-	return 0;
-    clen = httpReplyBodySize(httpState->request->method, reply);
+    if (reply_hdr_state < 2)
+	return INCOMPLETE_MSG;
+    clen = httpReplyBodySize(request->method, reply);
     /* If there is no message body, we can be persistent */
     if (0 == clen)
-	return 1;
+	return result;
     /* If the body size is unknown we must wait for EOF */
     if (clen < 0)
-	return 0;
+	return INCOMPLETE_MSG;
     /* If the body size is known, we must wait until we've gotten all of it.  */
-    if (mem->inmem_hi < reply->content_length + reply->hdr_sz)
-	return 0;
+    if (entry->mem_obj->endOffset() < reply->content_length + reply->hdr_sz)
+	return INCOMPLETE_MSG;
     /* We got it all */
-    return 1;
+    return result;
 }
 
 /* This will be called when data is ready to be read from fd.  Read until
@@ -564,10 +610,8 @@ httpReadReply(int fd, char *buf, size_t len, comm_err_t flag, int xerrno,void *d
 }
 
 void
-HttpStateData::readReply (int fd, char *buf, size_t len, comm_err_t flag, int xerrno,void *data)
+HttpStateData::readReply (int fd, char *readBuf, size_t len, comm_err_t flag, int xerrno,void *data)
 {
-    HttpStateData *httpState = static_cast(data);
-    StoreEntry *entry = httpState->entry;
     int bin;
     int clen;
     read_sz = SQUID_TCP_SO_RCVBUF;
@@ -583,11 +627,12 @@ HttpStateData::readReply (int fd, char *buf, size_t len, comm_err_t flag, int xe
 #endif
 
 
-    assert(buf == this->buf);
+    assert(buf == readBuf);
 
     /* Bail out early on COMM_ERR_CLOSING - close handlers will tidy up for us
 */
     if (flag == COMM_ERR_CLOSING) {
+	debug (11,1)("http socket closing\n");
         return;
     }
 
@@ -630,7 +675,7 @@ HttpStateData::readReply (int fd, char *buf, size_t len, comm_err_t flag, int xe
 	    fd, xstrerror());
 	if (ignoreErrno(errno)) {
 	    do_next_read = 1;
-	} else if (entry->mem_obj->inmem_hi == 0) {
+	} else if (entry->isEmpty()) {
 	    ErrorState *err;
 	    err = errorCon(ERR_READ_ERROR, HTTP_INTERNAL_SERVER_ERROR);
 	    err->request = requestLink((request_t *) request);
@@ -642,7 +687,7 @@ HttpStateData::readReply (int fd, char *buf, size_t len, comm_err_t flag, int xe
 	    do_next_read = 0;
 	    comm_close(fd);
 	}
-    } else if (flag == COMM_OK && len == 0 && entry->mem_obj->inmem_hi == 0) {
+    } else if (flag == COMM_OK && len == 0 && entry->isEmpty()) {
 	ErrorState *err;
 	err = errorCon(ERR_ZERO_SIZE_OBJECT, HTTP_SERVICE_UNAVAILABLE);
 	err->xerrno = errno;
@@ -672,7 +717,7 @@ HttpStateData::readReply (int fd, char *buf, size_t len, comm_err_t flag, int xe
 	if (reply_hdr_state < 2) {
 	    processReplyHeader(buf, len);
 	    if (reply_hdr_state == 2) {
-		http_status s = entry->mem_obj->reply->sline.status;
+		http_status s = entry->getReply()->sline.status;
 #if WIP_FWD_LOG
 		fwdStatus(fwd, s);
 #endif
@@ -689,9 +734,41 @@ HttpStateData::readReply (int fd, char *buf, size_t len, comm_err_t flag, int xe
 }
 
 void
-HttpStateData::processReplyData(const char *buf, int len)
+HttpStateData::processReplyData(const char *buf, size_t len)
 {
-    storeAppend(entry, buf, len);
+    if (reply_hdr_state < 2) {
+	do_next_read = 1;
+	maybeReadData();
+	return;
+    }
+    StoreIOBuffer tempBuffer;
+       if (!flags.headers_pushed)
+         {
+           /* The first block needs us to skip the headers */
+           /* TODO: make this cleaner. WE should push the headers, NOT the parser */
+           size_t end = headersEnd (buf, len);
+	   /* IF len > end, we need to append data after the 
+	    * out of band update to the store
+	    */
+           if (len > end)
+             {
+               tempBuffer.data = (char *)buf+end;
+               tempBuffer.length = len - end;
+               tempBuffer.offset = currentOffset;
+	       currentOffset += tempBuffer.length;
+               entry->write (tempBuffer);
+             }
+           flags.headers_pushed = 1;
+         }
+       else
+         {
+           tempBuffer.data = (char *)buf;
+           tempBuffer.length = len;
+           tempBuffer.offset = currentOffset;
+           currentOffset += len;
+           entry->write(tempBuffer);
+         }
+
     if (EBIT_TEST(entry->flags, ENTRY_ABORTED)) {
 	/*
 	 * the above storeAppend() call could ABORT this entry,
@@ -699,7 +776,12 @@ HttpStateData::processReplyData(const char *buf, int len)
 	 * there's nothing for us to do.
 	 */
 	(void) 0;
-    } else if (httpPconnTransferDone(this)) {
+    } else switch (persistentConnStatus()) {
+      case INCOMPLETE_MSG:
+        /* Wait for EOF condition */
+        do_next_read = 1;
+	break;
+      case COMPLETE_PERSISTENT_MSG:
 	/* yes we have to clear all these! */
 	commSetDefer(fd, NULL, NULL);
 	commSetTimeout(fd, -1, NULL, NULL);
@@ -713,9 +795,24 @@ HttpStateData::processReplyData(const char *buf, int len)
 	fwdComplete(fwd);
 	fd = -1;
 	httpStateFree(fd, this);
-    } else {
-	/* Wait for EOF condition */
-	do_next_read = 1;
+	return;
+      case COMPLETE_NONPERSISTENT_MSG:
+	/* close the connection ourselves */
+	/* yes - same as for a complete persistent conn here */
+	commSetDefer(fd, NULL, NULL);
+	commSetTimeout(fd, -1, NULL, NULL);
+	commSetSelect(fd, COMM_SELECT_READ, NULL, NULL, 0);
+#if DELAY_POOLS
+	delayClearNoDelay(fd);
+#endif
+	comm_remove_close_handler(fd, httpStateFree, this);
+	fwdUnregister(fd, fwd);
+	fwdComplete(fwd);
+	/* TODO: check that fd is still open here */
+	comm_close (fd);
+	fd = -1;
+	httpStateFree(fd, this);
+	return;
     }
     maybeReadData();
 }
@@ -723,8 +820,10 @@ HttpStateData::processReplyData(const char *buf, int len)
 void
 HttpStateData::maybeReadData()
 {
-    if (do_next_read)
+    if (do_next_read) {
+	do_next_read = 0;
         comm_read(fd, buf, read_sz, httpReadReply, this);
+    }
 }
 
 /* This will be called when request write is complete. Schedule read of
@@ -738,7 +837,7 @@ httpSendComplete(int fd, char *bufnotused, size_t size, comm_err_t errflag, void
     debug(11, 5) ("httpSendComplete: FD %d: size %d: errflag %d.\n",
 	fd, (int) size, errflag);
 #if URL_CHECKSUM_DEBUG
-    assert(entry->mem_obj->chksum == url_checksum(entry->mem_obj->url));
+    entry->mem_obj->checkUrlChecksum();
 #endif
     if (size > 0) {
 	fd_bytes(fd, size, FD_WRITE);
@@ -767,7 +866,7 @@ httpSendComplete(int fd, char *bufnotused, size_t size, comm_err_t errflag, void
 	 * request bodies.
 	 */
 	commSetTimeout(fd, Config.Timeout.read, httpTimeout, httpState);
-	commSetDefer(fd, fwdCheckDeferRead, entry);
+	commSetDefer(fd, StoreEntry::CheckDeferRead, entry);
     }
 }
 
@@ -796,85 +895,25 @@ httpBuildRequestHeader(request_t * request,
     if (request->lastmod > -1 && request->method == METHOD_GET)
 	httpHeaderPutTime(hdr_out, HDR_IF_MODIFIED_SINCE, request->lastmod);
 
+    bool we_do_ranges = decideIfWeDoRanges (orig_request);
+
     strConnection = httpHeaderGetList(hdr_in, HDR_CONNECTION);
-    while ((e = httpHeaderGetEntry(hdr_in, &pos))) {
-	debug(11, 5) ("httpBuildRequestHeader: %s: %s\n",
-	    strBuf(e->name), strBuf(e->value));
-	if (!httpRequestHdrAllowed(e, &strConnection)) {
-	    debug(11, 2) ("'%s' header denied by anonymize_headers configuration\n",
-		strBuf(e->name));
-	    continue;
-	}
-	switch (e->id) {
-	case HDR_PROXY_AUTHORIZATION:
-	    /* Only pass on proxy authentication to peers for which
-	     * authentication forwarding is explicitly enabled
-	     */
-	    if (request->flags.proxying && orig_request->peer_login &&
-		strcmp(orig_request->peer_login, "PASS") == 0) {
-		httpHeaderAddEntry(hdr_out, httpHeaderEntryClone(e));
-	    }
-	    break;
-	case HDR_AUTHORIZATION:
-	    /* Pass on WWW authentication even if used locally. If this is
-	     * not wanted in an accelerator then the header can be removed
-	     * using the anonymization functions
-	     */
-	    httpHeaderAddEntry(hdr_out, httpHeaderEntryClone(e));
-	    /* XXX Some accelerators might want to strip the header
-	     * and regard the reply as cacheable, but authentication
-	     * is not normally enabled for accelerators without reading
-	     * the code, so there is not much use in adding logics here
-	     * without first defining the concept of having authentication
-	     * in the accelerator...
-	     */
-	    break;
-	case HDR_HOST:
-	    /*
-	     * Normally Squid does not copy the Host: header from
-	     * a client request into the forwarded request headers.
-	     * However, there is one case when we do: If the URL
-	     * went through our redirector and the admin configured
-	     * 'redir_rewrites_host' to be off.
-	     */
-	    if (request->flags.redirected)
-		if (!Config.onoff.redir_rewrites_host)
-		    httpHeaderAddEntry(hdr_out, httpHeaderEntryClone(e));
-	    break;
-	case HDR_IF_MODIFIED_SINCE:
-	    /* append unless we added our own;
-	     * note: at most one client's ims header can pass through */
-	    if (!httpHeaderHas(hdr_out, HDR_IF_MODIFIED_SINCE))
-		httpHeaderAddEntry(hdr_out, httpHeaderEntryClone(e));
-	    break;
-	case HDR_MAX_FORWARDS:
-	    if (orig_request->method == METHOD_TRACE) {
-		/* sacrificing efficiency over clarity, etc. */
-		const int hops = httpHeaderGetInt(hdr_in, HDR_MAX_FORWARDS);
-		if (hops > 0)
-		    httpHeaderPutInt(hdr_out, HDR_MAX_FORWARDS, hops - 1);
-	    }
-	    break;
-	case HDR_VIA:
-	    /* If Via is disabled then forward any received header as-is */
-	    if (!Config.onoff.via)
-		httpHeaderAddEntry(hdr_out, httpHeaderEntryClone(e));
-	    break;
-	case HDR_PROXY_CONNECTION:
-	case HDR_CONNECTION:
-	case HDR_X_FORWARDED_FOR:
-	case HDR_CACHE_CONTROL:
-	    /* append these after the loop if needed */
-	    break;
-	case HDR_FRONT_END_HTTPS:
-	    if (!flags.front_end_https)
-		httpHeaderAddEntry(hdr_out, httpHeaderEntryClone(e));
-	    break;
-	default:
-	    /* pass on all other header fields */
-	    httpHeaderAddEntry(hdr_out, httpHeaderEntryClone(e));
-	}
-    }
+    while ((e = httpHeaderGetEntry(hdr_in, &pos)))
+	copyOneHeaderFromClientsideRequestToUpstreamRequest(e, strConnection, request, orig_request, hdr_out, we_do_ranges, flags.front_end_https);
+
+    /* Abstraction break: We should interpret myultipart/byterange responses
+     * into offset-length data, and this works around our inability to do so.
+     */
+    if (!we_do_ranges && orig_request->multipartRangeRequest())
+      {
+	/* don't cache the result */
+	orig_request->flags.cachable = 0; 
+	/* pretend it's not a range request */
+	orig_request->range->deleteSelf();
+	orig_request->range = NULL;
+	orig_request->flags.range = 0;
+      }
+
 
     /* append Via */
     if (Config.onoff.via) {
@@ -883,8 +922,8 @@ httpBuildRequestHeader(request_t * request,
 	    orig_request->http_ver.major,
 	    orig_request->http_ver.minor, ThisCache);
 	strListAdd(&strVia, bbuf, ',');
-	httpHeaderPutStr(hdr_out, HDR_VIA, strBuf(strVia));
-	stringClean(&strVia);
+	httpHeaderPutStr(hdr_out, HDR_VIA, strVia.buf());
+	strVia.clean();
     }
     /* append X-Forwarded-For */
     strFwd = httpHeaderGetList(hdr_in, HDR_X_FORWARDED_FOR);
@@ -892,8 +931,8 @@ httpBuildRequestHeader(request_t * request,
 	strListAdd(&strFwd, inet_ntoa(orig_request->client_addr), ',');
     else
 	strListAdd(&strFwd, "unknown", ',');
-    httpHeaderPutStr(hdr_out, HDR_X_FORWARDED_FOR, strBuf(strFwd));
-    stringClean(&strFwd);
+    httpHeaderPutStr(hdr_out, HDR_X_FORWARDED_FOR, strFwd.buf());
+    strFwd.clean();
 
     /* append Host if not there already */
     if (!httpHeaderHas(hdr_out, HDR_HOST)) {
@@ -938,8 +977,8 @@ httpBuildRequestHeader(request_t * request,
 	if (!EBIT_TEST(cc->mask, CC_MAX_AGE)) {
 	    const char *url = entry ? storeUrl(entry) : urlCanonical(orig_request);
 	    httpHdrCcSetMaxAge(cc, getMaxAge(url));
-	    if (strLen(request->urlpath))
-		assert(strstr(url, strBuf(request->urlpath)));
+	    if (request->urlpath.size())
+		assert(strstr(url, request->urlpath.buf()));
 	}
 	if (flags.only_if_cached)
 	    EBIT_SET(cc->mask, CC_ONLY_IF_CACHED);
@@ -962,9 +1001,118 @@ httpBuildRequestHeader(request_t * request,
 
     /* Now mangle the headers. */
     httpHdrMangleList(hdr_out, request);
-    stringClean(&strConnection);
+    strConnection.clean();
 }
 
+
+void
+copyOneHeaderFromClientsideRequestToUpstreamRequest(const HttpHeaderEntry *e, String strConnection, request_t * request, request_t * orig_request, HttpHeader * hdr_out, int we_do_ranges, bool front_end_https)
+{
+    debug(11, 5) ("httpBuildRequestHeader: %s: %s\n",
+       e->name.buf(), e->value.buf());
+    if (!httpRequestHdrAllowed(e, &strConnection)) {
+       debug(11, 2) ("'%s' header denied by anonymize_headers configuration\n",+       e->name.buf());
+       return;
+    }
+    switch (e->id) {
+      case HDR_PROXY_AUTHORIZATION:
+      /* Only pass on proxy authentication to peers for which
+       * authentication forwarding is explicitly enabled
+       */
+      if (request->flags.proxying && orig_request->peer_login &&
+         strcmp(orig_request->peer_login, "PASS") == 0) {
+         httpHeaderAddEntry(hdr_out, httpHeaderEntryClone(e));
+      }
+      break;
+      case HDR_AUTHORIZATION:
+      /* Pass on WWW authentication even if used locally. If this is
+       * not wanted in an accelerator then the header can be removed
+       * using the anonymization functions
+       */
+      httpHeaderAddEntry(hdr_out, httpHeaderEntryClone(e));
+      /* XXX Some accelerators might want to strip the header
+       * and regard the reply as cacheable, but authentication
+       * is not normally enabled for accelerators without reading
+       * the code, so there is not much use in adding logics here
+       * without first defining the concept of having authentication
+       * in the accelerator...
+       */
+      break;
+      case HDR_HOST:
+      /*
+       * Normally Squid does not copy the Host: header from
+       * a client request into the forwarded request headers.
+       * However, there is one case when we do: If the URL
+       * went through our redirector and the admin configured
+       * 'redir_rewrites_host' to be off.
+       */
+      if (request->flags.redirected)
+         if (!Config.onoff.redir_rewrites_host)
+             httpHeaderAddEntry(hdr_out, httpHeaderEntryClone(e));
+      break;
+      case HDR_IF_MODIFIED_SINCE:
+      /* append unless we added our own;
+       * note: at most one client's ims header can pass through */
+      if (!httpHeaderHas(hdr_out, HDR_IF_MODIFIED_SINCE))
+         httpHeaderAddEntry(hdr_out, httpHeaderEntryClone(e));
+      break;
+      case HDR_MAX_FORWARDS:
+      if (orig_request->method == METHOD_TRACE) {
+         const int hops = httpHeaderEntryGetInt(e);
+         if (hops > 0)
+             httpHeaderPutInt(hdr_out, HDR_MAX_FORWARDS, hops - 1);
+      }
+      break;
+      case HDR_VIA:
+      /* If Via is disabled then forward any received header as-is */
+      if (!Config.onoff.via)
+         httpHeaderAddEntry(hdr_out, httpHeaderEntryClone(e));
+      break;
+      case HDR_RANGE:
+      case HDR_IF_RANGE:
+      case HDR_REQUEST_RANGE:
+      if (!we_do_ranges)
+         httpHeaderAddEntry(hdr_out, httpHeaderEntryClone(e));
+      break;
+      case HDR_PROXY_CONNECTION:
+      case HDR_CONNECTION:
+      case HDR_X_FORWARDED_FOR:
+      case HDR_CACHE_CONTROL:
+      /* append these after the loop if needed */
+      break;
+      case HDR_FRONT_END_HTTPS:
+      if (!front_end_https)
+	  httpHeaderAddEntry(hdr_out, httpHeaderEntryClone(e));
+      break;
+      default:
+      /* pass on all other header fields */
+      httpHeaderAddEntry(hdr_out, httpHeaderEntryClone(e));
+    }
+}
+
+int
+decideIfWeDoRanges (request_t * orig_request)
+{
+  int result = 1;
+  /* decide if we want to do Ranges ourselves
+   * and fetch the whole object now)
+   * We want to handle Ranges ourselves iff
+   *    - we can actually parse client Range specs
+   *    - the specs are expected to be simple enough (e.g. no out-of-order ranges)
+   *    - reply will be cachable
+   * (If the reply will be uncachable we have to throw it away after
+   *  serving this request, so it is better to forward ranges to
+   *  the server and fetch only the requested content)
+   */
+  if (NULL == orig_request->range || !orig_request->flags.cachable
+      || orig_request->range->offsetLimitExceeded())
+      result = 0;
+  debug(11, 8) ("decideIfWeDoRanges: range specs: %p, cachable: %d; we_do_ranges: %d\n",
+    orig_request->range, orig_request->flags.cachable, result);
+  return result;
+}
+
+
 /* build request prefix and append it to a given MemBuf; 
  * return the length of the prefix */
 mb_size_t
@@ -975,9 +1123,12 @@ httpBuildRequestPrefix(request_t * request,
     http_state_flags flags)
 {
     const int offset = mb->size;
-    memBufPrintf(mb, "%s %s HTTP/1.0\r\n",
+    http_version_t httpver;
+    httpBuildVersion(&httpver, 1, 0);
+    memBufPrintf(mb, "%s %s HTTP/%d.%d\r\n",
 	RequestMethodStr[request->method],
-	strLen(request->urlpath) ? strBuf(request->urlpath) : "/");
+	request->urlpath.size() ? request->urlpath.buf() : "/",
+	httpver.major,httpver.minor);
     /* build and pack headers */
     {
 	HttpHeader hdr;
diff --git a/src/http.h b/src/http.h
index 8b11dc9354..b306c5e955 100644
--- a/src/http.h
+++ b/src/http.h
@@ -1,6 +1,6 @@
 
 /*
- * $Id: http.h,v 1.2 2002/10/14 08:16:58 robertc Exp $
+ * $Id: http.h,v 1.3 2003/01/23 00:37:22 robertc Exp $
  *
  *
  * SQUID Web Proxy Cache          http://www.squid-cache.org/
@@ -40,7 +40,7 @@
 class HttpStateData {
     public:
     void processReplyHeader(const char *, int);
-    void processReplyData(const char *, int);
+    void processReplyData(const char *, size_t);
     IOCB readReply;
     void maybeReadData();
 
@@ -55,9 +55,18 @@ class HttpStateData {
     int fd;
     http_state_flags flags;
     FwdState *fwd;
+    off_t currentOffset;
     int do_next_read;
     size_t read_sz;
     char buf[SQUID_TCP_SO_RCVBUF];
+private:
+    enum ConnectionStatus {
+	INCOMPLETE_MSG,
+	COMPLETE_PERSISTENT_MSG,
+	COMPLETE_NONPERSISTENT_MSG
+    };
+    ConnectionStatus statusIfComplete() const;
+    ConnectionStatus persistentConnStatus() const;
 };
 
 #endif /* SQUID_HTTP_H */
diff --git a/src/icmp.cc b/src/icmp.cc
index da74cc9d5d..d8e7741fcb 100644
--- a/src/icmp.cc
+++ b/src/icmp.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: icmp.cc,v 1.81 2003/01/04 01:13:56 hno Exp $
+ * $Id: icmp.cc,v 1.82 2003/01/23 00:37:22 robertc Exp $
  *
  * DEBUG: section 37    ICMP Routines
  * AUTHOR: Duane Wessels
diff --git a/src/icp_v2.cc b/src/icp_v2.cc
index 5dba7ef93e..8b39a3f3ee 100644
--- a/src/icp_v2.cc
+++ b/src/icp_v2.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: icp_v2.cc,v 1.73 2003/01/17 05:49:34 robertc Exp $
+ * $Id: icp_v2.cc,v 1.74 2003/01/23 00:37:22 robertc Exp $
  *
  * DEBUG: section 12    Internet Cache Protocol
  * AUTHOR: Duane Wessels
@@ -37,6 +37,7 @@
 #include "Store.h"
 #include "comm.h"
 #include "ICP.h"
+#include "HttpRequest.h"
 
 static void icpLogIcp(struct in_addr, log_type, int, const char *, int);
 static void icpHandleIcpV2(int, struct sockaddr_in, char *, int);
@@ -82,6 +83,9 @@ _icp_common_t::getOpCode() const
 /* ICPState */
 
 ICPState:: ICPState(icp_common_t & aHeader):header(aHeader)
+    ,request(NULL),
+    fd(-1),
+    url(NULL)
 {
 }
 
diff --git a/src/icp_v3.cc b/src/icp_v3.cc
index ba564f010c..eedc4ae2ec 100644
--- a/src/icp_v3.cc
+++ b/src/icp_v3.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: icp_v3.cc,v 1.36 2003/01/17 05:49:34 robertc Exp $
+ * $Id: icp_v3.cc,v 1.37 2003/01/23 00:37:22 robertc Exp $
  *
  * DEBUG: section 12    Internet Cache Protocol
  * AUTHOR: Duane Wessels
@@ -36,6 +36,7 @@
 #include "squid.h"
 #include "Store.h"
 #include "ICP.h"
+#include "HttpRequest.h"
 
 class ICP3State : public ICPState, public StoreClient {
 public:
diff --git a/src/ident.cc b/src/ident.cc
index 37636eb39e..d902c3bbf3 100644
--- a/src/ident.cc
+++ b/src/ident.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: ident.cc,v 1.63 2002/11/10 04:30:44 hno Exp $
+ * $Id: ident.cc,v 1.64 2003/01/23 00:37:22 robertc Exp $
  *
  * DEBUG: section 30    Ident (RFC 931)
  * AUTHOR: Duane Wessels
diff --git a/src/internal.cc b/src/internal.cc
index a2653bbc7c..a3e72160fc 100644
--- a/src/internal.cc
+++ b/src/internal.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: internal.cc,v 1.26 2002/10/13 20:35:02 robertc Exp $
+ * $Id: internal.cc,v 1.27 2003/01/23 00:37:22 robertc Exp $
  *
  * DEBUG: section 76    Internal Squid Object handling
  * AUTHOR: Duane, Alex, Henrik
@@ -35,6 +35,8 @@
 
 #include "squid.h"
 #include "Store.h"
+#include "HttpRequest.h"
+#include "HttpReply.h"
 
 /* called when we "miss" on an internal object;
  * generate known dynamic objects, 
@@ -44,7 +46,7 @@ void
 internalStart(request_t * request, StoreEntry * entry)
 {
     ErrorState *err;
-    const char *upath = strBuf(request->urlpath);
+    const char *upath = request->urlpath.buf();
     http_version_t version;
     debug(76, 3) ("internalStart: %s requesting '%s'\n",
 	inet_ntoa(request->client_addr), upath);
@@ -57,7 +59,8 @@ internalStart(request_t * request, StoreEntry * entry)
 	const char *msgbuf = "This cache does not suport Cache Digests.\n";
 #endif
 	httpBuildVersion(&version, 1, 0);
-	httpReplySetHeaders(entry->mem_obj->reply,
+	HttpReply *reply = httpReplyCreate ();
+	httpReplySetHeaders(reply,
 	    version,
 	    HTTP_NOT_FOUND,
 	    "Not Found",
@@ -65,9 +68,9 @@ internalStart(request_t * request, StoreEntry * entry)
 	    strlen(msgbuf),
 	    squid_curtime,
 	    -2);
-	httpReplySwapOut(entry->mem_obj->reply, entry);
+	httpReplySwapOut(reply, entry);
 	storeAppend(entry, msgbuf, strlen(msgbuf));
-	storeComplete(entry);
+	entry->complete();
     } else {
 	debugObj(76, 1, "internalStart: unknown request:\n",
 	    request, (ObjPackMethod) & httpRequestPack);
diff --git a/src/ipc.cc b/src/ipc.cc
index e10015290f..4bb4083601 100644
--- a/src/ipc.cc
+++ b/src/ipc.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: ipc.cc,v 1.34 2002/11/28 12:21:46 robertc Exp $
+ * $Id: ipc.cc,v 1.35 2003/01/23 00:37:22 robertc Exp $
  *
  * DEBUG: section 54    Interprocess Communication
  * AUTHOR: Duane Wessels
@@ -35,6 +35,7 @@
 
 #include "squid.h"
 #include "comm.h"
+#include "fde.h"
 
 static const char *hello_string = "hi there\n";
 #define HELLO_BUF_SZ 32
diff --git a/src/ipcache.cc b/src/ipcache.cc
index 1566b804d7..ff6d983105 100644
--- a/src/ipcache.cc
+++ b/src/ipcache.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: ipcache.cc,v 1.239 2002/10/13 20:35:02 robertc Exp $
+ * $Id: ipcache.cc,v 1.240 2003/01/23 00:37:22 robertc Exp $
  *
  * DEBUG: section 14    IP Cache
  * AUTHOR: Harvest Derived
diff --git a/src/leakfinder.cc b/src/leakfinder.cc
index 1e72530421..b855cf85ff 100644
--- a/src/leakfinder.cc
+++ b/src/leakfinder.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: leakfinder.cc,v 1.7 2002/10/13 20:35:02 robertc Exp $
+ * $Id: leakfinder.cc,v 1.8 2003/01/23 00:37:23 robertc Exp $
  *
  * DEBUG: section 45    Callback Data Registry
  * AUTHOR: Duane Wessels
diff --git a/src/logfile.cc b/src/logfile.cc
index 6ff8c939f6..24aa7dfd1d 100644
--- a/src/logfile.cc
+++ b/src/logfile.cc
@@ -1,5 +1,5 @@
 /*
- * $Id: logfile.cc,v 1.12 2002/10/13 20:35:02 robertc Exp $
+ * $Id: logfile.cc,v 1.13 2003/01/23 00:37:23 robertc Exp $
  *
  * DEBUG: section 50    Log file handling
  * AUTHOR: Duane Wessels
@@ -34,6 +34,7 @@
 
 #include "squid.h"
 #include "authenticate.h"
+#include "fde.h"
 
 static void logfileWriteWrapper(Logfile * lf, const void *buf, size_t len);
 
diff --git a/src/main.cc b/src/main.cc
index ff2ab97a54..8ded205db0 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: main.cc,v 1.361 2003/01/18 02:10:40 hno Exp $
+ * $Id: main.cc,v 1.362 2003/01/23 00:37:23 robertc Exp $
  *
  * DEBUG: section 1     Startup and Main Loop
  * AUTHOR: Harvest Derived
@@ -37,6 +37,8 @@
 #include "authenticate.h"
 #include "Store.h"
 #include "ICP.h"
+#include "HttpReply.h"
+#include "Mem.h"
 
 /* for error reporting from xmalloc and friends */
 extern void (*failure_notify) (const char *);
@@ -553,7 +555,7 @@ mainInitialize(void)
 	eventAdd("cpuProfiling", xprof_event, NULL, 1.0, 1);
 #endif
 	  
-	eventAdd("memPoolCleanIdlePools", memPoolCleanIdlePools, NULL, 15.0, 1);
+	eventAdd("memPoolCleanIdlePools", Mem::CleanIdlePools, NULL, 15.0, 1);
     }
     configured_once = 1;
 }
@@ -631,7 +633,7 @@ main(int argc, char **argv)
 #if USE_LEAKFINDER
 	leakInit();
 #endif
-	memInit();
+	Mem::Init();
 	cbdataInit();
 	eventInit();		/* eventInit() is required for config parsing */
 	storeFsInit();		/* required for config parsing */
diff --git a/src/mem.cc b/src/mem.cc
index e9925f8726..8706bc760a 100644
--- a/src/mem.cc
+++ b/src/mem.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: mem.cc,v 1.69 2002/12/06 23:19:16 hno Exp $
+ * $Id: mem.cc,v 1.70 2003/01/23 00:37:23 robertc Exp $
  *
  * DEBUG: section 13    High Level Memory Pool Management
  * AUTHOR: Harvest Derived
@@ -34,6 +34,7 @@
  */
 
 #include "squid.h"
+#include "Mem.h"
 #include "memMeter.h"
 #include "Store.h"
 
@@ -41,8 +42,6 @@
 
 /* local prototypes */
 static void memStringStats(StoreEntry * sentry);
-static void memStats(StoreEntry * sentry);
-static void memPoolReport(const MemPoolStats * mp_st, const MemPoolMeter * AllMeter, StoreEntry * e);
 
 /* module locals */
 static MemPool *MemPools[MEM_MAX];
@@ -115,11 +114,11 @@ memBufStats(StoreEntry * sentry)
 	HugeBufVolumeMeter.level / 1024);
 }
 
-static void
-memStats(StoreEntry * sentry)
+void
+Mem::Stats(StoreEntry * sentry)
 {
     storeBuffer(sentry);
-    memReport(sentry);
+    Report(sentry);
     memStringStats(sentry);
     memBufStats(sentry);
     storeBufferFlush(sentry);
@@ -295,10 +294,10 @@ memFreeBuf(size_t size, void *buf)
 static double clean_interval = 15.0;	/* time to live of idle chunk before release */
 
 void
-memPoolCleanIdlePools(void *unused)
+Mem::CleanIdlePools(void *unused)
 {
     memPoolClean(static_cast(clean_interval));
-    eventAdd("memPoolCleanIdlePools", memPoolCleanIdlePools, NULL, clean_interval, 1);
+    eventAdd("memPoolCleanIdlePools", CleanIdlePools, NULL, clean_interval, 1);
 }
 
 static int mem_idle_limit = 0;
@@ -321,8 +320,11 @@ memConfigure(void)
     mem_idle_limit = new_pool_limit;
 }
 
+/* XXX make these classes do their own memory management */
+#include "HttpHdrContRange.h"
+
 void
-memInit(void)
+Mem::Init(void)
 {
     int i;
 
@@ -368,13 +370,8 @@ memInit(void)
     memDataInit(MEM_HTTP_REPLY, "HttpReply", sizeof(HttpReply), 0);
     memDataInit(MEM_HTTP_HDR_ENTRY, "HttpHeaderEntry", sizeof(HttpHeaderEntry), 0);
     memDataInit(MEM_HTTP_HDR_CC, "HttpHdrCc", sizeof(HttpHdrCc), 0);
-    memDataInit(MEM_HTTP_HDR_RANGE_SPEC, "HttpHdrRangeSpec", sizeof(HttpHdrRangeSpec), 0);
-    memDataInit(MEM_HTTP_HDR_RANGE, "HttpHdrRange", sizeof(HttpHdrRange), 0);
     memDataInit(MEM_HTTP_HDR_CONTENT_RANGE, "HttpHdrContRange", sizeof(HttpHdrContRange), 0);
     memDataInit(MEM_INTLIST, "intlist", sizeof(intlist), 0);
-    memDataInit(MEM_MEMOBJECT, "MemObject", sizeof(MemObject),
-	Squid_MaxFD >> 3);
-    memDataInit(MEM_MEM_NODE, "mem_node", sizeof(mem_node), 0);
     memDataInit(MEM_NETDBENTRY, "netdbEntry", sizeof(netdbEntry), 0);
     memDataInit(MEM_NET_DB_NAME, "net_db_name", sizeof(net_db_name), 0);
     memDataInit(MEM_RELIST, "relist", sizeof(relist), 0);
@@ -388,7 +385,6 @@ memInit(void)
 	sizeof(helper_request), 0);
     memDataInit(MEM_HELPER_STATEFUL_REQUEST, "helper_stateful_request",
 	sizeof(helper_stateful_request), 0);
-    memDataInit(MEM_TLV, "storeSwapTLV", sizeof(tlv), 0);
     memDataInit(MEM_SWAP_LOG_DATA, "storeSwapLogData", sizeof(storeSwapLogData), 0);
 
     /* init string pools */
@@ -397,7 +393,7 @@ memInit(void)
     }
     cachemgrRegister("mem",
 	"Memory Utilization",
-	memStats, 0, 1);
+	Mem::Stats, 0, 1);
 }
 
 mem_type &operator++ (mem_type &aMem)
@@ -519,8 +515,8 @@ memFreeBufFunc(size_t size)
 
 /* MemPoolMeter */
 
-static void
-memPoolReport(const MemPoolStats * mp_st, const MemPoolMeter * AllMeter, StoreEntry * e)
+void
+Mem::PoolReport(const MemPoolStats * mp_st, const MemPoolMeter * AllMeter, StoreEntry * e)
 {
     int excess = 0;
     int needed = 0;
@@ -580,7 +576,7 @@ memPoolReport(const MemPoolStats * mp_st, const MemPoolMeter * AllMeter, StoreEn
 }
 
 void
-memReport(StoreEntry * e)
+Mem::Report(StoreEntry * e)
 {
     static char buf[64];
     static MemPoolStats mp_stats;
@@ -623,7 +619,7 @@ memReport(StoreEntry * e)
 	if (!mp_stats.pool)	/* pool destroyed */
 	    continue;
 	if (mp_stats.pool->meter.gb_saved.count > 0)	/* this pool has been used */
-	    memPoolReport(&mp_stats, mp_total.TheMeter, e);
+	    PoolReport(&mp_stats, mp_total.TheMeter, e);
 	else
 	    not_used++;
     }
@@ -644,7 +640,7 @@ memReport(StoreEntry * e)
     mp_stats.items_idle = mp_total.tot_items_idle;
     mp_stats.overhead = mp_total.tot_overhead;
 
-    memPoolReport(&mp_stats, mp_total.TheMeter, e);
+    PoolReport(&mp_stats, mp_total.TheMeter, e);
 
     /* Cumulative */
     storeAppendPrintf(e, "Cumulative allocated volume: %s\n", double_to_str(buf, 64, mp_total.TheMeter->gb_saved.bytes));
diff --git a/src/mem_node.cc b/src/mem_node.cc
new file mode 100644
index 0000000000..81fa5f2408
--- /dev/null
+++ b/src/mem_node.cc
@@ -0,0 +1,111 @@
+
+/*
+ * $Id: mem_node.cc,v 1.1 2003/01/23 00:37:23 robertc Exp $
+ *
+ * DEBUG: section 19    Store Memory Primitives
+ * AUTHOR: Robert Collins
+ *
+ * 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 "mem_node.h"
+
+MemPool *mem_node::pool = NULL;
+unsigned long mem_node::store_mem_size;
+
+void *
+mem_node::operator new (size_t byteCount)
+{
+    /* derived classes with different sizes must implement their own new */
+    assert (byteCount == sizeof (mem_node));
+    if (!pool)
+	pool = memPoolCreate("mem_node", sizeof (mem_node));
+    return memPoolAlloc(pool);
+}
+
+void
+mem_node::operator delete (void *address)
+{
+    memPoolFree(pool, address);
+}
+
+mem_node::mem_node(off_t offset):nodeBuffer(0,offset,data), next (NULL)
+{
+}
+
+mem_node::~mem_node()
+{
+    store_mem_size -= nodeBuffer.length;
+}
+
+size_t
+mem_node::InUseCount()
+{
+    if (!pool)
+	return 0;
+    MemPoolStats stats;
+    memPoolGetStats (&stats, pool);
+    return stats.items_inuse;
+}
+
+size_t
+mem_node::start() const
+{
+    assert (nodeBuffer.offset >= 0);
+    return nodeBuffer.offset;
+}
+
+size_t
+mem_node::end() const
+{
+    return nodeBuffer.offset + nodeBuffer.length;
+}
+
+size_t
+mem_node::space() const
+{
+    return SM_PAGE_SIZE - nodeBuffer.length;
+}
+
+bool
+mem_node::contains (size_t const &location) const
+{
+    if (start() <= location && end() > location)
+	return true;
+    return false;
+}
+
+/* nodes can not be sparse */
+bool
+mem_node::canAccept (size_t const &location) const
+{
+    if (location == end() && space() > 0)
+	return true;
+    return false;
+}
diff --git a/src/mem_node.h b/src/mem_node.h
new file mode 100644
index 0000000000..7ac0b1c46c
--- /dev/null
+++ b/src/mem_node.h
@@ -0,0 +1,62 @@
+
+/*
+ * $Id: mem_node.h,v 1.1 2003/01/23 00:37:23 robertc Exp $
+ *
+ *
+ * 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.
+ *
+ */
+
+#ifndef SQUID_MEM_NODE_H
+#define SQUID_MEM_NODE_H
+
+#include "StoreIOBuffer.h"
+class mem_node {
+public:
+    static size_t InUseCount();
+    static unsigned long store_mem_size;	/* 0 */
+
+    void operator delete (void *);
+    void *operator new (size_t);
+    mem_node(off_t);
+    ~mem_node();
+    size_t space() const;
+    size_t start() const;  
+    size_t end() const;
+    bool contains (size_t const &location) const;
+    bool canAccept (size_t const &location) const;
+    /* public */
+    StoreIOBuffer nodeBuffer;
+    mem_node *next;
+    /* Private */
+    char data[SM_PAGE_SIZE];
+private:
+    static MemPool *pool;
+};
+
+
+#endif /* SQUID_MEM_NODE_H */
diff --git a/src/mib.txt b/src/mib.txt
index 507be53d4f..497b27e9fd 100644
--- a/src/mib.txt
+++ b/src/mib.txt
@@ -2,7 +2,7 @@ SQUID-MIB  { iso org(3) dod(6) internet(1) private(4) enterprises(1) 3495 }
 
 DEFINITIONS ::= BEGIN
 --
--- $Id: mib.txt,v 1.25 2000/05/16 07:06:05 wessels Exp $
+-- $Id: mib.txt,v 1.26 2003/01/23 00:37:23 robertc Exp $
 --
 
 IMPORTS
diff --git a/src/mime.cc b/src/mime.cc
index 232aece900..aaed05ccfe 100644
--- a/src/mime.cc
+++ b/src/mime.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: mime.cc,v 1.109 2003/01/17 05:49:34 robertc Exp $
+ * $Id: mime.cc,v 1.110 2003/01/23 00:37:23 robertc Exp $
  *
  * DEBUG: section 25    MIME Parsing
  * AUTHOR: Harvest Derived
@@ -36,6 +36,10 @@
 #include "squid.h"
 #include "Store.h"
 #include "StoreClient.h"
+#include "HttpReply.h"
+#include "HttpRequest.h"
+#include "MemObject.h"
+#include "fde.h"
 
 #define GET_HDR_SZ 1024
 
@@ -466,7 +470,6 @@ MimeIcon::created (StoreEntry *newEntry)
     struct stat sb;
     LOCAL_ARRAY(char, path, MAXPATHLEN);
     char *buf;
-    HttpReply *reply;
     http_version_t version;
 	
 				
@@ -494,7 +497,7 @@ MimeIcon::created (StoreEntry *newEntry)
     if (NULL == r)
 	fatal("mimeLoadIcon: cannot parse internal URL");
     e->mem_obj->request = requestLink(r);
-    httpReplyReset(reply = e->mem_obj->reply);
+    HttpReply *reply = httpReplyCreate();
     httpBuildVersion(&version, 1, 0);
     httpReplySetHeaders(reply, version, HTTP_OK, NULL,
 	mimeGetContentType(icon), (int) sb.st_size, sb.st_mtime, -1);
@@ -502,14 +505,13 @@ MimeIcon::created (StoreEntry *newEntry)
     httpHdrCcSetMaxAge(reply->cache_control, 86400);
     httpHeaderPutCc(&reply->header, reply->cache_control);
     httpReplySwapOut(reply, e);
-    reply->hdr_sz = e->mem_obj->inmem_hi;	/* yuk */
     /* read the file into the buffer and append it to store */
     buf = (char *)memAllocate(MEM_4K_BUF);
     while ((n = FD_READ_METHOD(fd, buf, 4096)) > 0)
 	storeAppend(e, buf, n);
     file_close(fd);
     storeBufferFlush(e);
-    storeComplete(e);
+    e->complete();
     storeTimestampsSet(e);
     debug(25, 3) ("Loaded icon %s\n", url);
     storeUnlockObject(e);
diff --git a/src/mk-string-arrays.pl b/src/mk-string-arrays.pl
index d10b1d5065..ae1c577ebc 100755
--- a/src/mk-string-arrays.pl
+++ b/src/mk-string-arrays.pl
@@ -1,5 +1,5 @@
 #******************************************************************************
-# $Id: mk-string-arrays.pl,v 1.4 1998/04/07 23:31:51 rousskov Exp $
+# $Id: mk-string-arrays.pl,v 1.5 2003/01/23 00:37:23 robertc Exp $
 #
 # File:		mk-strs.pl
 #
diff --git a/src/multicast.cc b/src/multicast.cc
index 2ac49c3fd5..f87a303fda 100644
--- a/src/multicast.cc
+++ b/src/multicast.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: multicast.cc,v 1.9 2001/01/12 00:37:19 wessels Exp $
+ * $Id: multicast.cc,v 1.10 2003/01/23 00:37:23 robertc Exp $
  *
  * DEBUG: section 7     Multicast
  * AUTHOR: Martin Hamilton
diff --git a/src/neighbors.cc b/src/neighbors.cc
index 893a1d1f1a..a636cf3697 100644
--- a/src/neighbors.cc
+++ b/src/neighbors.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: neighbors.cc,v 1.308 2002/10/25 07:36:32 robertc Exp $
+ * $Id: neighbors.cc,v 1.309 2003/01/23 00:37:23 robertc Exp $
  *
  * DEBUG: section 15    Neighbor Routines
  * AUTHOR: Harvest Derived
@@ -36,6 +36,8 @@
 #include "squid.h"
 #include "Store.h"
 #include "ICP.h"
+#include "HttpRequest.h"
+#include "MemObject.h"
 
 /* count mcast group peers every 15 minutes */
 #define MCAST_COUNT_RATE 900
diff --git a/src/net_db.cc b/src/net_db.cc
index 2ad67ae850..27013547e2 100644
--- a/src/net_db.cc
+++ b/src/net_db.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: net_db.cc,v 1.167 2003/01/04 01:13:56 hno Exp $
+ * $Id: net_db.cc,v 1.168 2003/01/23 00:37:24 robertc Exp $
  *
  * DEBUG: section 38    Network Measurement Database
  * AUTHOR: Duane Wessels
@@ -43,6 +43,10 @@
 
 #include "squid.h"
 #include "Store.h"
+#include "HttpRequest.h"
+#include "HttpReply.h"
+#include "MemObject.h"
+#include "fde.h"
 
 
 #if USE_ICMP
@@ -560,7 +564,7 @@ netdbExchangeHandleReply(void *data, StoreIOBuffer recievedData)
     double hops;
     char *p;
     int j;
-    HttpReply *rep;
+    HttpReply const *rep;
     size_t hdr_sz;
     int nused = 0;
     int size;
@@ -577,6 +581,13 @@ netdbExchangeHandleReply(void *data, StoreIOBuffer recievedData)
 	return;
     }
     debug(38, 3) ("netdbExchangeHandleReply: for '%s:%d'\n", ex->p->host, ex->p->http_port);
+
+    if (recievedData.length == 0 && 
+	!recievedData.flags.error) {
+	debug(38, 3) ("netdbExchangeHandleReply: Done\n");
+	netdbExchangeDone(ex);
+	return;
+    }
     p = ex->buf;
 
     /* Get the size of the buffer now */
@@ -591,9 +602,8 @@ netdbExchangeHandleReply(void *data, StoreIOBuffer recievedData)
 	/* skip reply headers */
 	if ((hdr_sz = headersEnd(p, ex->buf_ofs))) {
 	    debug(38, 5) ("netdbExchangeHandleReply: hdr_sz = %d\n", hdr_sz);
-	    rep = ex->e->mem_obj->reply;
-	    if (0 == rep->sline.status)
-		httpReplyParse(rep, ex->buf, hdr_sz);
+	    rep = ex->e->getReply();
+	    assert (0 != rep->sline.status);
 	    debug(38, 3) ("netdbExchangeHandleReply: reply status %d\n",
 		rep->sline.status);
 	    if (HTTP_OK != rep->sline.status) {
@@ -614,7 +624,7 @@ netdbExchangeHandleReply(void *data, StoreIOBuffer recievedData)
 	    /* Finally, set the conn state mode to STATE_BODY */
 	    ex->connstate = STATE_BODY;
 	} else {
-	    StoreIOBuffer tempBuffer = EMPTYIOBUFFER;
+	    StoreIOBuffer tempBuffer;
 	    tempBuffer.offset = ex->buf_ofs;
 	    tempBuffer.length = ex->buf_sz - ex->buf_ofs;
 	    tempBuffer.data = ex->buf + ex->buf_ofs;
@@ -703,24 +713,13 @@ netdbExchangeHandleReply(void *data, StoreIOBuffer recievedData)
 	debug(38, 3) ("netdbExchangeHandleReply: ENTRY_ABORTED\n");
 	netdbExchangeDone(ex);
     } else if (ex->e->store_status == STORE_PENDING) {
-	StoreIOBuffer tempBuffer = EMPTYIOBUFFER;
+	StoreIOBuffer tempBuffer;
 	tempBuffer.offset = ex->used;
 	tempBuffer.length = ex->buf_sz - ex->buf_ofs;
 	tempBuffer.data = ex->buf + ex->buf_ofs;
-	debug(38, 3) ("netdbExchangeHandleReply: STORE_PENDING\n");
+	debug(38, 3) ("netdbExchangeHandleReply: EOF not recieved\n");
 	storeClientCopy(ex->sc, ex->e, tempBuffer,
 	    netdbExchangeHandleReply, ex);
-    } else if (ex->used < ex->e->mem_obj->inmem_hi) {
-	StoreIOBuffer tempBuffer = EMPTYIOBUFFER;
-	tempBuffer.offset = ex->used;
-	tempBuffer.length = ex->buf_sz - ex->buf_ofs;
-	tempBuffer.data = ex->buf + ex->buf_ofs;
-	debug(38, 3) ("netdbExchangeHandleReply: ex->e->mem_obj->inmem_hi\n");
-	storeClientCopy(ex->sc, ex->e, tempBuffer,
-	    netdbExchangeHandleReply, ex);
-    } else {
-	debug(38, 3) ("netdbExchangeHandleReply: Done\n");
-	netdbExchangeDone(ex);
     }
 }
 
@@ -990,7 +989,7 @@ netdbDeleteAddrNetwork(struct in_addr addr)
 void
 netdbBinaryExchange(StoreEntry * s)
 {
-    http_reply *reply = s->mem_obj->reply;
+    http_reply *reply = httpReplyCreate();
     http_version_t version;
 #if USE_ICMP
     netdbEntry *n;
@@ -1000,7 +999,6 @@ netdbBinaryExchange(StoreEntry * s)
     char *buf;
     struct in_addr addr;
     storeBuffer(s);
-    httpReplyReset(reply);
     httpBuildVersion(&version, 1, 0);
     httpReplySetHeaders(reply, version, HTTP_OK, "OK",
 	NULL, -1, squid_curtime, -2);
@@ -1043,13 +1041,13 @@ netdbBinaryExchange(StoreEntry * s)
     storeBufferFlush(s);
     memFree(buf, MEM_4K_BUF);
 #else
-    httpReplyReset(reply);
     httpBuildVersion(&version, 1, 0);
     httpReplySetHeaders(reply, version, HTTP_BAD_REQUEST, "Bad Request",
 	NULL, -1, squid_curtime, -2);
+    httpReplySwapOut(reply, s);
     storeAppendPrintf(s, "NETDB support not compiled into this Squid cache.\n");
 #endif
-    storeComplete(s);
+    s->complete();
 }
 
 #if USE_ICMP
@@ -1063,7 +1061,7 @@ netdbExchangeStart(void *data)
     peer *p = (peer *)data;
     char *uri;
     netdbExchangeState *ex;
-    StoreIOBuffer tempBuffer = EMPTYIOBUFFER;
+    StoreIOBuffer tempBuffer;
     CBDATA_INIT_TYPE(netdbExchangeState);
     ex = cbdataAlloc(netdbExchangeState);
     ex->p = cbdataReference(p);
diff --git a/src/pconn.cc b/src/pconn.cc
index 88f0fc3e03..9e0e7ccbe1 100644
--- a/src/pconn.cc
+++ b/src/pconn.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: pconn.cc,v 1.34 2002/10/14 08:16:58 robertc Exp $
+ * $Id: pconn.cc,v 1.35 2003/01/23 00:37:24 robertc Exp $
  *
  * DEBUG: section 48    Persistent Connections
  * AUTHOR: Duane Wessels
diff --git a/src/peer_digest.cc b/src/peer_digest.cc
index ac1b4aab5a..d4897133d4 100644
--- a/src/peer_digest.cc
+++ b/src/peer_digest.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: peer_digest.cc,v 1.93 2002/10/18 22:46:46 hno Exp $
+ * $Id: peer_digest.cc,v 1.94 2003/01/23 00:37:24 robertc Exp $
  *
  * DEBUG: section 72    Peer Digest Routines
  * AUTHOR: Alex Rousskov
@@ -34,10 +34,12 @@
  */
 
 #include "squid.h"
-#include "Store.h"
-
 #if USE_CACHE_DIGESTS
 
+#include "Store.h"
+#include "HttpRequest.h"
+#include "HttpReply.h"
+#include "MemObject.h"
 #include "StoreClient.h"
 
 /* local types */
@@ -87,7 +89,7 @@ peerDigestInit(PeerDigest * pd, peer * p)
     memset(pd, 0, sizeof(*pd));
     pd->peer = p;
     /* if peer disappears, we will know it's name */
-    stringInit(&pd->host, p->host);
+    pd->host = p->host;
 
     pd->times.initialized = squid_curtime;
 }
@@ -98,7 +100,7 @@ peerDigestClean(PeerDigest * pd)
     assert(pd);
     if (pd->cd)
 	cacheDigestDestroy(pd->cd);
-    stringClean(&pd->host);
+    pd->host.clean();
 }
 
 CBDATA_TYPE(PeerDigest);
@@ -153,7 +155,7 @@ static void
 peerDigestDisable(PeerDigest * pd)
 {
     debug(72, 2) ("peerDigestDisable: peer %s disabled for good\n",
-	strBuf(pd->host));
+	pd->host.buf());
     pd->times.disabled = squid_curtime;
     pd->times.next_check = -1;	/* never */
     pd->flags.usable = 0;
@@ -194,7 +196,7 @@ peerDigestSetCheck(PeerDigest * pd, time_t delay)
     eventAdd("peerDigestCheck", peerDigestCheck, pd, (double) delay, 1);
     pd->times.next_check = squid_curtime + delay;
     debug(72, 3) ("peerDigestSetCheck: will check peer %s in %d secs\n",
-	strBuf(pd->host), (int) delay);
+	pd->host.buf(), (int) delay);
 }
 
 /*
@@ -205,11 +207,11 @@ peerDigestNotePeerGone(PeerDigest * pd)
 {
     if (pd->flags.requested) {
 	debug(72, 2) ("peerDigest: peer %s gone, will destroy after fetch.\n",
-	    strBuf(pd->host));
+	    pd->host.buf());
 	/* do nothing now, the fetching chain will notice and take action */
     } else {
 	debug(72, 2) ("peerDigest: peer %s is gone, destroying now.\n",
-	    strBuf(pd->host));
+	    pd->host.buf());
 	peerDigestDestroy(pd);
     }
 }
@@ -242,14 +244,14 @@ peerDigestCheck(void *data)
     /* per-peer limit */
     if (req_time - pd->times.received < PeerDigestReqMinGap) {
 	debug(72, 2) ("peerDigestCheck: %s, avoiding close peer requests (%d < %d secs).\n",
-	    strBuf(pd->host), (int) (req_time - pd->times.received),
+	    pd->host.buf(), (int) (req_time - pd->times.received),
 	    (int) PeerDigestReqMinGap);
 	req_time = pd->times.received + PeerDigestReqMinGap;
     }
     /* global limit */
     if (req_time - pd_last_req_time < GlobDigestReqMinGap) {
 	debug(72, 2) ("peerDigestCheck: %s, avoiding close requests (%d < %d secs).\n",
-	    strBuf(pd->host), (int) (req_time - pd_last_req_time),
+	    pd->host.buf(), (int) (req_time - pd_last_req_time),
 	    (int) GlobDigestReqMinGap);
 	req_time = pd_last_req_time + GlobDigestReqMinGap;
     }
@@ -271,7 +273,7 @@ peerDigestRequest(PeerDigest * pd)
     const cache_key *key;
     request_t *req;
     DigestFetchState *fetch = NULL;
-    StoreIOBuffer tempBuffer = EMPTYIOBUFFER;
+    StoreIOBuffer tempBuffer;
 
     pd->req_result = NULL;
     pd->flags.requested = 1;
@@ -420,7 +422,7 @@ peerDigestHandleReply(void *data, StoreIOBuffer recievedData)
 
     /* Schedule another copy */
     if (cbdataReferenceValid(fetch)) {
-	StoreIOBuffer tempBuffer = EMPTYIOBUFFER;
+	StoreIOBuffer tempBuffer;
 	tempBuffer.offset = fetch->offset;
 	tempBuffer.length = SM_PAGE_SIZE - fetch->bufofs;
 	tempBuffer.data = fetch->buf + fetch->bufofs;
@@ -456,12 +458,12 @@ peerDigestFetchReply(void *data, char *buf, ssize_t size)
 
     if ((hdr_size = headersEnd(buf, size))) {
 	http_status status;
-	HttpReply *reply = fetch->entry->mem_obj->reply;
+	HttpReply const *reply = fetch->entry->getReply();
 	assert(reply);
-	httpReplyParse(reply, buf, hdr_size);
+	assert (reply->sline.status != 0);
 	status = reply->sline.status;
 	debug(72, 3) ("peerDigestFetchReply: %s status: %d, expires: %ld (%+d)\n",
-	    strBuf(pd->host), status,
+	    pd->host.buf(), status,
 	    (long int) reply->expires, (int) (reply->expires - squid_curtime));
 
 	/* this "if" is based on clientHandleIMSReply() */
@@ -473,7 +475,7 @@ peerDigestFetchReply(void *data, char *buf, ssize_t size)
 		fetch->old_entry->mem_obj->request = r =
 		    requestLink(fetch->entry->mem_obj->request);
 	    assert(fetch->old_entry->mem_obj->request);
-	    httpReplyUpdateOnNotModified(fetch->old_entry->mem_obj->reply, reply);
+	    httpReplyUpdateOnNotModified((HttpReply *)fetch->old_entry->getReply(), reply);
 	    storeTimestampsSet(fetch->old_entry);
 	    /* get rid of 304 reply */
 	    storeUnregister(fetch->sc, fetch->entry, fetch);
@@ -529,12 +531,11 @@ peerDigestSwapInHeaders(void *data, char *buf, ssize_t size)
 
     assert(!fetch->offset);
     if ((hdr_size = headersEnd(buf, size))) {
-	assert(fetch->entry->mem_obj->reply);
-	if (!fetch->entry->mem_obj->reply->sline.status)
-	    httpReplyParse(fetch->entry->mem_obj->reply, buf, hdr_size);
-	if (fetch->entry->mem_obj->reply->sline.status != HTTP_OK) {
+	assert(fetch->entry->getReply());
+	assert (fetch->entry->getReply()->sline.status != 0);
+	if (fetch->entry->getReply()->sline.status != HTTP_OK) {
 	    debug(72, 1) ("peerDigestSwapInHeaders: %s status %d got cached!\n",
-		strBuf(fetch->pd->host), fetch->entry->mem_obj->reply->sline.status);
+		fetch->pd->host.buf(), fetch->entry->getReply()->sline.status);
 	    peerDigestFetchAbort(fetch, buf, "internal status error");
 	    return -1;
 	}
@@ -563,7 +564,7 @@ peerDigestSwapInCBlock(void *data, char *buf, ssize_t size)
 
     if (size >= (ssize_t)StoreDigestCBlockSize) {
 	PeerDigest *pd = fetch->pd;
-	HttpReply *rep = fetch->entry->mem_obj->reply;
+	HttpReply const *rep = fetch->entry->getReply();
 
 	assert(pd && rep);
 	if (peerDigestSetCBlock(pd, buf)) {
@@ -643,7 +644,7 @@ peerDigestFetchedEnough(DigestFetchState * fetch, char *buf, ssize_t size, const
 	    reason = "invalidated peer digest?!";
 #endif
 	else
-	    host = strBuf(pd->host);
+	    host = pd->host.buf();
     }
     debug(72, 6) ("%s: peer %s, offset: %d size: %d.\n",
 	step_name, host,
@@ -692,7 +693,7 @@ peerDigestFetchStop(DigestFetchState * fetch, char *buf, const char *reason)
 {
     assert(reason);
     debug(72, 2) ("peerDigestFetchStop: peer %s, reason: %s\n",
-	strBuf(fetch->pd->host), reason);
+	fetch->pd->host.buf(), reason);
     peerDigestReqFinish(fetch, buf, 1, 1, 1, reason, 0);
 }
 
@@ -702,7 +703,7 @@ peerDigestFetchAbort(DigestFetchState * fetch, char *buf, const char *reason)
 {
     assert(reason);
     debug(72, 2) ("peerDigestFetchAbort: peer %s, reason: %s\n",
-	strBuf(fetch->pd->host), reason);
+	fetch->pd->host.buf(), reason);
     peerDigestReqFinish(fetch, buf, 1, 1, 1, reason, 1);
 }
 
@@ -746,7 +747,7 @@ static void
 peerDigestPDFinish(DigestFetchState * fetch, int pcb_valid, int err)
 {
     PeerDigest *pd = fetch->pd;
-    const char *host = strBuf(pd->host);
+    const char *host = pd->host.buf();
 
     pd->times.received = squid_curtime;
     pd->times.req_delay = fetch->resp_time;
@@ -825,8 +826,10 @@ peerDigestFetchSetStats(DigestFetchState * fetch)
     /* XXX: outgoing numbers are not precise */
     /* XXX: we must distinguish between 304 hits and misses here */
     fetch->sent.bytes = httpRequestPrefixLen(fetch->request);
-    fetch->recv.bytes = fetch->entry->store_status == STORE_PENDING ?
-	mem->inmem_hi : mem->object_sz;
+    /* XXX: this is slightly wrong: we don't KNOW that the entire memobject
+     * was fetched. We only know how big it is
+     */
+    fetch->recv.bytes = mem->size();
     fetch->sent.msg = fetch->recv.msg = 1;
     fetch->expires = fetch->entry->expires;
     fetch->resp_time = squid_curtime - fetch->start_time;
@@ -844,7 +847,7 @@ peerDigestSetCBlock(PeerDigest * pd, const char *buf)
 {
     StoreDigestCBlock cblock;
     int freed_size = 0;
-    const char *host = strBuf(pd->host);
+    const char *host = pd->host.buf();
 
     xmemcpy(&cblock, buf, sizeof(cblock));
     /* network -> host conversions */
@@ -921,7 +924,7 @@ peerDigestUseful(const PeerDigest * pd)
     const int bit_util = cacheDigestBitUtil(pd->cd);
     if (bit_util > 65) {
 	debug(72, 0) ("Warning: %s peer digest has too many bits on (%d%%).\n",
-	    strBuf(pd->host), bit_util);
+	    pd->host.buf(), bit_util);
 	return 0;
     }
     return 1;
@@ -942,9 +945,9 @@ peerDigestStatsReport(const PeerDigest * pd, StoreEntry * e)
     saneDiff(pd->times.tm - squid_curtime), \
     saneDiff(pd->times.tm - pd->times.initialized))
 
-    const char *host = pd ? strBuf(pd->host) : NULL;
     assert(pd);
 
+    const char *host = pd->host.buf();
     storeAppendPrintf(e, "\npeer digest from %s\n", host);
 
     cacheDigestGuessStatsReport(&pd->stats.guess, e, host);
diff --git a/src/peer_select.cc b/src/peer_select.cc
index bf88db3524..af5c45b8d4 100644
--- a/src/peer_select.cc
+++ b/src/peer_select.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: peer_select.cc,v 1.124 2002/10/13 20:35:02 robertc Exp $
+ * $Id: peer_select.cc,v 1.125 2003/01/23 00:37:24 robertc Exp $
  *
  * DEBUG: section 44    Peer Selection Algorithm
  * AUTHOR: Duane Wessels
@@ -36,6 +36,7 @@
 #include "squid.h"
 #include "Store.h"
 #include "ICP.h"
+#include "HttpRequest.h"
 
 const char *hier_strings[] =
 {
diff --git a/src/pinger.cc b/src/pinger.cc
index 8c5ead4ae6..00824e6400 100644
--- a/src/pinger.cc
+++ b/src/pinger.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: pinger.cc,v 1.48 2002/10/13 20:35:02 robertc Exp $
+ * $Id: pinger.cc,v 1.49 2003/01/23 00:37:24 robertc Exp $
  *
  * DEBUG: section 42    ICMP Pinger program
  * AUTHOR: Duane Wessels
diff --git a/src/protos.h b/src/protos.h
index c44c0719b3..071857c959 100644
--- a/src/protos.h
+++ b/src/protos.h
@@ -1,6 +1,6 @@
 
 /*
- * $Id: protos.h,v 1.459 2003/01/04 01:13:56 hno Exp $
+ * $Id: protos.h,v 1.460 2003/01/23 00:37:24 robertc Exp $
  *
  *
  * SQUID Web Proxy Cache          http://www.squid-cache.org/
@@ -135,9 +135,7 @@ SQUIDCEXTERN int clientdbCutoffDenied(struct in_addr);
 SQUIDCEXTERN void clientdbDump(StoreEntry *);
 SQUIDCEXTERN void clientdbFreeMemory(void);
 SQUIDCEXTERN int clientdbEstablished(struct in_addr, int);
-
 SQUIDCEXTERN void clientAccessCheck(void *);
-SQUIDCEXTERN char *clientConstructTraceEcho(clientHttpRequest *);
 SQUIDCEXTERN void clientOpenListenSockets(void);
 SQUIDCEXTERN void clientHttpConnectionsClose(void);
 SQUIDCEXTERN void clientReadBody(request_t * req, char *buf, size_t size, CBCB * callback, void *data);
@@ -145,11 +143,8 @@ SQUIDCEXTERN int clientAbortBody(request_t * req);
 SQUIDCEXTERN void httpRequestFree(void *);
 
 extern void clientAccessCheck(void *);
-SQUIDCEXTERN aclCheck_t *clientAclChecklistCreate(const acl_access * acl, const clientHttpRequest * http);
 
 /* client_side_reply.c - client side reply related routines (pure logic, no comms) */
-SQUIDCEXTERN void *clientReplyNewContext(clientHttpRequest *);
-SQUIDCEXTERN int clientHttpRequestStatus(int fd, clientHttpRequest const *http);
 SQUIDCEXTERN void clientSetReplyToError(void *, err_type, http_status, method_t, char const *, struct in_addr *, request_t *, char *, auth_user_request_t * auth_user_request);
 
 /* comm.c */
@@ -235,7 +230,7 @@ SQUIDCEXTERN void debugObj(int section, int level, const char *label, void *obj,
 /* disk.c */
 SQUIDCEXTERN int file_open(const char *path, int mode);
 SQUIDCEXTERN void file_close(int fd);
-SQUIDCEXTERN void file_write(int, off_t, void *, int len, DWCB *, void *, FREE *);
+SQUIDCEXTERN void file_write(int, off_t, void const *, int len, DWCB *, void *, FREE *);
 SQUIDCEXTERN void file_write_mbuf(int fd, off_t, MemBuf mb, DWCB * handler, void *handler_data);
 SQUIDCEXTERN void file_read(int, char *, int, off_t, DRCB *, void *);
 SQUIDCEXTERN void disk_init(void);
@@ -325,7 +320,7 @@ SQUIDCEXTERN int httpAnonHdrAllowed(http_hdr_type hdr_id);
 SQUIDCEXTERN int httpAnonHdrDenied(http_hdr_type hdr_id);
 SQUIDCEXTERN void httpBuildRequestHeader(request_t *, request_t *, StoreEntry *, HttpHeader *, http_state_flags);
 SQUIDCEXTERN void httpBuildVersion(http_version_t * version, unsigned int major, unsigned int minor);
-SQUIDCEXTERN const char *httpMakeVaryMark(request_t * request, HttpReply * reply);
+SQUIDCEXTERN const char *httpMakeVaryMark(request_t * request, HttpReply const * reply);
 
 /* ETag */
 SQUIDCEXTERN int etagParseInit(ETag * etag, const char *str);
@@ -373,37 +368,6 @@ SQUIDCEXTERN void httpHdrCcSetSMaxAge(HttpHdrCc * cc, int s_maxage);
 SQUIDCEXTERN void httpHdrCcUpdateStats(const HttpHdrCc * cc, StatHist * hist);
 SQUIDCEXTERN void httpHdrCcStatDumper(StoreEntry * sentry, int idx, double val, double size, int count);
 
-/* Http Range Header Field */
-SQUIDCEXTERN HttpHdrRange *httpHdrRangeParseCreate(const String * range_spec);
-/* returns true if ranges are valid; inits HttpHdrRange */
-SQUIDCEXTERN int httpHdrRangeParseInit(HttpHdrRange * range, const String * range_spec);
-SQUIDCEXTERN void httpHdrRangeDestroy(HttpHdrRange * range);
-SQUIDCEXTERN HttpHdrRange *httpHdrRangeDup(const HttpHdrRange * range);
-SQUIDCEXTERN void httpHdrRangePackInto(const HttpHdrRange * range, Packer * p);
-/* iterate through specs */
-SQUIDCEXTERN HttpHdrRangeSpec *httpHdrRangeGetSpec(const HttpHdrRange * range, HttpHdrRangePos * pos);
-/* adjust specs after the length is known */
-SQUIDCEXTERN int httpHdrRangeCanonize(HttpHdrRange *, ssize_t);
-/* other */
-SQUIDCEXTERN String httpHdrRangeBoundaryStr(clientHttpRequest * http);
-SQUIDCEXTERN int httpHdrRangeIsComplex(const HttpHdrRange * range);
-SQUIDCEXTERN int httpHdrRangeWillBeComplex(const HttpHdrRange * range);
-SQUIDCEXTERN ssize_t httpHdrRangeFirstOffset(const HttpHdrRange * range);
-SQUIDCEXTERN ssize_t httpHdrRangeLowestOffset(const HttpHdrRange * range, ssize_t);
-SQUIDCEXTERN int httpHdrRangeOffsetLimit(HttpHdrRange *);
-
-
-/* Http Content Range Header Field */
-SQUIDCEXTERN HttpHdrContRange *httpHdrContRangeCreate(void);
-SQUIDCEXTERN HttpHdrContRange *httpHdrContRangeParseCreate(const char *crange_spec);
-/* returns true if range is valid; inits HttpHdrContRange */
-SQUIDCEXTERN int httpHdrContRangeParseInit(HttpHdrContRange * crange, const char *crange_spec);
-SQUIDCEXTERN void httpHdrContRangeDestroy(HttpHdrContRange * crange);
-SQUIDCEXTERN HttpHdrContRange *httpHdrContRangeDup(const HttpHdrContRange * crange);
-SQUIDCEXTERN void httpHdrContRangePackInto(const HttpHdrContRange * crange, Packer * p);
-/* inits with given spec */
-SQUIDCEXTERN void httpHdrContRangeSet(HttpHdrContRange *, HttpHdrRangeSpec, ssize_t);
-
 /* Http Header Tools */
 SQUIDCEXTERN HttpHeaderFieldInfo *httpHeaderBuildFieldsInfo(const HttpHeaderFieldAttrs * attrs, int count);
 SQUIDCEXTERN void httpHeaderDestroyFieldsInfo(HttpHeaderFieldInfo * info, int count);
@@ -413,7 +377,6 @@ SQUIDCEXTERN const char *httpHeaderNameById(int id);
 SQUIDCEXTERN void httpHeaderMaskInit(HttpHeaderMask * mask, int value);
 SQUIDCEXTERN void httpHeaderCalcMask(HttpHeaderMask * mask, const int *enums, size_t count);
 SQUIDCEXTERN int httpHeaderHasConnDir(const HttpHeader * hdr, const char *directive);
-SQUIDCEXTERN void httpHeaderAddContRange(HttpHeader *, HttpHdrRangeSpec, ssize_t);
 SQUIDCEXTERN void strListAdd(String * str, const char *item, char del);
 SQUIDCEXTERN int strListIsMember(const String * str, const char *item, char del);
 SQUIDCEXTERN int strListIsSubstr(const String * list, const char *s, char del);
@@ -470,6 +433,7 @@ SQUIDCEXTERN String httpHeaderGetByNameListMember(const HttpHeader * hdr, const
 SQUIDCEXTERN int httpHeaderDelByName(HttpHeader * hdr, const char *name);
 SQUIDCEXTERN int httpHeaderDelById(HttpHeader * hdr, http_hdr_type id);
 SQUIDCEXTERN void httpHeaderDelAt(HttpHeader * hdr, HttpHeaderPos pos);
+extern int httpHeaderEntryGetInt(const HttpHeaderEntry * e);
 /* avoid using these low level routines */
 SQUIDCEXTERN HttpHeaderEntry *httpHeaderGetEntry(const HttpHeader * hdr, HttpHeaderPos * pos);
 SQUIDCEXTERN HttpHeaderEntry *httpHeaderFindEntry(const HttpHeader * hdr, http_hdr_type id);
@@ -484,54 +448,6 @@ SQUIDCEXTERN void httpHdrMangleList(HttpHeader *, request_t *);
 SQUIDCEXTERN int httpMsgIsPersistent(http_version_t http_ver, const HttpHeader * hdr);
 SQUIDCEXTERN int httpMsgIsolateHeaders(const char **parse_start, const char **blk_start, const char **blk_end);
 
-/* Http Reply */
-SQUIDCEXTERN void httpReplyInitModule(void);
-/* create/destroy */
-SQUIDCEXTERN HttpReply *httpReplyCreate(void);
-SQUIDCEXTERN void httpReplyDestroy(HttpReply * rep);
-/* reset: clean, then init */
-SQUIDCEXTERN void httpReplyReset(HttpReply * rep);
-/* absorb: copy the contents of a new reply to the old one, destroy new one */
-SQUIDCEXTERN void httpReplyAbsorb(HttpReply * rep, HttpReply * new_rep);
-/* parse returns -1,0,+1 on error,need-more-data,success */
-SQUIDCEXTERN int httpReplyParse(HttpReply * rep, const char *buf, ssize_t);
-SQUIDCEXTERN void httpReplyPackInto(const HttpReply * rep, Packer * p);
-/* ez-routines */
-/* mem-pack: returns a ready to use mem buffer with a packed reply */
-SQUIDCEXTERN MemBuf httpReplyPack(const HttpReply * rep);
-/* swap: create swap-based packer, pack, destroy packer */
-SQUIDCEXTERN void httpReplySwapOut(const HttpReply * rep, StoreEntry * e);
-/* set commonly used info with one call */
-SQUIDCEXTERN void httpReplySetHeaders(HttpReply * rep, http_version_t ver, http_status status,
-    const char *reason, const char *ctype, int clen, time_t lmt, time_t expires);
-/* do everything in one call: init, set, pack, clean, return MemBuf */
-SQUIDCEXTERN MemBuf httpPackedReply(http_version_t ver, http_status status, const char *ctype,
-    int clen, time_t lmt, time_t expires);
-/* construct 304 reply and pack it into MemBuf, return MemBuf */
-SQUIDCEXTERN MemBuf httpPacked304Reply(const HttpReply * rep);
-/* update when 304 reply is received for a cached object */
-SQUIDCEXTERN void httpReplyUpdateOnNotModified(HttpReply * rep, HttpReply * freshRep);
-/* header manipulation */
-SQUIDCEXTERN int httpReplyContentLen(const HttpReply * rep);
-SQUIDCEXTERN const char *httpReplyContentType(const HttpReply * rep);
-SQUIDCEXTERN time_t httpReplyExpires(const HttpReply * rep);
-SQUIDCEXTERN int httpReplyHasCc(const HttpReply * rep, http_hdr_cc_type type);
-SQUIDCEXTERN void httpRedirectReply(HttpReply *, http_status, const char *);
-SQUIDCEXTERN int httpReplyBodySize(method_t, HttpReply *);
-SQUIDCEXTERN void httpReplyBodyBuildSize(request_t *, HttpReply *, dlink_list *);
-
-/* Http Request */
-SQUIDCEXTERN request_t *requestCreate(method_t, protocol_t, const char *urlpath);
-SQUIDCEXTERN void requestDestroy(request_t *);
-SQUIDCEXTERN request_t *requestLink(request_t *);
-SQUIDCEXTERN void requestUnlink(request_t *);
-SQUIDCEXTERN int httpRequestParseHeader(request_t * req, const char *parse_start);
-SQUIDCEXTERN void httpRequestSwapOut(const request_t * req, StoreEntry * e);
-SQUIDCEXTERN void httpRequestPack(const request_t * req, Packer * p);
-SQUIDCEXTERN int httpRequestPrefixLen(const request_t * req);
-SQUIDCEXTERN int httpRequestHdrAllowed(const HttpHeaderEntry * e, String * strConnection);
-SQUIDCEXTERN int httpRequestHdrAllowedByName(http_hdr_type id);
-
 SQUIDCEXTERN void icmpOpen(void);
 SQUIDCEXTERN void icmpClose(void);
 SQUIDCEXTERN void icmpSourcePing(struct in_addr to, const icp_common_t *, const char *url);
@@ -589,33 +505,6 @@ SQUIDCEXTERN ipcache_addrs *ipcacheCheckNumeric(const char *name);
 SQUIDCEXTERN void ipcache_restart(void);
 SQUIDCEXTERN int ipcacheAddEntryFromHosts(const char *name, const char *ipaddr);
 
-/* MemBuf */
-/* init with specific sizes */
-SQUIDCEXTERN void memBufInit(MemBuf * mb, mb_size_t szInit, mb_size_t szMax);
-/* init with defaults */
-SQUIDCEXTERN void memBufDefInit(MemBuf * mb);
-/* cleans mb; last function to call if you do not give .buf away */
-SQUIDCEXTERN void memBufClean(MemBuf * mb);
-/* resets mb preserving (or initializing if needed) memory buffer */
-SQUIDCEXTERN void memBufReset(MemBuf * mb);
-/* unfirtunate hack to test if the buffer has been Init()ialized */
-SQUIDCEXTERN int memBufIsNull(MemBuf * mb);
-/* calls memcpy, appends exactly size bytes, extends buffer if needed */
-SQUIDCEXTERN void memBufAppend(MemBuf * mb, const char *buf, mb_size_t size);
-/* calls snprintf, extends buffer if needed */
-#if STDC_HEADERS
-SQUIDCEXTERN void
-memBufPrintf(MemBuf * mb, const char *fmt,...) PRINTF_FORMAT_ARG2;
-#else
-SQUIDCEXTERN void memBufPrintf();
-#endif
-/* vprintf for other printf()'s to use */
-SQUIDCEXTERN void memBufVPrintf(MemBuf * mb, const char *fmt, va_list ap);
-/* returns free() function to be used, _freezes_ the object! */
-SQUIDCEXTERN FREE *memBufFreeFunc(MemBuf * mb);
-/* puts report on MemBuf _module_ usage into mb */
-SQUIDCEXTERN void memBufReport(MemBuf * mb);
-
 SQUIDCEXTERN char *mime_get_header(const char *mime, const char *header);
 SQUIDCEXTERN char *mime_get_header_field(const char *mime, const char *name, const char *prefix);
 SQUIDCEXTERN size_t headersEnd(const char *, size_t);
@@ -708,7 +597,6 @@ SQUIDCEXTERN void peerDigestStatsReport(const PeerDigest * pd, StoreEntry * e);
 
 /* forward.c */
 SQUIDCEXTERN void fwdStart(int, StoreEntry *, request_t *);
-SQUIDCEXTERN DEFER fwdCheckDeferRead;
 SQUIDCEXTERN void fwdFail(FwdState *, ErrorState *);
 SQUIDCEXTERN void fwdUnregister(int fd, FwdState *);
 SQUIDCEXTERN void fwdComplete(FwdState * fwdState);
@@ -725,7 +613,6 @@ unsigned long getOutgoingTOS(request_t * request);
 
 SQUIDCEXTERN void urnStart(request_t *, StoreEntry *);
 
-SQUIDCEXTERN void redirectStart(clientHttpRequest *, RH *, void *);
 SQUIDCEXTERN void redirectInit(void);
 SQUIDCEXTERN void redirectShutdown(void);
 
@@ -743,7 +630,6 @@ SQUIDCEXTERN void shut_down(int);
 
 
 SQUIDCEXTERN void start_announce(void *unused);
-SQUIDCEXTERN void sslStart(clientHttpRequest *, size_t *, int *);
 SQUIDCEXTERN void waisStart(FwdState *);
 
 extern void refreshAddToList(const char *, int, time_t, int, time_t);
@@ -760,7 +646,6 @@ extern void shut_down(int);
 
 
 extern void start_announce(void *unused);
-extern void sslStart(clientHttpRequest *, size_t *, int *);
 extern void waisStart(FwdState *);
 
 /* ident.c */
@@ -796,7 +681,6 @@ SQUIDCEXTERN StatHistBinDumper statHistIntDumper;
 
 
 /* mem */
-SQUIDCEXTERN void memInit(void);
 SQUIDCEXTERN void memClean(void);
 SQUIDCEXTERN void memInitModule(void);
 SQUIDCEXTERN void memCleanModule(void);
@@ -829,18 +713,10 @@ SQUIDCEXTERN int memPoolGetGlobalStats(MemPoolGlobalStats * stats);
 SQUIDCEXTERN void memPoolClean(time_t maxage);
 
 /* Mem */
-SQUIDCEXTERN void memReport(StoreEntry * e);
 SQUIDCEXTERN void memConfigure(void);
-SQUIDCEXTERN void memPoolCleanIdlePools(void *unused);
 SQUIDCEXTERN int memPoolInUseCount(MemPool * pool);
 SQUIDCEXTERN int memPoolsTotalAllocated(void);
 
-SQUIDCEXTERN int stmemFreeDataUpto(mem_hdr *, int);
-SQUIDCEXTERN void stmemAppend(mem_hdr *, const char *, int);
-SQUIDCEXTERN ssize_t stmemCopy(const mem_hdr *, off_t, char *, size_t);
-SQUIDCEXTERN void stmemFree(mem_hdr *);
-SQUIDCEXTERN void stmemFreeData(mem_hdr *);
-
 /* ----------------------------------------------------------------- */
 
 /* store_modules.c */
@@ -850,11 +726,12 @@ SQUIDCEXTERN void storeFsSetup(void);
 SQUIDCEXTERN void storeReplSetup(void);
 
 /* store_io.c */
+#include "StoreIOState.h"
 SQUIDCEXTERN StoreIOState::Pointer storeCreate(StoreEntry *, STFNCB *, STIOCB *, void *);
 SQUIDCEXTERN StoreIOState::Pointer storeOpen(StoreEntry *, STFNCB *, STIOCB *, void *);
 SQUIDCEXTERN void storeClose(StoreIOState::Pointer);
 SQUIDCEXTERN void storeRead(StoreIOState::Pointer, char *, size_t, off_t, STRCB *, void *);
-SQUIDCEXTERN void storeWrite(StoreIOState::Pointer, char *, size_t, off_t, FREE *);
+SQUIDCEXTERN void storeIOWrite(StoreIOState::Pointer, char const *, size_t, off_t, FREE *);
 SQUIDCEXTERN void storeUnlink(StoreEntry *);
 
 /*
@@ -921,14 +798,6 @@ SQUIDCEXTERN void storeDirLRUAdd(StoreEntry *);
 SQUIDCEXTERN int storeDirGetBlkSize(const char *path, int *blksize);
 SQUIDCEXTERN int storeDirGetUFSStats(const char *, int *, int *, int *, int *);
 
-/*
- * store_swapmeta.c
- */
-SQUIDCEXTERN char *storeSwapMetaPack(tlv * tlv_list, int *length);
-SQUIDCEXTERN tlv *storeSwapMetaBuild(StoreEntry * e);
-SQUIDCEXTERN tlv *storeSwapMetaUnpack(const char *buf, int *hdrlen);
-SQUIDCEXTERN void storeSwapTLVFree(tlv * n);
-
 /*
  * store_rebuild.c
  */
@@ -954,7 +823,6 @@ SQUIDCEXTERN int storeSwapOutAble(const StoreEntry * e);
 SQUIDCEXTERN store_client *storeClientListAdd(StoreEntry * e, void *data);
 SQUIDCEXTERN int storeClientCopyPending(store_client *, StoreEntry * e, void *data);
 SQUIDCEXTERN int storeUnregister(store_client * sc, StoreEntry * e, void *data);
-SQUIDCEXTERN off_t storeLowestMemReaderOffset(const StoreEntry * entry);
 SQUIDCEXTERN void InvokeHandlers(StoreEntry * e);
 SQUIDCEXTERN int storePendingNClients(const StoreEntry * e);
 SQUIDCEXTERN int storeClientIsThisAClient(store_client * sc, void *someClient);
@@ -1076,27 +944,6 @@ SQUIDCEXTERN void htcpSocketShutdown(void);
 SQUIDCEXTERN void htcpSocketClose(void);
 #endif
 
-/* String */
-#define strLen(s)     ((/* const */ int)(s).len)
-#define strBuf(s)     ((const char*)(s).buf)
-#define strChr(s,ch)  ((const char*)strchr(strBuf(s), (ch)))
-#define strRChr(s,ch) ((const char*)strrchr(strBuf(s), (ch)))
-#define strStr(s,str) ((const char*)strstr(strBuf(s), (str)))
-#define strCmp(s,str)     strcmp(strBuf(s), (str))
-#define strNCmp(s,str,n)     strncmp(strBuf(s), (str), (n))
-#define strCaseCmp(s,str) strcasecmp(strBuf(s), (str))
-#define strNCaseCmp(s,str,n) strncasecmp(strBuf(s), (str), (n))
-#define strSet(s,ptr,ch) (s).buf[ptr-(s).buf] = (ch)
-#define strCut(s,pos) (((s).len = pos) , ((s).buf[pos] = '\0'))
-#define strCutPtr(s,ptr) (((s).len = (ptr)-(s).buf) , ((s).buf[(s).len] = '\0'))
-#define strCat(s,str)  stringAppend(&(s), (str), strlen(str))
-SQUIDCEXTERN void stringInit(String * s, const char *str);
-SQUIDCEXTERN void stringLimitInit(String * s, const char *str, int len);
-SQUIDCEXTERN String stringDup(const String * s);
-SQUIDCEXTERN void stringClean(String * s);
-SQUIDCEXTERN void stringReset(String * s, const char *str);
-SQUIDCEXTERN void stringAppend(String * s, const char *buf, int len);
-/* SQUIDCEXTERN void stringAppendf(String *s, const char *fmt, ...) PRINTF_FORMAT_ARG2; */
 
 /*
  * ipc.c
@@ -1147,10 +994,10 @@ SQUIDCEXTERN void delayPoolsReconfigure(void);
 SQUIDCEXTERN void delaySetNoDelay(int fd);
 SQUIDCEXTERN void delayClearNoDelay(int fd);
 SQUIDCEXTERN int delayIsNoDelay(int fd);
-SQUIDCEXTERN delay_id delayClient(clientHttpRequest *);
 SQUIDCEXTERN EVH delayPoolsUpdate;
 SQUIDCEXTERN int delayBytesWanted(delay_id d, int min, int max);
 SQUIDCEXTERN void delayBytesIn(delay_id, int qty);
+class MemObject;
 SQUIDCEXTERN int delayMostBytesWanted(const MemObject * mem, int max);
 SQUIDCEXTERN delay_id delayMostBytesAllowed(const MemObject * mem);
 SQUIDCEXTERN void delaySetStoreClient(store_client * sc, delay_id delay_id);
@@ -1213,10 +1060,6 @@ SQUIDCEXTERN int getpagesize(void);
 SQUIDCEXTERN int gethostname(char *, int);
 #endif
 
-#if URL_CHECKSUM_DEBUG
-SQUIDCEXTERN unsigned int url_checksum(const char *url);
-#endif
-
 /*
  * hack to allow snmp access to the statistics counters
  */
diff --git a/src/recv-announce.cc b/src/recv-announce.cc
index da9007a2b1..7482700017 100644
--- a/src/recv-announce.cc
+++ b/src/recv-announce.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: recv-announce.cc,v 1.24 2002/10/13 20:35:03 robertc Exp $
+ * $Id: recv-announce.cc,v 1.25 2003/01/23 00:37:25 robertc Exp $
  *
  * DEBUG: section 0     Announcement Server
  * AUTHOR: Harvest Derived
diff --git a/src/redirect.cc b/src/redirect.cc
index d2144e6458..cc8d1bcba5 100644
--- a/src/redirect.cc
+++ b/src/redirect.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: redirect.cc,v 1.92 2002/10/13 20:35:03 robertc Exp $
+ * $Id: redirect.cc,v 1.93 2003/01/23 00:37:25 robertc Exp $
  *
  * DEBUG: section 61    Redirector
  * AUTHOR: Duane Wessels
@@ -36,6 +36,7 @@
 #include "squid.h"
 #include "authenticate.h"
 #include "Store.h"
+#include "client_side_request.h"
 
 typedef struct {
     void *data;
diff --git a/src/referer.cc b/src/referer.cc
index 1543b700fa..d93441a734 100644
--- a/src/referer.cc
+++ b/src/referer.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: referer.cc,v 1.5 2002/10/18 22:43:23 hno Exp $
+ * $Id: referer.cc,v 1.6 2003/01/23 00:37:25 robertc Exp $
  *
  * DEBUG: section 40    User-Agent and Referer logging
  * AUTHOR: Joe Ramey  (useragent)
diff --git a/src/refresh.cc b/src/refresh.cc
index cb14114273..0020a33e04 100644
--- a/src/refresh.cc
+++ b/src/refresh.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: refresh.cc,v 1.58 2002/10/13 20:35:03 robertc Exp $
+ * $Id: refresh.cc,v 1.59 2003/01/23 00:37:25 robertc Exp $
  *
  * DEBUG: section 22    Refresh Calculation
  * AUTHOR: Harvest Derived
@@ -39,6 +39,7 @@
 
 #include "squid.h"
 #include "Store.h"
+#include "MemObject.h"
 
 typedef enum {
     rcHTTP,
@@ -269,11 +270,19 @@ refreshCheck(const StoreEntry * entry, request_t * request, time_t delta)
 #if HTTP_VIOLATIONS
 		if (R->flags.ignore_reload && cc->max_age == 0) {
 		} else
+#endif
+		  {
+#if 0
+		    if (cc->max_age == 0) {
+			debug (22,3) ("refreshCheck: YES: client-max-age = 0\n");
+			return STALE_EXCEEDS_REQUEST_MAX_AGE_VALUE;
+		    }
 #endif
 		if (age > cc->max_age) {
 		    debug(22, 3) ("refreshCheck: YES: age > client-max-age\n");
 		    return STALE_EXCEEDS_REQUEST_MAX_AGE_VALUE;
 		}
+		  }
 	    }
 	    if (EBIT_TEST(cc->mask, CC_MAX_STALE) && staleness > -1) {
 		if (cc->max_stale < 0) {
@@ -344,10 +353,10 @@ refreshIsCachable(const StoreEntry * entry)
     if (entry->mem_obj == NULL)
 	/* no mem_obj? */
 	return 1;
-    if (entry->mem_obj->reply == NULL)
+    if (entry->getReply() == NULL)
 	/* no reply? */
 	return 1;
-    if (entry->mem_obj->reply->content_length == 0)
+    if (entry->getReply()->content_length == 0)
 	/* No use refreshing (caching?) 0 byte objects */
 	return 0;
     /* This seems to be refreshable. Cache it */
diff --git a/src/repl/Makefile.am b/src/repl/Makefile.am
index 0a490e3603..8021f84023 100644
--- a/src/repl/Makefile.am
+++ b/src/repl/Makefile.am
@@ -1,6 +1,6 @@
 #  Makefile for storage modules in the Squid Object Cache server
 #
-#  $Id: Makefile.am,v 1.4 2002/10/19 01:00:27 robertc Exp $
+#  $Id: Makefile.am,v 1.5 2003/01/23 00:38:25 robertc Exp $
 #
 
 AUTOMAKE_OPTIONS = subdir-objects
diff --git a/src/repl/Makefile.in b/src/repl/Makefile.in
index a40be42ef8..21c90cce66 100644
--- a/src/repl/Makefile.in
+++ b/src/repl/Makefile.in
@@ -1,6 +1,7 @@
-# Makefile.in generated automatically by automake 1.5 from Makefile.am.
+# Makefile.in generated by automake 1.6.3 from Makefile.am.
+# @configure_input@
 
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
 # Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -15,9 +16,8 @@
 
 #  Makefile for storage modules in the Squid Object Cache server
 #
-#  $Id: Makefile.in,v 1.23 2002/10/19 01:00:27 robertc Exp $
+#  $Id: Makefile.in,v 1.24 2003/01/23 00:38:25 robertc Exp $
 #
-
 SHELL = @SHELL@
 
 srcdir = @srcdir@
@@ -48,9 +48,13 @@ AUTOCONF = @AUTOCONF@
 AUTOMAKE = @AUTOMAKE@
 AUTOHEADER = @AUTOHEADER@
 
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 INSTALL = @INSTALL@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_DATA = @INSTALL_DATA@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_HEADER = $(INSTALL_DATA)
 transform = @program_transform_name@
@@ -62,6 +66,10 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 host_alias = @host_alias@
 host_triplet = @host@
+
+EXEEXT = @EXEEXT@
+OBJEXT = @OBJEXT@
+PATH_SEPARATOR = @PATH_SEPARATOR@
 AMTAR = @AMTAR@
 AR = @AR@
 AR_R = @AR_R@
@@ -79,7 +87,6 @@ DEPDIR = @DEPDIR@
 DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@
 ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@
 ERR_LANGUAGES = @ERR_LANGUAGES@
-EXEEXT = @EXEEXT@
 EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@
 FALSE = @FALSE@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
@@ -92,7 +99,6 @@ MAINT = @MAINT@
 MKDIR = @MKDIR@
 MV = @MV@
 NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
 OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
 PACKAGE = @PACKAGE@
 PERL = @PERL@
@@ -109,6 +115,7 @@ STORE_LIBS = @STORE_LIBS@
 STORE_MODULES = @STORE_MODULES@
 STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
 STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
 TRUE = @TRUE@
 VERSION = @VERSION@
 XTRA_LIBS = @XTRA_LIBS@
@@ -155,9 +162,10 @@ CPPFLAGS = @CPPFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBS = @LIBS@
 depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp
-@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/heap/store_heap_replacement.Po \
-@AMDEP_TRUE@	$(DEPDIR)/heap/store_repl_heap.Po \
-@AMDEP_TRUE@	$(DEPDIR)/lru/store_repl_lru.Po
+am__depfiles_maybe = depfiles
+@AMDEP_TRUE@DEP_FILES = heap/$(DEPDIR)/store_heap_replacement.Po \
+@AMDEP_TRUE@	heap/$(DEPDIR)/store_repl_heap.Po \
+@AMDEP_TRUE@	lru/$(DEPDIR)/store_repl_lru.Po
 CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
 CXXLD = $(CXX)
@@ -181,24 +189,20 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configu
 	cd $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign  src/repl/Makefile
 Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
-	cd $(top_builddir) && \
-	  CONFIG_HEADERS= CONFIG_LINKS= \
-	  CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
-
-AR = ar
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
 
 clean-noinstLIBRARIES:
 	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
 heap/.dirstamp:
 	@$(mkinstalldirs) heap
 	@: > heap/.dirstamp
-$(DEPDIR)/heap/.dirstamp:
-	@$(mkinstalldirs) $(DEPDIR)/heap
-	@: > $(DEPDIR)/heap/.dirstamp
+heap/$(DEPDIR)/.dirstamp:
+	@$(mkinstalldirs) heap/$(DEPDIR)
+	@: > heap/$(DEPDIR)/.dirstamp
 heap/store_heap_replacement.$(OBJEXT): heap/store_heap_replacement.cc \
-	heap/.dirstamp $(DEPDIR)/heap/.dirstamp
+	heap/.dirstamp heap/$(DEPDIR)/.dirstamp
 heap/store_repl_heap.$(OBJEXT): heap/store_repl_heap.cc heap/.dirstamp \
-	$(DEPDIR)/heap/.dirstamp
+	heap/$(DEPDIR)/.dirstamp
 libheap.a: $(libheap_a_OBJECTS) $(libheap_a_DEPENDENCIES) 
 	-rm -f libheap.a
 	$(libheap_a_AR) libheap.a $(libheap_a_OBJECTS) $(libheap_a_LIBADD)
@@ -206,11 +210,11 @@ libheap.a: $(libheap_a_OBJECTS) $(libheap_a_DEPENDENCIES)
 lru/.dirstamp:
 	@$(mkinstalldirs) lru
 	@: > lru/.dirstamp
-$(DEPDIR)/lru/.dirstamp:
-	@$(mkinstalldirs) $(DEPDIR)/lru
-	@: > $(DEPDIR)/lru/.dirstamp
+lru/$(DEPDIR)/.dirstamp:
+	@$(mkinstalldirs) lru/$(DEPDIR)
+	@: > lru/$(DEPDIR)/.dirstamp
 lru/store_repl_lru.$(OBJEXT): lru/store_repl_lru.cc lru/.dirstamp \
-	$(DEPDIR)/lru/.dirstamp
+	lru/$(DEPDIR)/.dirstamp
 liblru.a: $(liblru_a_OBJECTS) $(liblru_a_DEPENDENCIES) 
 	-rm -f liblru.a
 	$(liblru_a_AR) liblru.a $(liblru_a_OBJECTS) $(liblru_a_LIBADD)
@@ -224,23 +228,23 @@ mostlyclean-compile:
 
 distclean-compile:
 	-rm -f *.tab.c
-	-rm -f $(DEPDIR)/heap/.dirstamp
-	-rm -f $(DEPDIR)/lru/.dirstamp
+	-rm -f heap/$(DEPDIR)/.dirstamp
 	-rm -f heap/.dirstamp
+	-rm -f lru/$(DEPDIR)/.dirstamp
 	-rm -f lru/.dirstamp
 
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/heap/store_heap_replacement.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/heap/store_repl_heap.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/lru/store_repl_lru.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@heap/$(DEPDIR)/store_heap_replacement.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@heap/$(DEPDIR)/store_repl_heap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lru/$(DEPDIR)/store_repl_lru.Po@am__quote@
 
 distclean-depend:
-	-rm -rf $(DEPDIR)
+	-rm -rf heap/$(DEPDIR) lru/$(DEPDIR)
 
 .cc.o:
 @AMDEP_TRUE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
 @AMDEP_TRUE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-	$(CXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$<
+	$(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
 
 .cc.obj:
 @AMDEP_TRUE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@@ -250,89 +254,97 @@ distclean-depend:
 
 heap/store_heap_replacement.o: heap/store_heap_replacement.cc
 @AMDEP_TRUE@	source='heap/store_heap_replacement.cc' object='heap/store_heap_replacement.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@	depfile='$(DEPDIR)/heap/store_heap_replacement.Po' tmpdepfile='$(DEPDIR)/heap/store_heap_replacement.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@	depfile='heap/$(DEPDIR)/store_heap_replacement.Po' tmpdepfile='heap/$(DEPDIR)/store_heap_replacement.TPo' @AMDEPBACKSLASH@
 @AMDEP_TRUE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o heap/store_heap_replacement.o `test -f heap/store_heap_replacement.cc || echo '$(srcdir)/'`heap/store_heap_replacement.cc
+	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o heap/store_heap_replacement.o `test -f 'heap/store_heap_replacement.cc' || echo '$(srcdir)/'`heap/store_heap_replacement.cc
 
 heap/store_heap_replacement.obj: heap/store_heap_replacement.cc
 @AMDEP_TRUE@	source='heap/store_heap_replacement.cc' object='heap/store_heap_replacement.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@	depfile='$(DEPDIR)/heap/store_heap_replacement.Po' tmpdepfile='$(DEPDIR)/heap/store_heap_replacement.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@	depfile='heap/$(DEPDIR)/store_heap_replacement.Po' tmpdepfile='heap/$(DEPDIR)/store_heap_replacement.TPo' @AMDEPBACKSLASH@
 @AMDEP_TRUE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o heap/store_heap_replacement.obj `cygpath -w heap/store_heap_replacement.cc`
 
 heap/store_repl_heap.o: heap/store_repl_heap.cc
 @AMDEP_TRUE@	source='heap/store_repl_heap.cc' object='heap/store_repl_heap.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@	depfile='$(DEPDIR)/heap/store_repl_heap.Po' tmpdepfile='$(DEPDIR)/heap/store_repl_heap.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@	depfile='heap/$(DEPDIR)/store_repl_heap.Po' tmpdepfile='heap/$(DEPDIR)/store_repl_heap.TPo' @AMDEPBACKSLASH@
 @AMDEP_TRUE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o heap/store_repl_heap.o `test -f heap/store_repl_heap.cc || echo '$(srcdir)/'`heap/store_repl_heap.cc
+	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o heap/store_repl_heap.o `test -f 'heap/store_repl_heap.cc' || echo '$(srcdir)/'`heap/store_repl_heap.cc
 
 heap/store_repl_heap.obj: heap/store_repl_heap.cc
 @AMDEP_TRUE@	source='heap/store_repl_heap.cc' object='heap/store_repl_heap.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@	depfile='$(DEPDIR)/heap/store_repl_heap.Po' tmpdepfile='$(DEPDIR)/heap/store_repl_heap.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@	depfile='heap/$(DEPDIR)/store_repl_heap.Po' tmpdepfile='heap/$(DEPDIR)/store_repl_heap.TPo' @AMDEPBACKSLASH@
 @AMDEP_TRUE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o heap/store_repl_heap.obj `cygpath -w heap/store_repl_heap.cc`
 
 lru/store_repl_lru.o: lru/store_repl_lru.cc
 @AMDEP_TRUE@	source='lru/store_repl_lru.cc' object='lru/store_repl_lru.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@	depfile='$(DEPDIR)/lru/store_repl_lru.Po' tmpdepfile='$(DEPDIR)/lru/store_repl_lru.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@	depfile='lru/$(DEPDIR)/store_repl_lru.Po' tmpdepfile='lru/$(DEPDIR)/store_repl_lru.TPo' @AMDEPBACKSLASH@
 @AMDEP_TRUE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lru/store_repl_lru.o `test -f lru/store_repl_lru.cc || echo '$(srcdir)/'`lru/store_repl_lru.cc
+	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lru/store_repl_lru.o `test -f 'lru/store_repl_lru.cc' || echo '$(srcdir)/'`lru/store_repl_lru.cc
 
 lru/store_repl_lru.obj: lru/store_repl_lru.cc
 @AMDEP_TRUE@	source='lru/store_repl_lru.cc' object='lru/store_repl_lru.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@	depfile='$(DEPDIR)/lru/store_repl_lru.Po' tmpdepfile='$(DEPDIR)/lru/store_repl_lru.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@	depfile='lru/$(DEPDIR)/store_repl_lru.Po' tmpdepfile='lru/$(DEPDIR)/store_repl_lru.TPo' @AMDEPBACKSLASH@
 @AMDEP_TRUE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lru/store_repl_lru.obj `cygpath -w lru/store_repl_lru.cc`
 CXXDEPMODE = @CXXDEPMODE@
 uninstall-info-am:
 
+ETAGS = etags
+ETAGSFLAGS =
+
 tags: TAGS
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	mkid -fID $$unique $(LISP)
+	mkid -fID $$unique
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
 	tags=; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-	  || etags $(ETAGS_ARGS) $$tags  $$unique $(LISP)
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
 
 GTAGS:
-	here=`CDPATH=: && cd $(top_builddir) && pwd` \
+	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && cd $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) $$here
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
-
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 
 top_distdir = ../..
 distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
 
 distdir: $(DISTFILES)
-	@for file in $(DISTFILES); do \
-	  if test -f $$file; then d=.; else d=$(srcdir); fi; \
+	@list='$(DISTFILES)'; for file in $$list; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
 	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-	    $(mkinstalldirs) "$(distdir)/$$dir"; \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
 	  fi; \
 	  if test -d $$d/$$file; then \
-	    cp -pR $$d/$$file $(distdir) \
-	    || exit 1; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
 	  else \
 	    test -f $(distdir)/$$file \
 	    || cp -p $$d/$$file $(distdir)/$$file \
@@ -356,6 +368,7 @@ install-am: all-am
 installcheck: installcheck-am
 install-strip:
 	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  INSTALL_STRIP_FLAG=-s \
 	  `test -z '$(STRIP)' || \
 	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
 mostlyclean-generic:
@@ -363,7 +376,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
+	-rm -f Makefile $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
diff --git a/src/repl/heap/store_heap_replacement.cc b/src/repl/heap/store_heap_replacement.cc
index 0f1df2c0e4..48914c1192 100644
--- a/src/repl/heap/store_heap_replacement.cc
+++ b/src/repl/heap/store_heap_replacement.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: store_heap_replacement.cc,v 1.10 2002/10/15 08:03:36 robertc Exp $
+ * $Id: store_heap_replacement.cc,v 1.11 2003/01/23 00:38:28 robertc Exp $
  *
  * DEBUG: section 20    Storage Manager Heap-based replacement
  * AUTHOR: John Dilley
@@ -45,6 +45,7 @@
 #include "heap.h"
 #include "store_heap_replacement.h"
 #include "Store.h"
+#include "MemObject.h"
 
 /*
  * Key generation function to implement the LFU-DA policy (Least
diff --git a/src/repl/heap/store_repl_heap.cc b/src/repl/heap/store_repl_heap.cc
index 3642477b68..41f4c4818a 100644
--- a/src/repl/heap/store_repl_heap.cc
+++ b/src/repl/heap/store_repl_heap.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: store_repl_heap.cc,v 1.11 2002/10/13 20:35:29 robertc Exp $
+ * $Id: store_repl_heap.cc,v 1.12 2003/01/23 00:38:28 robertc Exp $
  *
  * DEBUG: section ?     HEAP based removal policies
  * AUTHOR: Henrik Nordstrom
@@ -45,6 +45,7 @@
 #include "heap.h"
 #include "store_heap_replacement.h"
 #include "Store.h"
+#include "MemObject.h"
 
 REMOVALPOLICYCREATE createRemovalPolicy_heap;
 
diff --git a/src/repl/lru/store_repl_lru.cc b/src/repl/lru/store_repl_lru.cc
index feb07dd997..94663f3a0b 100644
--- a/src/repl/lru/store_repl_lru.cc
+++ b/src/repl/lru/store_repl_lru.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: store_repl_lru.cc,v 1.12 2002/10/13 20:35:29 robertc Exp $
+ * $Id: store_repl_lru.cc,v 1.13 2003/01/23 00:38:29 robertc Exp $
  *
  * DEBUG: section ?     LRU Removal policy
  * AUTHOR: Henrik Nordstrom
@@ -35,6 +35,7 @@
 
 #include "squid.h"
 #include "Store.h"
+#include "MemObject.h"
 
 REMOVALPOLICYCREATE createRemovalPolicy_lru;
 
diff --git a/src/send-announce.cc b/src/send-announce.cc
index 2958c066e2..964f5aa747 100644
--- a/src/send-announce.cc
+++ b/src/send-announce.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: send-announce.cc,v 1.63 2002/04/04 21:33:27 hno Exp $
+ * $Id: send-announce.cc,v 1.64 2003/01/23 00:37:25 robertc Exp $
  *
  * DEBUG: section 27    Cache Announcer
  * AUTHOR: Duane Wessels
@@ -34,6 +34,7 @@
  */
 
 #include "squid.h"
+#include "fde.h"
 
 static IPH send_announce;
 
diff --git a/src/snmp_agent.cc b/src/snmp_agent.cc
index b49e872e7a..ed7713a380 100644
--- a/src/snmp_agent.cc
+++ b/src/snmp_agent.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: snmp_agent.cc,v 1.85 2003/01/17 05:49:34 robertc Exp $
+ * $Id: snmp_agent.cc,v 1.86 2003/01/23 00:37:25 robertc Exp $
  *
  * DEBUG: section 49     SNMP Interface
  * AUTHOR: Kostas Anagnostakis
@@ -37,6 +37,7 @@
 #include "squid.h"
 #include "cache_snmp.h"
 #include "Store.h"
+#include "mem_node.h"
 
 /************************************************************************
 
@@ -54,7 +55,7 @@ snmp_sysFn(variable_list * Var, snint * ErrP)
     switch (Var->name[LEN_SQ_SYS]) {
     case SYSVMSIZ:
 	Answer = snmp_var_new_integer(Var->name, Var->name_length,
-	    store_mem_size >> 10,
+	    mem_node::store_mem_size >> 10,
 	    ASN_INTEGER);
 	break;
     case SYSSTOR:
diff --git a/src/snmp_core.cc b/src/snmp_core.cc
index a2d4e4f936..eadc8e04a9 100644
--- a/src/snmp_core.cc
+++ b/src/snmp_core.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: snmp_core.cc,v 1.59 2003/01/17 08:21:51 robertc Exp $
+ * $Id: snmp_core.cc,v 1.60 2003/01/23 00:37:25 robertc Exp $
  *
  * DEBUG: section 49    SNMP support
  * AUTHOR: Glenn Chisholm
diff --git a/src/squid.h b/src/squid.h
index 8a8095e5ed..75db3a3d1e 100644
--- a/src/squid.h
+++ b/src/squid.h
@@ -1,6 +1,6 @@
 
 /*
- * $Id: squid.h,v 1.228 2002/12/27 10:26:33 robertc Exp $
+ * $Id: squid.h,v 1.229 2003/01/23 00:37:25 robertc Exp $
  *
  * AUTHOR: Duane Wessels
  *
diff --git a/src/ssl.cc b/src/ssl.cc
index dc7e8b55cf..da6da1c060 100644
--- a/src/ssl.cc
+++ b/src/ssl.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: ssl.cc,v 1.131 2002/12/05 15:02:24 hno Exp $
+ * $Id: ssl.cc,v 1.132 2003/01/23 00:37:25 robertc Exp $
  *
  * DEBUG: section 26    Secure Sockets Layer Proxy
  * AUTHOR: Duane Wessels
@@ -34,7 +34,10 @@
  */
 
 #include "squid.h"
+#include "HttpRequest.h"
+#include "fde.h"
 #include "comm.h"
+#include "client_side_request.h"
 
 typedef struct {
     char *url;
diff --git a/src/ssl_support.cc b/src/ssl_support.cc
index e5af6a5a8a..8395a8a727 100644
--- a/src/ssl_support.cc
+++ b/src/ssl_support.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: ssl_support.cc,v 1.9 2002/12/07 01:55:22 hno Exp $
+ * $Id: ssl_support.cc,v 1.10 2003/01/23 00:37:25 robertc Exp $
  *
  * AUTHOR: Benno Rice
  * DEBUG: section 83    SSL accelerator support
@@ -34,6 +34,7 @@
  */
 
 #include "squid.h"
+#include "fde.h"
 
 extern int commUnsetNonBlocking(int fd);
 extern int commSetNonBlocking(int fd);
diff --git a/src/ssl_support.h b/src/ssl_support.h
index 7a9b2b5c96..2ab0e7b328 100644
--- a/src/ssl_support.h
+++ b/src/ssl_support.h
@@ -1,6 +1,6 @@
 
 /*
- * $Id: ssl_support.h,v 1.5 2002/12/06 23:19:16 hno Exp $
+ * $Id: ssl_support.h,v 1.6 2003/01/23 00:37:25 robertc Exp $
  *
  * AUTHOR: Benno Rice
  *
diff --git a/src/stat.cc b/src/stat.cc
index 797110cd00..0aea4a3ed7 100644
--- a/src/stat.cc
+++ b/src/stat.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: stat.cc,v 1.365 2003/01/18 02:10:40 hno Exp $
+ * $Id: stat.cc,v 1.366 2003/01/23 00:37:25 robertc Exp $
  *
  * DEBUG: section 18    Cache Manager Statistics
  * AUTHOR: Harvest Derived
@@ -36,6 +36,16 @@
 #include "squid.h"
 #include "StoreClient.h"
 #include "Store.h"
+#include "MemObject.h"
+#include "fde.h"
+#include "mem_node.h"
+#include "client_side_request.h"
+
+/* these are included because they expose stats calls */
+/* TODO: provide a self registration mechanism for those classes
+ * to use during static construction
+ */
+#include "comm.h"
 
 #define DEBUG_OPENFD 1
 
@@ -69,7 +79,6 @@ static OBJH statOpenfdObj;
 #endif
 static EVH statObjects;
 static OBJH info_get;
-static OBJH statFiledescriptors;
 static OBJH statCountersDump;
 static OBJH statPeerSelect;
 static OBJH statDigestBlob;
@@ -258,12 +267,7 @@ static void
 statStoreEntry(StoreEntry * s, StoreEntry * e)
 {
     MemObject *mem = e->mem_obj;
-    int i;
-    dlink_node *node;
     storeAppendPrintf(s, "KEY %s\n", e->getMD5Text());
-    if (mem)
-	storeAppendPrintf(s, "\t%s %s\n",
-	    RequestMethodStr[mem->method], mem->log_url);
     storeAppendPrintf(s, "\t%s\n", describeStatuses(e));
     storeAppendPrintf(s, "\t%s\n", storeEntryFlags(e));
     storeAppendPrintf(s, "\t%s\n", describeTimestamps(e));
@@ -273,17 +277,8 @@ statStoreEntry(StoreEntry * s, StoreEntry * e)
 	(int) e->refcount);
     storeAppendPrintf(s, "\tSwap Dir %d, File %#08X\n",
 	e->swap_dirn, e->swap_filen);
-    if (mem != NULL) {
-	storeAppendPrintf(s, "\tinmem_lo: %d\n", (int) mem->inmem_lo);
-	storeAppendPrintf(s, "\tinmem_hi: %d\n", (int) mem->inmem_hi);
-	storeAppendPrintf(s, "\tswapout: %d bytes queued\n",
-	    (int) mem->swapout.queue_offset);
-	if (mem->swapout.sio.getRaw())
-	    storeAppendPrintf(s, "\tswapout: %d bytes written\n",
-		(int) mem->swapout.sio->offset());
-	for (i = 0, node = mem->clients.head; node; node = node->next, i++)
-	    storeClientDumpStats((store_client *)node->data, s, i);
-    }
+    if (mem != NULL)
+	mem->stat (s);
     storeAppendPrintf(s, "\n");
 }
 
@@ -296,7 +291,7 @@ statObjects(void *data)
     hash_link *link_ptr = NULL;
     hash_link *link_next = NULL;
     if (state->bucket >= store_hash_buckets) {
-	storeComplete(state->sentry);
+	state->sentry->complete();
 	storeUnlockObject(state->sentry);
 	cbdataFree(state);
 	return;
@@ -304,7 +299,7 @@ statObjects(void *data)
 	storeUnlockObject(state->sentry);
 	cbdataFree(state);
 	return;
-    } else if (fwdCheckDeferRead(-1, state->sentry)) {
+    } else if (StoreEntry::CheckDeferRead(-1, state->sentry)) {
 	eventAdd("statObjects", statObjects, state, 0.1, 1);
 	return;
     }
@@ -381,48 +376,6 @@ info_get_mallstat(int size, int number, int oldnum, void *data)
 }
 #endif
 
-static const char *
-fdRemoteAddr(const fde * f)
-{
-    LOCAL_ARRAY(char, buf, 32);
-    if (f->type != FD_SOCKET)
-	return null_string;
-    snprintf(buf, 32, "%s.%d", f->ipaddr, (int) f->remote_port);
-    return buf;
-}
-
-static void
-statFiledescriptors(StoreEntry * sentry)
-{
-    int i;
-    fde *f;
-    storeAppendPrintf(sentry, "Active file descriptors:\n");
-    storeAppendPrintf(sentry, "%-4s %-6s %-4s %-7s* %-7s* %-21s %s\n",
-	"File",
-	"Type",
-	"Tout",
-	"Nread",
-	"Nwrite",
-	"Remote Address",
-	"Description");
-    storeAppendPrintf(sentry, "---- ------ ---- -------- -------- --------------------- ------------------------------\n");
-    for (i = 0; i < Squid_MaxFD; i++) {
-	f = &fd_table[i];
-	if (!f->flags.open)
-	    continue;
-	storeAppendPrintf(sentry, "%4d %-6.6s %4d %7d%c %7d%c %-21s %s\n",
-	    i,
-	    fdTypeStr[f->type],
-	    f->timeout_handler ? (int) (f->timeout - squid_curtime) / 60 : 0,
-	    f->bytes_read,
-	    f->read_handler ? '*' : ' ',
-	    f->bytes_written,
-	    f->write_handler ? '*' : ' ',
-	    fdRemoteAddr(f),
-	    f->desc);
-    }
-}
-
 static void
 info_get(StoreEntry * sentry)
 {
@@ -484,7 +437,7 @@ info_get(StoreEntry * sentry)
     storeAppendPrintf(sentry, "\tStorage Swap size:\t%lu KB\n",
 	store_swap_size);
     storeAppendPrintf(sentry, "\tStorage Mem size:\t%d KB\n",
-	(int) (store_mem_size >> 10));
+	(int) (mem_node::store_mem_size >> 10));
     storeAppendPrintf(sentry, "\tMean Object Size:\t%0.2f KB\n",
 	n_disk_objects ? (double) store_swap_size / n_disk_objects : 0.0);
     storeAppendPrintf(sentry, "\tRequests given to unlinkd:\t%d\n",
@@ -619,9 +572,9 @@ info_get(StoreEntry * sentry)
 
     storeAppendPrintf(sentry, "Internal Data Structures:\n");
     storeAppendPrintf(sentry, "\t%6lu StoreEntries\n",
-	(unsigned long int)storeEntryInUse());
-    storeAppendPrintf(sentry, "\t%6d StoreEntries with MemObjects\n",
-	memInUse(MEM_MEMOBJECT));
+	(unsigned long)StoreEntry::inUseCount());
+    storeAppendPrintf(sentry, "\t%6lu StoreEntries with MemObjects\n",
+	(unsigned long)MemObject::inUseCount());
     storeAppendPrintf(sentry, "\t%6d Hot Object Cache Items\n",
 	hot_obj_count);
     storeAppendPrintf(sentry, "\t%6d on-disk objects\n",
@@ -849,7 +802,7 @@ statInit(void)
 	info_get, 0, 1);
     cachemgrRegister("filedescriptors",
 	"Process Filedescriptor Allocation",
-	statFiledescriptors, 0, 1);
+	fde::DumpStats, 0, 1);
     cachemgrRegister("objects",
 	"All Cache Objects",
 	stat_objects_get, 0, 0);
diff --git a/src/stmem.cc b/src/stmem.cc
index 7e1f839c42..e8d85a2fa6 100644
--- a/src/stmem.cc
+++ b/src/stmem.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: stmem.cc,v 1.73 2002/10/14 08:16:59 robertc Exp $
+ * $Id: stmem.cc,v 1.74 2003/01/23 00:37:26 robertc Exp $
  *
  * DEBUG: section 19    Store Memory Primitives
  * AUTHOR: Harvest Derived
@@ -34,135 +34,316 @@
  */
 
 #include "squid.h"
+#include "stmem.h"
+#include "mem_node.h"
+#include "MemObject.h"
+
+int
+mem_hdr::lowestOffset () const
+{
+    if (head)
+	return head->nodeBuffer.offset;
+    return 0;
+}
+
+off_t
+mem_hdr::endOffset () const
+{
+    off_t result = 0;
+    if (tail)
+	result = tail->nodeBuffer.offset + tail->nodeBuffer.length;
+    assert (result == inmem_hi);
+    return result;
+}
 
 void
-stmemFree(mem_hdr * mem)
-{
-    mem_node *p;
-    while ((p = mem->head)) {
-	mem->head = p->next;
-	store_mem_size -= SM_PAGE_SIZE;
-	if (p) {
-	    memFree(p, MEM_MEM_NODE);
-	    p = NULL;
-	}
-    }
-    mem->head = mem->tail = NULL;
-    mem->origin_offset = 0;
+mem_hdr::freeContent()
+{
+    while (head)
+	unlinkHead();
+    head = tail = NULL;
+    inmem_hi = 0;
+}
+
+void
+mem_hdr::unlinkHead()
+{
+    assert (head);
+    mem_node *aNode = head;
+    head = aNode->next;
+    aNode->next = NULL;
+    delete aNode;
 }
 
 int
-stmemFreeDataUpto(mem_hdr * mem, int target_offset)
-{
-    int current_offset = mem->origin_offset;
-    mem_node *lastp;
-    mem_node *p = mem->head;
-    while (p && ((current_offset + p->len) <= target_offset)) {
-	if (p == mem->tail) {
-	    /* keep the last one to avoid change to other part of code */
-	    mem->head = mem->tail;
-	    mem->origin_offset = current_offset;
-	    return current_offset;
+mem_hdr::freeDataUpto(int target_offset)
+{
+    /* keep the last one to avoid change to other part of code */
+    while (head && head != tail &&
+	((lowestOffset() + head->nodeBuffer.length) <= (size_t)target_offset))
+	unlinkHead ();
+    assert (lowestOffset () <= target_offset);
+    return lowestOffset ();
+}
+
+int 
+mem_hdr::appendToNode(mem_node *aNode, const char *data, int maxLength)
+{
+    size_t result = writeAvailable (aNode, aNode->nodeBuffer.offset + aNode->nodeBuffer.length ,maxLength, data);
+    return result;
+}
+
+size_t
+mem_hdr::writeAvailable(mem_node *aNode, size_t location, size_t amount, char const *source)
+{
+    /* if we attempt to overwrite existing data or leave a gap within a node */
+    assert (location == aNode->nodeBuffer.offset + aNode->nodeBuffer.length);
+    /* And we are not at the end of the node */
+    assert (aNode->canAccept (location));
+    
+    /* these two can go I think */
+    size_t copyOffset = location - aNode->nodeBuffer.offset;
+    assert (copyOffset == aNode->nodeBuffer.length);
+    size_t copyLen = XMIN (amount, aNode->space());
+
+    xmemcpy(aNode->nodeBuffer.data + aNode->nodeBuffer.length, source, copyLen);
+
+    if (inmem_hi <= (off_t) location)
+	inmem_hi = location + copyLen;
+    
+    /* Adjust the ptr and len according to what was deposited in the page */
+    aNode->nodeBuffer.length += copyLen;
+    mem_node::store_mem_size += copyLen;
+    return copyLen;
+}
+
+void
+mem_hdr::appendNode (mem_node *aNode)
+{
+    assert (aNode->next == NULL);
+    if (!head) {
+	/* The chain is empty */
+	head = tail = aNode;
+    } else {
+	mem_node *pointer = getHighestBlockBeforeLocation(aNode->nodeBuffer.offset);
+	if (!pointer) {
+	    /* prepend to list */
+	    aNode->next = head;
+	    head = aNode->next;
 	} else {
-	    lastp = p;
-	    p = p->next;
-	    current_offset += lastp->len;
-	    store_mem_size -= SM_PAGE_SIZE;
-	    if (lastp) {
-		memFree(lastp, MEM_MEM_NODE);
-		lastp = NULL;
-	    }
+	    /* Append it to existing chain */
+	    aNode->next = pointer->next;
+	    pointer->next = aNode;
+	    if (tail == pointer)
+		tail = aNode;
 	}
     }
-    mem->head = p;
-    mem->origin_offset = current_offset;
-    if (current_offset < target_offset) {
-	/* there are still some data left. */
-	return current_offset;
-    }
-    assert(current_offset == target_offset);
-    return current_offset;
 }
 
-/* Append incoming data. */
 void
-stmemAppend(mem_hdr * mem, const char *data, int len)
-{
-    int avail_len;
-    int len_to_copy;
-    debug(19, 6) ("memAppend: len %d\n", len);
-    /* Does the last block still contain empty space? 
-     * If so, fill out the block before dropping into the
-     * allocation loop */
-    if (mem->head && mem->tail && (mem->tail->len < SM_PAGE_SIZE)) {
-	avail_len = SM_PAGE_SIZE - (mem->tail->len);
-	len_to_copy = XMIN(avail_len, len);
-	xmemcpy((mem->tail->data + mem->tail->len), data, len_to_copy);
-	/* Adjust the ptr and len according to what was deposited in the page */
-	data += len_to_copy;
-	len -= len_to_copy;
-	mem->tail->len += len_to_copy;
+mem_hdr::makeAppendSpace()
+{
+    if (!head) {
+	appendNode (new mem_node(0));
+	return;
     }
+    if (!tail->space())
+	appendNode (new mem_node (endOffset()));
+    assert (tail->space());
+}
+
+void
+mem_hdr::internalAppend(const char *data, int len)
+{
+    debug(19, 6) ("memInternalAppend: len %d\n", len);
     while (len > 0) {
-	len_to_copy = XMIN(len, SM_PAGE_SIZE);
-	mem_node *p = static_cast(memAllocate(MEM_MEM_NODE));
-	p->next = NULL;
-	p->len = len_to_copy;
-	store_mem_size += SM_PAGE_SIZE;
-	xmemcpy(p->data, data, len_to_copy);
-	if (!mem->head) {
-	    /* The chain is empty */
-	    mem->head = mem->tail = p;
-	} else {
-	    /* Append it to existing chain */
-	    mem->tail->next = p;
-	    mem->tail = p;
-	}
-	len -= len_to_copy;
-	data += len_to_copy;
+	makeAppendSpace();
+
+	int copied = appendToNode (tail, data, len);
+	assert (copied);
+	
+	len -= copied;
+	data += copied;
     }
 }
 
+mem_node *
+mem_hdr::getHighestBlockBeforeLocation (size_t location) const
+{
+    mem_node *result = head;
+    mem_node *prevResult = NULL;
+    while (result && result->end() <= location) {
+	if (!result->next)
+	    return result;
+	prevResult = result;
+	result = result->next;
+	if (result->contains(location))
+	    return result;
+    }
+    /* the if here is so we catch 0 offset requests */
+    if (result && result->contains(location))
+	return result;
+    else 
+	return prevResult;
+}
+
+/* returns a mem_node that contains location..
+ * If no node contains the start, it returns NULL.
+ */
+mem_node *
+mem_hdr::getBlockContainingLocation (size_t location) const
+{
+    mem_node *result = getHighestBlockBeforeLocation(location);
+    if (!result || !result->contains(location))
+	return NULL;
+    return result;
+}
+
+size_t
+mem_hdr::copyAvailable(mem_node *aNode, size_t location, size_t amount, char *target) const
+{
+    if (aNode->nodeBuffer.offset > (off_t) location)
+	return 0;
+    assert (aNode->nodeBuffer.offset <= (off_t) location);
+    assert (aNode->end() > location);
+    size_t copyOffset = location - aNode->nodeBuffer.offset;
+    size_t copyLen = XMIN (amount, aNode->nodeBuffer.length - copyOffset);
+
+    xmemcpy(target, aNode->nodeBuffer.data + copyOffset, copyLen);
+    return copyLen;
+}
+
+/* FIXME: how do we deal with sparse results - 
+ * where we have (say)
+ * 0-500 and 1000-1500, but are asked for 
+ * 0-2000
+ * Partial answer:
+ * we supply 0-500 and stop.
+ */
 ssize_t
-stmemCopy(const mem_hdr * mem, off_t offset, char *buf, size_t size)
+mem_hdr::copy(off_t offset, char *buf, size_t size) const
 {
-    mem_node *p = mem->head;
-    off_t t_off = mem->origin_offset;
-    size_t bytes_to_go = size;
-    debug(19, 6) ("memCopy: offset %ld: size %u\n", (long int) offset, (int)size);
-    if (p == NULL)
+
+    debug(19, 6) ("memCopy: offset %ld: size %u\n", (long int) offset, size);
+    if (head == NULL)
 	return 0;
-    /* RC: the next assert is useless */
+    /* RC: the next assert is nearly useless */
     assert(size > 0);
+
     /* Seek our way into store */
-    while ((t_off + p->len) < offset) {
-	t_off += p->len;
-	if (!p->next) {
-	    debug(19, 1) ("memCopy: p->next == NULL\n");
-	    return 0;
-	}
-	assert(p->next);
-	p = p->next;
+    mem_node *p = getBlockContainingLocation((size_t)offset);
+    if (!p) {
+	debug(19, 1) ("memCopy: could not find offset %u in memory.\n", (size_t) offset);
+	/* we shouldn't ever ask for absent offsets */
+	assert (0);
+	return 0;
     }
+    
+    size_t bytes_to_go = size;
+    char *ptr_to_buf = buf;
+    off_t location = offset;
+    
     /* Start copying begining with this block until
      * we're satiated */
-    int bytes_into_this_packet = offset - t_off;
-    assert (p->len >= bytes_into_this_packet);
-    int bytes_from_this_packet = XMIN(bytes_to_go, (size_t)(p->len - bytes_into_this_packet));
-    xmemcpy(buf, p->data + bytes_into_this_packet, bytes_from_this_packet);
-    bytes_to_go -= bytes_from_this_packet;
-    char *ptr_to_buf = buf + bytes_from_this_packet;
-    p = p->next;
+
     while (p && bytes_to_go > 0) {
-	if ((int)bytes_to_go > p->len) {
-	    xmemcpy(ptr_to_buf, p->data, p->len);
-	    ptr_to_buf += p->len;
-	    bytes_to_go -= p->len;
-	} else {
-	    xmemcpy(ptr_to_buf, p->data, bytes_to_go);
-	    bytes_to_go = 0;
-	}
+	size_t bytes_to_copy = copyAvailable (p, 
+	    location, bytes_to_go, ptr_to_buf);
+
+	/* hit a sparse patch */
+	if (bytes_to_copy == 0)
+	    return size - bytes_to_go;
+	
+	location += bytes_to_copy;
+	ptr_to_buf += bytes_to_copy;
+	bytes_to_go -= bytes_to_copy;
 	p = p->next;
     }
     return size - bytes_to_go;
 }
+
+bool
+mem_hdr::hasContigousContentRange(size_t start, size_t end) const
+{
+    size_t currentStart = start;
+    while (mem_node *curr = getBlockContainingLocation(currentStart)) {
+	currentStart = curr->end();
+	if (currentStart >= end)
+	    return true;
+    }
+    return false;
+}
+
+bool
+mem_hdr::unionNotEmpty(StoreIOBuffer const &candidate)
+{
+    mem_node *low = getHighestBlockBeforeLocation(candidate.offset);
+    assert (candidate.offset >= 0);
+    if (low && low->end() > (size_t) candidate.offset)
+	return true;
+    mem_node *high = getHighestBlockBeforeLocation(candidate.offset + candidate.length);
+    /* trivial case - we are writing completely beyond the end of the current object */
+    if (low == high)
+	return false;
+    if (high && high->start() < candidate.offset + candidate.length &&
+	!high->end() > candidate.offset)
+	return true;
+    return false;
+}
+
+mem_node *
+mem_hdr::nodeToRecieve(off_t offset)
+{
+    /* case 1: Nothing in memory */
+    if (!head) {
+	appendNode (new mem_node(offset));
+	return head;
+    }
+
+    /* case 2: location fits within an extant node */
+    mem_node *candidate = getHighestBlockBeforeLocation(offset);
+    /* case 2: no nodes before it */
+    if (!candidate) {
+	candidate = new mem_node(offset);
+	appendNode (candidate);
+	assert (candidate->canAccept(offset));
+    }
+
+    if (candidate->canAccept(offset))
+	return candidate;
+
+    /* candidate can't accept, so we need a new node */
+    candidate = new mem_node(offset);
+    appendNode (candidate);
+    /* simpler to write than a indented if */
+    return candidate;
+}
+
+
+bool
+mem_hdr::write (StoreIOBuffer const &writeBuffer)
+{
+//    mem_node *tempNode;
+    debug(19, 6) ("mem_hdr::write: offset %lu len %d, object end %lu\n", writeBuffer.offset, writeBuffer.length, endOffset());
+
+    if (unionNotEmpty(writeBuffer)) {
+	fatal("Attempt to overwrite already in-memory data\n");
+	return false;
+    }
+
+    assert (writeBuffer.offset >= 0);
+
+    mem_node *target;
+    off_t currentOffset = writeBuffer.offset;
+    char *currentSource = writeBuffer.data;
+    size_t len = writeBuffer.length;
+    while (len && (target = nodeToRecieve(currentOffset))) {
+	size_t wrote = writeAvailable(target, currentOffset, len, currentSource);
+	assert (wrote);
+	len -= wrote;
+	currentOffset += wrote;
+	currentSource += wrote;
+    }
+
+    return true;
+}
diff --git a/src/stmem.h b/src/stmem.h
new file mode 100644
index 0000000000..5975f90564
--- /dev/null
+++ b/src/stmem.h
@@ -0,0 +1,68 @@
+
+/*
+ * $Id: stmem.h,v 1.1 2003/01/23 00:37:26 robertc Exp $
+ *
+ *
+ * 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.
+ *
+ */
+
+#ifndef SQUID_STMEM_H
+#define SQUID_STMEM_H
+
+class mem_node;
+class StoreIOBuffer;
+class mem_hdr {
+public:
+    void freeContent();
+    int lowestOffset () const;
+    off_t endOffset () const;
+    int freeDataUpto (int);
+    ssize_t copy (off_t, char *, size_t) const;
+    bool hasContigousContentRange(size_t start, size_t end) const;
+    /* success or fail */
+    bool write (StoreIOBuffer const &);
+
+    /* Only for use of MemObject */
+    void internalAppend(const char *data, int len);
+    mem_node *head;
+    mem_node *tail;
+private:
+    void unlinkHead();
+    void makeAppendSpace();
+    int appendToNode(mem_node *aNode, const char *data, int maxLength);
+    void appendNode (mem_node *aNode);
+    mem_node *getBlockContainingLocation (size_t location) const;
+    size_t copyAvailable(mem_node *aNode, size_t location, size_t amount, char *target) const;
+    bool unionNotEmpty (StoreIOBuffer const &);
+    mem_node *getHighestBlockBeforeLocation (size_t location) const;
+    mem_node *nodeToRecieve(off_t offset);
+    size_t writeAvailable(mem_node *aNode, size_t location, size_t amount, char const *source);
+    off_t inmem_hi;
+};
+
+#endif /* SQUID_STMEM_H */
diff --git a/src/store.cc b/src/store.cc
index eac0caf747..8f94f14af6 100644
--- a/src/store.cc
+++ b/src/store.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: store.cc,v 1.553 2003/01/17 05:49:34 robertc Exp $
+ * $Id: store.cc,v 1.554 2003/01/23 00:37:26 robertc Exp $
  *
  * DEBUG: section 20    Storage Manager
  * AUTHOR: Harvest Derived
@@ -36,8 +36,16 @@
 #include "squid.h"
 #include "Store.h"
 #include "StoreClient.h"
+#include "stmem.h"
+#include "HttpReply.h"
+#include "HttpRequest.h"
+#include "MemObject.h"
+#include "mem_node.h"
+#include "StoreMeta.h"
 #include "SwapDir.h"
 
+static STMCB storeWriteComplete;
+
 #define REBUILD_TIMESTAMP_DELTA_MAX 2
 
 #define STORE_IN_MEM_BUCKETS		(229)
@@ -79,12 +87,10 @@ extern OBJH storeIOStats;
 /*
  * local function prototypes
  */
-static int storeEntryValidLength(const StoreEntry *);
 static void storeGetMemSpace(int);
 static void storeHashDelete(StoreEntry *);
-static MemObject *new_MemObject(const char *, const char *);
 static void destroy_MemObject(StoreEntry *);
-static FREE destroy_StoreEntry;
+static FREE destroyStoreEntry;
 static void storePurgeMem(StoreEntry *);
 static void storeEntryReferenced(StoreEntry *);
 static void storeEntryDereferenced(StoreEntry *);
@@ -132,43 +138,78 @@ StoreEntry::getMD5Text() const
     return storeKeyText((const cache_key *)key);
 }
 
-size_t
-storeEntryInUse ()
+int
+StoreEntry::CheckDeferRead(int fd, void *data)
 {
-    return StoreEntry::inUseCount();
+    assert (data);
+    return ((StoreEntry *)data)->checkDeferRead(fd);
 }
 
-
+int
+StoreEntry::checkDeferRead(int fd) const
+{
+    int rc = 0;
+    if (mem_obj == NULL)
+	return 0;
 #if URL_CHECKSUM_DEBUG
-unsigned int
-url_checksum(const char *url)
-{
-    unsigned int ck;
-    MD5_CTX M;
-    static unsigned char digest[16];
-    MD5Init(&M);
-    MD5Update(&M, (unsigned char *) url, strlen(url));
-    MD5Final(digest, &M);
-    xmemcpy(&ck, digest, sizeof(ck));
-    return ck;
-}
+    mem_obj->checkUrlChecksum();
+#endif
+#if DELAY_POOLS
+    if (fd < 0)
+	(void) 0;
+    else if (! delayIsNoDelay(fd)) {
+	int i = delayMostBytesWanted(mem_obj, INT_MAX);
+	if (0 == i)
+	    return 1;
+	/* was: rc = -(rc != INT_MAX); */
+	else if (INT_MAX == i)
+	    rc = 0;
+	else
+	    rc = -1;
+    }
 #endif
+    if (EBIT_TEST(flags, ENTRY_FWD_HDR_WAIT))
+	return rc;
+    if (mem_obj->readAheadPolicyCanRead())
+	return rc;
+    return 1;
+}
 
-static MemObject *
-new_MemObject(const char *url, const char *log_url)
+store_client_t
+StoreEntry::storeClientType() const
 {
-    MemObject *mem = static_cast(memAllocate(MEM_MEMOBJECT));
-    mem->reply = httpReplyCreate();
-    mem->url = xstrdup(url);
-#if URL_CHECKSUM_DEBUG
-    mem->chksum = url_checksum(mem->url);
-#endif
-    mem->log_url = xstrdup(log_url);
-    mem->object_sz = -1;
-    mem->fd = -1;
-    /* XXX account log_url */
-    debug(20, 3) ("new_MemObject: returning %p\n", mem);
-    return mem;
+    if (mem_obj->inmem_lo)
+	return STORE_DISK_CLIENT;
+    if (EBIT_TEST(flags, ENTRY_ABORTED)) {
+	/* I don't think we should be adding clients to aborted entries */
+	debug(20, 1) ("storeClientType: adding to ENTRY_ABORTED entry\n");
+	return STORE_MEM_CLIENT;
+    }
+    if (store_status == STORE_OK) {
+	if (mem_obj->inmem_lo == 0 && !isEmpty())
+	    return STORE_MEM_CLIENT;
+	else
+	    return STORE_DISK_CLIENT;
+    }
+    /* here and past, entry is STORE_PENDING */
+    /*
+     * If this is the first client, let it be the mem client
+     */
+    if (mem_obj->nclients == 1)
+	return STORE_MEM_CLIENT;
+    /*
+     * If there is no disk file to open yet, we must make this a
+     * mem client.  If we can't open the swapin file before writing
+     * to the client, there is no guarantee that we will be able
+     * to open it later when we really need it.
+     */
+    if (swap_status == SWAPOUT_NONE)
+	return STORE_MEM_CLIENT;
+    /*
+     * otherwise, make subsequent clients read from disk so they
+     * can not delay the first, and vice-versa.
+     */
+    return STORE_DISK_CLIENT;
 }
 
 StoreEntry *
@@ -177,8 +218,8 @@ new_StoreEntry(int mem_obj_flag, const char *url, const char *log_url)
     StoreEntry *e = NULL;
     e = new StoreEntry;
     if (mem_obj_flag)
-	e->mem_obj = new_MemObject(url, log_url);
-    debug(20, 3) ("new_StoreEntry: returning %p\n", e);
+	e->mem_obj = new MemObject(url, log_url);
+    debug(20, 3) ("newStoreEntry: returning %p\n", e);
     e->expires = e->lastmod = e->lastref = e->timestamp = -1;
     e->swap_filen = -1;
     e->swap_dirn = -1;
@@ -188,42 +229,21 @@ new_StoreEntry(int mem_obj_flag, const char *url, const char *log_url)
 static void
 destroy_MemObject(StoreEntry * e)
 {
+    storeSetMemStatus(e, NOT_IN_MEMORY);
     MemObject *mem = e->mem_obj;
-    const Ctx ctx = ctx_enter(mem->url);
-    debug(20, 3) ("destroy_MemObject: destroying %p\n", mem);
-#if URL_CHECKSUM_DEBUG
-    assert(mem->chksum == url_checksum(mem->url));
-#endif
     e->mem_obj = NULL;
-    if (!shutting_down)
-	assert(mem->swapout.sio == NULL);
-    stmemFree(&mem->data_hdr);
-    mem->inmem_hi = 0;
-    /*
-     * There is no way to abort FD-less clients, so they might
-     * still have mem->clients set if mem->fd == -1
-     */
-    assert(mem->fd == -1 || mem->clients.head == NULL);
-    httpReplyDestroy(mem->reply);
-    requestUnlink(mem->request);
-    mem->request = NULL;
-    ctx_exit(ctx);		/* must exit before we free mem->url */
-    safe_free(mem->url);
-    safe_free(mem->log_url);	/* XXX account log_url */
-    safe_free(mem->vary_headers);
-    memFree(mem, MEM_MEMOBJECT);
+    delete mem;
 }
 
 static void
-destroy_StoreEntry(void *data)
+destroyStoreEntry(void *data)
 {
     StoreEntry *e = static_cast(data);
-    debug(20, 3) ("destroy_StoreEntry: destroying %p\n", e);
+    debug(20, 3) ("destroyStoreEntry: destroying %p\n", e);
     assert(e != NULL);
     if (e == NullStoreEntry::getInstance())
 	return;
-    if (e->mem_obj)
-	destroy_MemObject(e);
+    destroy_MemObject(e);
     storeHashDelete(e);
     assert(e->key == NULL);
     delete e;
@@ -252,7 +272,6 @@ storeHashDelete(StoreEntry * e)
 
 
 /* get rid of memory copy of the object */
-/* Only call this if storeCheckPurgeMem(e) returns 1 */
 static void
 storePurgeMem(StoreEntry * e)
 {
@@ -260,7 +279,6 @@ storePurgeMem(StoreEntry * e)
 	return;
     debug(20, 3) ("storePurgeMem: Freeing memory-copy of %s\n",
 	e->getMD5Text());
-    storeSetMemStatus(e, NOT_IN_MEMORY);
     destroy_MemObject(e);
     if (e->swap_status != SWAPOUT_DONE)
 	storeRelease(e);
@@ -336,8 +354,7 @@ storeUnlockObject(StoreEntry * e)
     else if (storeKeepInMemory(e)) {
 	storeEntryDereferenced(e);
 	storeSetMemStatus(e, IN_MEMORY);
-	requestUnlink(e->mem_obj->request);
-	e->mem_obj->request = NULL;
+	e->mem_obj->unlinkRequest();
     } else {
 	storePurgeMem(e);
 	storeEntryDereferenced(e);
@@ -487,7 +504,7 @@ storeSetPublicKey(StoreEntry * e)
 	    }
 	    /* Make sure the request knows the variance status */
 	    if (!request->vary_headers) {
-		const char *vary = httpMakeVaryMark(request, mem->reply);
+		const char *vary = httpMakeVaryMark(request, mem->getReply());
 		if (vary)
 		    request->vary_headers = xstrdup(vary);
 	    }
@@ -498,24 +515,32 @@ storeSetPublicKey(StoreEntry * e)
 	    String vary;
 	    pe = storeCreateEntry(mem->url, mem->log_url, request->flags, request->method);
 	    httpBuildVersion(&version, 1, 0);
-	    httpReplySetHeaders(pe->mem_obj->reply, version, HTTP_OK, "Internal marker object", "x-squid-internal/vary", -1, -1, squid_curtime + 100000);
-	    vary = httpHeaderGetList(&mem->reply->header, HDR_VARY);
-	    if (strBuf(vary)) {
-		httpHeaderPutStr(&pe->mem_obj->reply->header, HDR_VARY, strBuf(vary));
-		stringClean(&vary);
+	    /* We are allowed to do this typecast */
+	    httpReplySetHeaders((HttpReply *)pe->getReply(), version, HTTP_OK, "Internal marker object", "x-squid-internal/vary", -1, -1, squid_curtime + 100000);
+	    vary = httpHeaderGetList(&mem->getReply()->header, HDR_VARY);
+	    if (vary.size()) {
+		/* Again, we own this structure layout */
+		httpHeaderPutStr((HttpHeader *)&pe->getReply()->header, HDR_VARY, vary.buf());
+		vary.clean();
 	    }
 #if X_ACCELERATOR_VARY
-	    vary = httpHeaderGetList(&mem->reply->header, HDR_X_ACCELERATOR_VARY);
-	    if (strBuf(vary)) {
-		httpHeaderPutStr(&pe->mem_obj->reply->header, HDR_X_ACCELERATOR_VARY, strBuf(vary));
-		stringClean(&vary);
+	    vary = httpHeaderGetList(&mem->getReply()->header, HDR_X_ACCELERATOR_VARY);
+	    if (vary.buf()) {
+		httpHeaderPutStr(&pe->getReply()->header, HDR_X_ACCELERATOR_VARY, vary.buf());
+		vary.clean();
 	    }
 #endif
 	    storeSetPublicKey(pe);
-	    httpReplySwapOut(pe->mem_obj->reply, pe);
+           /* TODO: remove this when the metadata is separated */
+             {
+               Packer p;
+               packerToStoreInit(&p, pe);
+               httpReplyPackHeadersInto(pe->getReply(), &p);
+               packerClean(&p);
+             }
 	    storeBufferFlush(pe);
 	    storeTimestampsSet(pe);
-	    storeComplete(pe);
+	    pe->complete();
 	    storeUnlockObject(pe);
 	}
 	newkey = storeKeyPublicByRequest(mem->request);
@@ -581,6 +606,31 @@ storeExpireNow(StoreEntry * e)
     e->expires = squid_curtime;
 }
 
+void
+storeWriteComplete (void *data, StoreIOBuffer wroteBuffer)
+{
+    StoreEntry *e = (StoreEntry *)data;
+    if (EBIT_TEST(e->flags, DELAY_SENDING))
+       return;
+    InvokeHandlers(e);
+}
+
+void
+StoreEntry::write (StoreIOBuffer writeBuffer)
+{
+    assert(mem_obj != NULL);
+    assert(writeBuffer.length >= 0);
+    /* This assert will change when we teach the store to update */
+    assert(store_status == STORE_PENDING);
+    if (!writeBuffer.length)
+	return;
+    
+    debug(20, 5) ("storeWrite: writing %u bytes for '%s'\n",
+	writeBuffer.length, getMD5Text());
+    storeGetMemSpace(writeBuffer.length);
+    mem_obj->write (writeBuffer, storeWriteComplete, this);
+}
+
 /* Append incoming data from a primary server to an entry. */
 void
 storeAppend(StoreEntry * e, const char *buf, int len)
@@ -589,18 +639,12 @@ storeAppend(StoreEntry * e, const char *buf, int len)
     assert(mem != NULL);
     assert(len >= 0);
     assert(e->store_status == STORE_PENDING);
-    if (len) {
-	debug(20, 5) ("storeAppend: appending %d bytes for '%s'\n",
-	    len,
-	    e->getMD5Text());
-	storeGetMemSpace(len);
-	stmemAppend(&mem->data_hdr, buf, len);
-	mem->inmem_hi += len;
-    }
-    if (EBIT_TEST(e->flags, DELAY_SENDING))
-	return;
-    InvokeHandlers(e);
-    storeSwapOut(e);
+
+    StoreIOBuffer tempBuffer;
+    tempBuffer.data = (char *)buf;
+    tempBuffer.length = len;
+    tempBuffer.offset = mem->endOffset() - (e->getReply() ? e->getReply()->hdr_sz : 0);
+    e->write(tempBuffer);
 }
 
 void
@@ -667,15 +711,15 @@ storeTooManyDiskFilesOpen(void)
 static int
 storeCheckTooSmall(StoreEntry * e)
 {
-    MemObject *mem = e->mem_obj;
+    MemObject * const mem = e->mem_obj;
     if (EBIT_TEST(e->flags, ENTRY_SPECIAL))
 	return 0;
     if (STORE_OK == e->store_status)
 	if (mem->object_sz < 0 ||
 	    static_cast(mem->object_sz) < Config.Store.minObjectSize)
 	    return 1;
-    if (mem->reply->content_length > -1)
-	if (mem->reply->content_length < (int) Config.Store.minObjectSize)
+    if (e->getReply()->content_length > -1)
+	if (e->getReply()->content_length < (int) Config.Store.minObjectSize)
 	    return 1;
     return 0;
 }
@@ -702,12 +746,12 @@ storeCheckCachable(StoreEntry * e)
 	debug(20, 3) ("storeCheckCachable: NO: negative cached\n");
 	store_check_cachable_hist.no.negative_cached++;
 	return 0;		/* avoid release call below */
-    } else if ((e->mem_obj->reply->content_length > 0 &&
-		static_cast(e->mem_obj->reply->content_length) > Config.Store.maxObjectSize) ||
-	static_cast(e->mem_obj->inmem_hi) > Config.Store.maxObjectSize) {
+    } else if ((e->getReply()->content_length > 0 &&
+		static_cast(e->getReply()->content_length) > Config.Store.maxObjectSize) ||
+	static_cast(e->mem_obj->endOffset()) > Config.Store.maxObjectSize) {
 	debug(20, 2) ("storeCheckCachable: NO: too big\n");
 	store_check_cachable_hist.no.too_big++;
-    } else if (e->mem_obj->reply->content_length > (int) Config.Store.maxObjectSize) {
+    } else if (e->getReply()->content_length > (int) Config.Store.maxObjectSize) {
 	debug(20, 2) ("storeCheckCachable: NO: too big\n");
 	store_check_cachable_hist.no.too_big++;
     } else if (storeCheckTooSmall(e)) {
@@ -767,30 +811,29 @@ storeCheckCachableStats(StoreEntry * sentry)
 	store_check_cachable_hist.yes.Default);
 }
 
-/* Complete transfer into the local cache.  */
 void
-storeComplete(StoreEntry * e)
+StoreEntry::complete()
 {
-    debug(20, 3) ("storeComplete: '%s'\n", e->getMD5Text());
-    if (e->store_status != STORE_PENDING) {
+    debug(20, 3) ("storeComplete: '%s'\n", getMD5Text());
+    if (store_status != STORE_PENDING) {
 	/*
 	 * if we're not STORE_PENDING, then probably we got aborted
 	 * and there should be NO clients on this entry
 	 */
-	assert(EBIT_TEST(e->flags, ENTRY_ABORTED));
-	assert(e->mem_obj->nclients == 0);
+	assert(EBIT_TEST(flags, ENTRY_ABORTED));
+	assert(mem_obj->nclients == 0);
 	return;
     }
-    e->mem_obj->object_sz = e->mem_obj->inmem_hi;
-    e->store_status = STORE_OK;
-    assert(e->mem_status == NOT_IN_MEMORY);
-    if (!storeEntryValidLength(e)) {
-	EBIT_SET(e->flags, ENTRY_BAD_LENGTH);
-	storeReleaseRequest(e);
+    mem_obj->object_sz = mem_obj->endOffset();
+    store_status = STORE_OK;
+    assert(mem_status == NOT_IN_MEMORY);
+    if (!validLength()) {
+	EBIT_SET(flags, ENTRY_BAD_LENGTH);
+	storeReleaseRequest(this);
     }
 #if USE_CACHE_DIGESTS
-    if (e->mem_obj->request)
-	e->mem_obj->request->hier.store_complete_stop = current_time;
+    if (mem_obj->request)
+	mem_obj->request->hier.store_complete_stop = current_time;
 #endif
     /*
      * We used to call InvokeHandlers, then storeSwapOut.  However,
@@ -798,8 +841,7 @@ storeComplete(StoreEntry * e)
      * responses without content length would sometimes get released
      * in client_side, thinking that the response is incomplete.
      */
-    storeSwapOut(e);
-    InvokeHandlers(e);
+    InvokeHandlers(this);
 }
 
 /*
@@ -810,6 +852,7 @@ storeComplete(StoreEntry * e)
 void
 storeAbort(StoreEntry * e)
 {
+    statCounter.aborted_requests++;
     MemObject *mem = e->mem_obj;
     assert(e->store_status == STORE_PENDING);
     assert(mem != NULL);
@@ -824,7 +867,11 @@ storeAbort(StoreEntry * e)
      * We assign an object length here.  The only other place we assign
      * the object length is in storeComplete()
      */
-    mem->object_sz = mem->inmem_hi;
+    /* RBC: What do we need an object length for? we've just aborted the
+     * request, the request is private and negatively cached. Surely
+     * the object length is inappropriate to set.
+     */
+    mem->object_sz = mem->endOffset();
     /* Notify the server side */
     if (mem->abort.callback) {
 	eventAdd("mem->abort.callback",
@@ -835,6 +882,9 @@ storeAbort(StoreEntry * e)
 	mem->abort.callback = NULL;
 	mem->abort.data = NULL;
     }
+    /* XXX Should we reverse these two, so that there is no 
+     * unneeded disk swapping triggered? 
+     */
     /* Notify the client side */
     InvokeHandlers(e);
     /* Close any swapout file */
@@ -849,13 +899,13 @@ storeGetMemSpace(int size)
     StoreEntry *e = NULL;
     int released = 0;
     static time_t last_check = 0;
-    int pages_needed;
+    size_t pages_needed;
     RemovalPurgeWalker *walker;
     if (squid_curtime == last_check)
 	return;
     last_check = squid_curtime;
     pages_needed = (size / SM_PAGE_SIZE) + 1;
-    if (memInUse(MEM_MEM_NODE) + pages_needed < store_pages_max)
+    if (mem_node::InUseCount() + pages_needed < store_pages_max)
 	return;
     debug(20, 2) ("storeGetMemSpace: Starting, need %d pages\n", pages_needed);
     /* XXX what to set as max_scan here? */
@@ -863,7 +913,7 @@ storeGetMemSpace(int size)
     while ((e = walker->Next(walker))) {
 	storePurgeMem(e);
 	released++;
-	if (memInUse(MEM_MEM_NODE) + pages_needed < store_pages_max)
+	if (mem_node::InUseCount() + pages_needed < store_pages_max)
 	    break;
     }
     walker->Done(walker);
@@ -929,10 +979,8 @@ storeRelease(StoreEntry * e)
     }
     if (store_dirs_rebuilding && e->swap_filen > -1) {
 	storeSetPrivateKey(e);
-	if (e->mem_obj) {
-	    storeSetMemStatus(e, NOT_IN_MEMORY);
+	if (e->mem_obj)
 	    destroy_MemObject(e);
-	}
 	if (e->swap_filen > -1) {
 	    /*
 	     * Fake a call to storeLockObject().  When rebuilding is done,
@@ -944,7 +992,7 @@ storeRelease(StoreEntry * e)
 	    PROF_stop(storeRelease);
 	    return;
 	} else {
-	    destroy_StoreEntry(e);
+	    destroyStoreEntry(e);
 	}
     }
     storeLog(STORE_LOG_RELEASE, e);
@@ -961,7 +1009,7 @@ storeRelease(StoreEntry * e)
 #endif
     }
     storeSetMemStatus(e, NOT_IN_MEMORY);
-    destroy_StoreEntry(e);
+    destroyStoreEntry(e);
     PROF_stop(storeRelease);
 }
 
@@ -1007,46 +1055,46 @@ storeEntryLocked(const StoreEntry * e)
     return 0;
 }
 
-static int
-storeEntryValidLength(const StoreEntry * e)
+bool
+StoreEntry::validLength() const
 {
     int diff;
     const HttpReply *reply;
-    assert(e->mem_obj != NULL);
-    reply = e->mem_obj->reply;
-    debug(20, 3) ("storeEntryValidLength: Checking '%s'\n", e->getMD5Text());
+    assert(mem_obj != NULL);
+    reply = getReply();
+    debug(20, 3) ("storeEntryValidLength: Checking '%s'\n", getMD5Text());
     debug(20, 5) ("storeEntryValidLength:     object_len = %d\n",
-	objectLen(e));
+	objectLen(this));
     debug(20, 5) ("storeEntryValidLength:         hdr_sz = %d\n",
 	reply->hdr_sz);
     debug(20, 5) ("storeEntryValidLength: content_length = %d\n",
 	reply->content_length);
     if (reply->content_length < 0) {
 	debug(20, 5) ("storeEntryValidLength: Unspecified content length: %s\n",
-	    e->getMD5Text());
+	    getMD5Text());
 	return 1;
     }
     if (reply->hdr_sz == 0) {
 	debug(20, 5) ("storeEntryValidLength: Zero header size: %s\n",
-	    e->getMD5Text());
+	    getMD5Text());
 	return 1;
     }
-    if (e->mem_obj->method == METHOD_HEAD) {
+    if (mem_obj->method == METHOD_HEAD) {
 	debug(20, 5) ("storeEntryValidLength: HEAD request: %s\n",
-	    e->getMD5Text());
+	    getMD5Text());
 	return 1;
     }
     if (reply->sline.status == HTTP_NOT_MODIFIED)
 	return 1;
     if (reply->sline.status == HTTP_NO_CONTENT)
 	return 1;
-    diff = reply->hdr_sz + reply->content_length - objectLen(e);
+    diff = reply->hdr_sz + reply->content_length - objectLen(this);
     if (diff == 0)
 	return 1;
     debug(20, 3) ("storeEntryValidLength: %d bytes too %s; '%s'\n",
 	diff < 0 ? -diff : diff,
 	diff < 0 ? "big" : "small",
-	e->getMD5Text());
+	getMD5Text());
     return 0;
 }
 
@@ -1136,7 +1184,7 @@ storeNegativeCache(StoreEntry * e)
 void
 storeFreeMemory(void)
 {
-    hashFreeItems(store_table, destroy_StoreEntry);
+    hashFreeItems(store_table, destroyStoreEntry);
     hashFreeMemory(store_table);
     store_table = NULL;
 #if USE_CACHE_DIGESTS
@@ -1170,7 +1218,7 @@ storeEntryValidToSend(StoreEntry * e)
 void
 storeTimestampsSet(StoreEntry * entry)
 {
-    const HttpReply *reply = entry->mem_obj->reply;
+    const HttpReply *reply = entry->getReply();
     time_t served_date = reply->date;
     int age = httpHeaderGetInt(&reply->header, HDR_AGE);
     /*
@@ -1216,33 +1264,6 @@ storeUnregisterAbort(StoreEntry * e)
     mem->abort.callback = NULL;
 }
 
-void
-storeMemObjectDump(MemObject * mem)
-{
-    debug(20, 1) ("MemObject->data.head: %p\n",
-	mem->data_hdr.head);
-    debug(20, 1) ("MemObject->data.tail: %p\n",
-	mem->data_hdr.tail);
-    debug(20, 1) ("MemObject->data.origin_offset: %d\n",
-	mem->data_hdr.origin_offset);
-    debug(20, 1) ("MemObject->start_ping: %d.%06d\n",
-	(int) mem->start_ping.tv_sec,
-	(int) mem->start_ping.tv_usec);
-    debug(20, 1) ("MemObject->inmem_hi: %d\n",
-	(int) mem->inmem_hi);
-    debug(20, 1) ("MemObject->inmem_lo: %d\n",
-	(int) mem->inmem_lo);
-    debug(20, 1) ("MemObject->nclients: %d\n",
-	mem->nclients);
-    debug(20, 1) ("MemObject->reply: %p\n",
-	mem->reply);
-    debug(20, 1) ("MemObject->request: %p\n",
-	mem->request);
-    debug(20, 1) ("MemObject->log_url: %p %s\n",
-	mem->log_url,
-	checkNullString(mem->log_url));
-}
-
 void
 storeEntryDump(const StoreEntry * e, int l)
 {
@@ -1316,7 +1337,7 @@ storeCreateMemObject(StoreEntry * e, const char *url, const char *log_url)
 {
     if (e->mem_obj)
 	return;
-    e->mem_obj = new_MemObject(url, log_url);
+    e->mem_obj = new MemObject(url, log_url);
 }
 
 /* this just sets DELAY_SENDING */
@@ -1332,7 +1353,6 @@ storeBufferFlush(StoreEntry * e)
 {
     EBIT_CLR(e->flags, DELAY_SENDING);
     InvokeHandlers(e);
-    storeSwapOut(e);
 }
 
 ssize_t
@@ -1346,30 +1366,27 @@ int
 contentLen(const StoreEntry * e)
 {
     assert(e->mem_obj != NULL);
-    assert(e->mem_obj->reply != NULL);
-    return e->mem_obj->object_sz - e->mem_obj->reply->hdr_sz;
+    assert(e->getReply() != NULL);
+    return objectLen(e) - e->getReply()->hdr_sz;
+
 }
 
-HttpReply *
-storeEntryReply(StoreEntry * e)
+HttpReply const *
+StoreEntry::getReply () const
 {
-    if (NULL == e)
+    if (NULL == mem_obj)
 	return NULL;
-    if (NULL == e->mem_obj)
-	return NULL;
-    return e->mem_obj->reply;
+    return mem_obj->getReply();
 }
 
 void
 storeEntryReset(StoreEntry * e)
 {
     MemObject *mem = e->mem_obj;
+    assert (mem);
     debug(20, 3) ("storeEntryReset: %s\n", storeUrl(e));
-    assert(mem->swapout.sio == NULL);
-    stmemFree(&mem->data_hdr);
-    mem->inmem_hi = mem->inmem_lo = 0;
-    httpReplyDestroy(mem->reply);
-    mem->reply = httpReplyCreate();
+    mem->reset();
+    httpReplyReset((HttpReply *)e->getReply());
     e->expires = e->lastmod = e->timestamp = -1;
 }
 
@@ -1405,9 +1422,10 @@ storeFsDone(void)
 
 /*
  * called to add another store fs module
+ * RBC: doesn't belong here. Move IT.
  */
 void
-storeFsAdd(const char *type, STSETUP * setup)
+StoreEntry::FsAdd(const char *type, STSETUP * setup)
 {
     int i;
     /* find the number of currently known storefs types */
@@ -1477,7 +1495,87 @@ storeSwapFileNumberSet(StoreEntry * e, sfileno filn)
 }
 #endif
 
+/* Replace a store entry with
+ * a new reply. This eats the reply.
+ */
+void
+storeEntryReplaceObject(StoreEntry * e, HttpReply * rep)
+{
+    MemObject * const mem = e->mem_obj;
+    HttpReply *myrep;
+    Packer p;
+    debug(20, 3) ("storeEntryReplaceObject: %s\n", storeUrl(e));
+    if (!mem) {
+       debug (20,0)("Attempt to replace object with no in-memory representation\n");
+       return;
+    }
+    /* TODO: check that there is at most 1 store client ? */
+    myrep = (HttpReply *)e->getReply(); /* we are allowed to do this */
+    /* move info to the mem_obj->reply */
+    httpReplyAbsorb(myrep, rep);
+
+    /* TODO: when we store headers serparately remove the header portion */
+    /* TODO: mark the length of the headers ? */
+    /* We ONLY want the headers */
+    packerToStoreInit(&p, e);
+    assert (e->isEmpty());
+    httpReplyPackHeadersInto(e->getReply(), &p);
+    myrep->hdr_sz = e->mem_obj->endOffset();
+    httpBodyPackInto(&e->getReply()->body, &p);
+    packerClean(&p);
+}
+ 
 
+char const *
+StoreEntry::getSerialisedMetaData()
+{
+    StoreMeta *tlv_list = storeSwapMetaBuild(this);
+    int swap_hdr_sz;
+    char *result = storeSwapMetaPack(tlv_list, &swap_hdr_sz);
+    storeSwapTLVFree(tlv_list);
+    assert (swap_hdr_sz >= 0);
+    mem_obj->swap_hdr_sz = (size_t) swap_hdr_sz;
+    return result;
+}
+
+bool
+StoreEntry::swapoutPossible()
+{
+    /* should we swap something out to disk? */
+    debug(20, 7) ("storeSwapOut: %s\n", storeUrl(this));
+    debug(20, 7) ("storeSwapOut: store_status = %s\n",
+	storeStatusStr[store_status]);
+    if (EBIT_TEST(flags, ENTRY_ABORTED)) {
+	assert(EBIT_TEST(flags, RELEASE_REQUEST));
+	storeSwapOutFileClose(this);
+	return false;
+    }
+    if (EBIT_TEST(flags, ENTRY_SPECIAL)) {
+	debug(20, 3) ("storeSwapOut: %s SPECIAL\n", storeUrl(this));
+	return false;
+    }
+    return true;
+}
+
+void
+StoreEntry::trimMemory()
+{
+    if (mem_obj->policyLowestOffsetToKeep() == 0)
+	/* Nothing to do */
+	return;
+    assert (mem_obj->policyLowestOffsetToKeep() > 0);
+    if (!storeSwapOutAble(this)) {
+	/*
+	 * Its not swap-able, and we're about to delete a chunk,
+	 * so we must make it PRIVATE.  This is tricky/ugly because
+	 * for the most part, we treat swapable == cachable here.
+	 */
+	storeReleaseRequest(this);
+	mem_obj->trimUnSwappable ();
+    } else {
+	mem_obj->trimSwappable ();
+    }
+}
 /* NullStoreEntry */
 
 NullStoreEntry NullStoreEntry::_instance;
@@ -1493,3 +1591,13 @@ NullStoreEntry::getMD5Text() const
 {
     return "N/A";
 }
+
+char const *
+NullStoreEntry::getSerialisedMetaData()
+{
+    return NULL;
+}
+
+#ifndef _USE_INLINE_
+#include "Store.cci"
+#endif
diff --git a/src/store_client.cc b/src/store_client.cc
index 53f0405482..db1a92f24d 100644
--- a/src/store_client.cc
+++ b/src/store_client.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: store_client.cc,v 1.119 2002/12/27 10:26:33 robertc Exp $
+ * $Id: store_client.cc,v 1.120 2003/01/23 00:37:26 robertc Exp $
  *
  * DEBUG: section 20    Storage Manager Client-Side Interface
  * AUTHOR: Duane Wessels
@@ -36,25 +36,57 @@
 #include "squid.h"
 #include "StoreClient.h"
 #include "Store.h"
-
+#include "HttpReply.h"
+#include "MemObject.h"
+#include "StoreMeta.h"
+#include "StoreMetaUnpacker.h"
 
 CBDATA_TYPE(store_client);
 
 /*
  * NOTE: 'Header' refers to the swapfile metadata header.
+ * 	 'OBJHeader' refers to the object header, with cannonical
+ *	 processed object headers (which may derive from FTP/HTTP etc
+ *	 upstream protocols
  *       'Body' refers to the swapfile body, which is the full
  *        HTTP reply (including HTTP headers and body).
  */
 static STRCB storeClientReadBody;
 static STRCB storeClientReadHeader;
 static void storeClientCopy2(StoreEntry * e, store_client * sc);
-static void storeClientCopy3(StoreEntry * e, store_client * sc);
-static void storeClientFileRead(store_client * sc);
 static EVH storeClientCopyEvent;
-static store_client_t storeClientType(StoreEntry *);
 static int CheckQuickAbort2(StoreEntry * entry);
 static void CheckQuickAbort(StoreEntry * entry);
 
+MemPool *store_client::pool = NULL;
+
+void *
+store_client::operator new (size_t byteCount)
+{
+    /* derived classes with different sizes must implement their own new */
+    assert (byteCount == sizeof (store_client));
+    CBDATA_INIT_TYPE(store_client);
+    return cbdataAlloc(store_client);
+}
+
+void
+store_client::operator delete (void *address)
+{
+    cbdataFree ((store_client *)address);
+}
+
+bool
+store_client::memReaderHasLowerOffset(off_t anOffset) const
+{
+    return getType() == STORE_MEM_CLIENT && copyInto.offset < anOffset;
+}
+
+int
+store_client::getType() const
+{
+    return type;
+}
+
 #if STORE_CLIENT_LIST_DEBUG
 static store_client *
 storeClientListSearch(const MemObject * mem, void *data)
@@ -74,49 +106,8 @@ storeClientIsThisAClient(store_client * sc, void *someClient)
 {
     return sc->owner == someClient;
 }
-
 #endif
 
-
-static store_client_t
-storeClientType(StoreEntry * e)
-{
-    MemObject *mem = e->mem_obj;
-    if (mem->inmem_lo)
-	return STORE_DISK_CLIENT;
-    if (EBIT_TEST(e->flags, ENTRY_ABORTED)) {
-	/* I don't think we should be adding clients to aborted entries */
-	debug(20, 1) ("storeClientType: adding to ENTRY_ABORTED entry\n");
-	return STORE_MEM_CLIENT;
-    }
-    if (e->store_status == STORE_OK) {
-	if (mem->inmem_lo == 0 && mem->inmem_hi > 0)
-	    return STORE_MEM_CLIENT;
-	else
-	    return STORE_DISK_CLIENT;
-    }
-    /* here and past, entry is STORE_PENDING */
-    /*
-     * If this is the first client, let it be the mem client
-     */
-    else if (mem->nclients == 1)
-	return STORE_MEM_CLIENT;
-    /*
-     * If there is no disk file to open yet, we must make this a
-     * mem client.  If we can't open the swapin file before writing
-     * to the client, there is no guarantee that we will be able
-     * to open it later when we really need it.
-     */
-    else if (e->swap_status == SWAPOUT_NONE)
-	return STORE_MEM_CLIENT;
-    /*
-     * otherwise, make subsequent clients read from disk so they
-     * can not delay the first, and vice-versa.
-     */
-    else
-	return STORE_DISK_CLIENT;
-}
-
 /* add client with fd to client list */
 store_client *
 storeClientListAdd(StoreEntry * e, void *data)
@@ -126,62 +117,65 @@ storeClientListAdd(StoreEntry * e, void *data)
     assert(mem);
 #if STORE_CLIENT_LIST_DEBUG
     if (storeClientListSearch(mem, data) != NULL)
-	assert(1 == 0);		/* XXX die! */
-#endif
-    e->refcount++;
-    mem->nclients++;
-    CBDATA_INIT_TYPE(store_client);
-    sc = cbdataAlloc(store_client);
-#if STORE_CLIENT_LIST_DEBUG
-    sc->owner = cbdataReference(data);
-#endif
-    sc->cmp_offset = 0;
-    sc->flags.disk_io_pending = 0;
-    sc->entry = e;
-    sc->type = storeClientType(e);
-    if (sc->type == STORE_DISK_CLIENT)
-	/* assert we'll be able to get the data we want */
-	/* maybe we should open swapin_fd here */
-	assert(e->swap_filen > -1 || storeSwapOutAble(e));
-    dlinkAdd(sc, &sc->node, &mem->clients);
-#if DELAY_POOLS
-    sc->delayId = 0;
+	/* XXX die! */
+	assert(1 == 0);
 #endif
+    sc = new store_client (e);
+    mem->addClient(sc);
     return sc;
 }
 
-static void
-storeClientCallback(store_client * sc, ssize_t sz)
+void
+store_client::callback(ssize_t sz, bool error)
 {
-    STCB *callback = sc->callback;
-    void *cbdata;
-    StoreIOBuffer result =
-    {
-	{0}, sz, 0, sc->copyInto.data};
+    StoreIOBuffer result (sz, 0 ,copyInto.data);
     if (sz < 0) {
 	result.flags.error = 1;
 	result.length = 0;
+    } else {
+	result.flags.error = error ? 1 : 0;
     }
-    result.offset = sc->cmp_offset;
-    assert(sc->callback);
-    sc->cmp_offset = sc->copyInto.offset + sz;
-    sc->callback = NULL;
-    sc->copyInto.data = NULL;
-    if (cbdataReferenceValidDone(sc->callback_data, &cbdata))
-	callback(cbdata, result);
+    result.offset = cmp_offset;
+    assert(callbackPending());
+    cmp_offset = copyInto.offset + sz;
+    STCB *temphandler = _callback.callback_handler;
+    void *cbdata = _callback.callback_data;
+    _callback = Callback(NULL, NULL);
+    copyInto.data = NULL;
+    if (cbdataReferenceValid(cbdata))
+	temphandler(cbdata, result);
+    cbdataReferenceDone(cbdata);
 }
 
 static void
 storeClientCopyEvent(void *data)
 {
     store_client *sc = (store_client *)data;
-    debug(20, 3) ("storeClientCopyEvent: Running\n");
+    debug(20, 3)("storeClientCopyEvent: Running\n");
+    assert (sc->flags.copy_event_pending);
     sc->flags.copy_event_pending = 0;
-    if (!sc->callback)
+    if (!sc->callbackPending())
 	return;
     storeClientCopy2(sc->entry, sc);
 }
 
+store_client::store_client(StoreEntry *e) : entry (e), type (e->storeClientType()), object_ok(true)
+{
+    cmp_offset = 0;
+    flags.disk_io_pending = 0;
+    entry->refcount++;
+    if (getType() == STORE_DISK_CLIENT)
+	/* assert we'll be able to get the data we want */
+	/* maybe we should open swapin_fd here */
+	assert(entry->swap_filen > -1 || storeSwapOutAble(entry));
+#if DELAY_POOLS
+    delayId = 0;
+#endif
+#if STORE_CLIENT_LIST_DEBUG
+    owner = cbdataReference(data);
+#endif
+}
+
 /* copy bytes requested by the client */
 void
 storeClientCopy(store_client * sc,
@@ -190,27 +184,41 @@ storeClientCopy(store_client * sc,
     STCB * callback,
     void *data)
 {
-    assert(!EBIT_TEST(e->flags, ENTRY_ABORTED));
-    debug(20, 3) ("storeClientCopy: %s, from %lu, for length %d, cb %p, cbdata %p\n",
-	e->getMD5Text(),
-	(unsigned long) copyInto.offset,
-	(int) copyInto.length,
-	callback,
+    assert (sc != NULL);
+    sc->copy(e, copyInto,callback,data);
+}
+
+void
+store_client::copy(StoreEntry * anEntry,
+		       StoreIOBuffer copyRequest,
+		           STCB * callback_fn,
+			       void *data)
+{
+    assert (anEntry == entry);
+    assert (callback_fn);
+    assert (data);
+    assert(!EBIT_TEST(entry->flags, ENTRY_ABORTED));
+    debug(20, 3)("store_client::copy: %s, from %lu, for length %d, cb %p, cbdata %p",
+	entry->getMD5Text(),
+	(unsigned long) copyRequest.offset,
+	(int) copyRequest.length,
+	callback_fn,
 	data);
-    assert(sc != NULL);
 #if STORE_CLIENT_LIST_DEBUG
-    assert(sc == storeClientListSearch(e->mem_obj, data));
+    assert(this == storeClientListSearch(entry->mem_obj, data));
 #endif
-    assert(sc->callback == NULL);
-    assert(sc->entry == e);
-    assert(sc->cmp_offset == copyInto.offset);
-    sc->callback = callback;
-    sc->callback_data = cbdataReference(data);
-    sc->copyInto.data = copyInto.data;
-    sc->copyInto.length = copyInto.length;
-    sc->copyInto.offset = copyInto.offset;
-
-    storeClientCopy2(e, sc);
+    assert(!callbackPending());
+#if ONLYCONTIGUOUSREQUESTS
+    assert(cmp_offset == copyRequest.offset);
+#endif
+    /* range requests will skip into the body */
+    cmp_offset = copyRequest.offset;
+    _callback = Callback (callback_fn, cbdataReference(data));
+    copyInto.data = copyRequest.data;
+    copyInto.length = copyRequest.length;
+    copyInto.offset = copyRequest.offset;
+
+    storeClientCopy2(entry, this);
 }
 
 /*
@@ -238,22 +246,24 @@ storeClientNoMoreToSend(StoreEntry * e, store_client * sc)
 static void
 storeClientCopy2(StoreEntry * e, store_client * sc)
 {
+    /* reentrancy not allowed  - note this could lead to
+     * dropped events
+     */
     if (sc->flags.copy_event_pending) {
 	return;
     }
     if (EBIT_TEST(e->flags, ENTRY_FWD_HDR_WAIT)) {
-	debug(20, 5) ("storeClientCopy2: returning because ENTRY_FWD_HDR_WAIT set\n");
+	debug(20, 5)("storeClientCopy2: returning because ENTRY_FWD_HDR_WAIT set\n");
 	return;
     }
     if (sc->flags.store_copying) {
 	sc->flags.copy_event_pending = 1;
-	debug(20, 3) ("storeClientCopy2: Queueing storeClientCopyEvent()\n");
+	debug(20, 3)("storeClientCopy2: Queueing storeClientCopyEvent()\n");
 	eventAdd("storeClientCopyEvent", storeClientCopyEvent, sc, 0.0, 0);
 	return;
     }
-    sc->flags.store_copying = 1;
-    debug(20, 3) ("storeClientCopy2: %s\n", e->getMD5Text());
-    assert(sc->callback != NULL);
+    debug(20, 3)("storeClientCopy2: %s\n", e->getMD5Text());
+    assert(sc->callbackPending());
     /*
      * We used to check for ENTRY_ABORTED here.  But there were some
      * problems.  For example, we might have a slow client (or two) and
@@ -261,32 +271,36 @@ storeClientCopy2(StoreEntry * e, store_client * sc)
      * if the server-side aborts, we want to give the client(s)
      * everything we got before the abort condition occurred.
      */
-    /* Warning: storeClientCopy3 may indirectly free sc in callbacks,
+    /* Warning: doCopy may indirectly free itself in callbacks,
      * hence the cbdata reference to keep it active for the duration of
      * this function
      */
-    cbdataInternalLock(sc);
-    storeClientCopy3(e, sc);
-    sc->flags.store_copying = 0;
-    cbdataInternalUnlock(sc);
+    cbdataReference(sc);
+    assert (sc->flags.store_copying == 0);
+    sc->doCopy(e);
+    assert (sc->flags.store_copying == 0);
+    cbdataReferenceDone(sc);
 }
 
-static void
-storeClientCopy3(StoreEntry * e, store_client * sc)
+void
+store_client::doCopy(StoreEntry *anEntry)
 {
-    MemObject *mem = e->mem_obj;
-    size_t sz;
+    assert (anEntry == entry);
+    flags.store_copying = 1;
+    MemObject *mem = entry->mem_obj;
 
-    debug(33, 5) ("co: %lu, hi: %ld\n", (unsigned long) sc->copyInto.offset, (long int) mem->inmem_hi);
+    debug(33, 5)("store_client::doCopy: co: %lu, hi: %ld\n", (unsigned long) copyInto.offset, (long int) mem->endOffset());
 
-    if (storeClientNoMoreToSend(e, sc)) {
+    if (storeClientNoMoreToSend(entry, this)) {
 	/* There is no more to send! */
-	storeClientCallback(sc, 0);
+	callback(0);
+	flags.store_copying = 0;
 	return;
     }
     /* Check that we actually have data */
-    if (e->store_status == STORE_PENDING && sc->copyInto.offset >= mem->inmem_hi) {
-	debug(20, 3) ("storeClientCopy3: Waiting for more\n");
+    if (anEntry->store_status == STORE_PENDING && copyInto.offset >= mem->endOffset()) {
+	debug(20, 3)("store_client::doCopy: Waiting for more\n");
+	flags.store_copying = 0;
 	return;
     }
     /*
@@ -301,18 +315,20 @@ storeClientCopy3(StoreEntry * e, store_client * sc)
      * if needed.
      */
 
-    if (STORE_DISK_CLIENT == sc->type && sc->swapin_sio.getRaw() == NULL) {
-	debug(20, 3) ("storeClientCopy3: Need to open swap in file\n");
+    if (STORE_DISK_CLIENT == getType() && NULL == swapin_sio.getRaw()) {
+	debug(20, 3)("store_client::doCopy: Need to open swap in file\n");
 	/* gotta open the swapin file */
 	if (storeTooManyDiskFilesOpen()) {
 	    /* yuck -- this causes a TCP_SWAPFAIL_MISS on the client side */
-	    storeClientCallback(sc, -1);
+	    fail();
+	    flags.store_copying = 0;
 	    return;
-	} else if (!sc->flags.disk_io_pending) {
+	} else if (!flags.disk_io_pending) {
 	    /* Don't set store_io_pending here */
-	    storeSwapInStart(sc);
-	    if (sc->swapin_sio == NULL) {
-		storeClientCallback(sc, -1);
+	    storeSwapInStart(this);
+	    if (NULL == swapin_sio.getRaw()) {
+		fail();
+		flags.store_copying = 0;
 		return;
 	    }
 	    /*
@@ -320,178 +336,160 @@ storeClientCopy3(StoreEntry * e, store_client * sc)
 	     * schedule a disk read in the next block.
 	     */
 	} else {
-	    debug(20, 1) ("WARNING: Averted multiple fd operation (1)\n");
+	    debug (20, 1)("WARNING: Averted multiple fd operation (1)\n");
+	    flags.store_copying = 0;
 	    return;
 	}
     }
-    if (sc->copyInto.offset >= mem->inmem_lo && sc->copyInto.offset < mem->inmem_hi) {
+    if (copyInto.offset >= mem->inmem_lo && copyInto.offset < mem->endOffset()) {
 	/* What the client wants is in memory */
 	/* Old style */
-	debug(20, 3) ("storeClientCopy3: Copying normal from memory\n");
-	sz = stmemCopy(&mem->data_hdr, sc->copyInto.offset, sc->copyInto.data,
-	    sc->copyInto.length);
-	storeClientCallback(sc, sz);
+	debug(20, 3)("store_client::doCopy: Copying normal from memory\n");
+	size_t sz = mem->data_hdr.copy(copyInto.offset, copyInto.data,
+	    copyInto.length);
+	callback(sz);
+	flags.store_copying = 0;
 	return;
     }
     /* What the client wants is not in memory. Schedule a disk read */
-    assert(STORE_DISK_CLIENT == sc->type);
-    assert(!sc->flags.disk_io_pending);
-    debug(20, 3) ("storeClientCopy3: reading from STORE\n");
-    storeClientFileRead(sc);
+    assert(STORE_DISK_CLIENT == getType());
+    assert(!flags.disk_io_pending);
+    debug(20, 3)("store_client::doCopy: reading from STORE\n");
+    fileRead();
+    flags.store_copying = 0;
 }
 
-static void
-storeClientFileRead(store_client * sc)
+void
+store_client::fileRead()
 {
-    MemObject *mem = sc->entry->mem_obj;
-
-    assert(sc->callback != NULL);
-    assert(!sc->flags.disk_io_pending);
-    sc->flags.disk_io_pending = 1;
-    if (mem->swap_hdr_sz == 0) {
-	storeRead(sc->swapin_sio,
-	    sc->copyInto.data,
-	    sc->copyInto.length,
-	    0,
-	    storeClientReadHeader,
-	    sc);
-    } else {
-	if (sc->entry->swap_status == SWAPOUT_WRITING)
-	    assert(mem->swapout.sio->offset() > sc->copyInto.offset + (off_t)mem->swap_hdr_sz);
-	storeRead(sc->swapin_sio,
-	    sc->copyInto.data,
-	    sc->copyInto.length,
-	    sc->copyInto.offset + mem->swap_hdr_sz,
-	    storeClientReadBody,
-	    sc);
-    }
+    MemObject *mem = entry->mem_obj;
+
+    assert(callbackPending());
+    assert(!flags.disk_io_pending);
+    flags.disk_io_pending = 1;
+    if (mem->swap_hdr_sz != 0)
+	if (entry->swap_status == SWAPOUT_WRITING)
+	    assert(mem->swapout.sio->offset() > copyInto.offset + (off_t)mem->swap_hdr_sz);
+    storeRead(swapin_sio,
+	      copyInto.data,
+	      copyInto.length,
+	      copyInto.offset + mem->swap_hdr_sz,
+	      mem->swap_hdr_sz == 0 ? storeClientReadHeader
+	      : storeClientReadBody,
+	      this);
 }
 
 static void
 storeClientReadBody(void *data, const char *buf, ssize_t len)
 {
     store_client *sc = (store_client *)data;
-    MemObject *mem = sc->entry->mem_obj;
     assert(sc->flags.disk_io_pending);
     sc->flags.disk_io_pending = 0;
-    assert(sc->callback != NULL);
-    debug(20, 3) ("storeClientReadBody: len %d\n", (int) len);
-    if (sc->copyInto.offset == 0 && len > 0 && mem->reply->sline.status == 0)
-	httpReplyParse(mem->reply, sc->copyInto.data, headersEnd(sc->copyInto.data, len));
-    storeClientCallback(sc, len);
+    assert(sc->callbackPending());
+    debug(20, 3)("storeClientReadBody: len %d", (int) len);
+    if (sc->copyInto.offset == 0 && len > 0 && sc->entry->getReply()->sline.status == 0)
+	/* Our structure ! */
+	if (!httpReplyParse((HttpReply *)sc->entry->getReply(), sc->copyInto.data, headersEnd(sc->copyInto.data, len))) {
+	    debug (20,0)("Could not parse headers from on disk object\n");
+	}
+    sc->callback(len);
+}
+
+void
+store_client::fail() 
+{
+    object_ok = false;
+    callback(0, true);
 }
 
 static void
 storeClientReadHeader(void *data, const char *buf, ssize_t len)
 {
-    static int md5_mismatches = 0;
     store_client *sc = (store_client *)data;
-    StoreEntry *e = sc->entry;
-    MemObject *mem = e->mem_obj;
-    int swap_hdr_sz = 0;
-    size_t body_sz;
-    size_t copy_sz;
-    tlv *tlv_list;
-    tlv *t;
-    int swap_object_ok = 1;
-    assert(sc->flags.disk_io_pending);
-    sc->flags.disk_io_pending = 0;
-    assert(sc->callback != NULL);
-    debug(20, 3) ("storeClientReadHeader: len %d\n", (int) len);
+    sc->readHeader(buf, len);
+}
+
+void
+store_client::unpackHeader(char const *buf, ssize_t len)
+{
+    debug(20, 3)("store_client::unpackHeader: len %d", (int) len);
     if (len < 0) {
-	debug(20, 3) ("storeClientReadHeader: %s\n", xstrerror());
-	storeClientCallback(sc, len);
+	debug(20, 3)("store_client::unpackHeader: %s", xstrerror());
+	fail();
 	return;
     }
-    tlv_list = storeSwapMetaUnpack(buf, &swap_hdr_sz);
-    if (swap_hdr_sz > len) {
+    int swap_hdr_sz = 0;
+    StoreMetaUnpacker aBuilder(buf, len, &swap_hdr_sz);
+    if (!aBuilder.isBufferSane()) {
 	/* oops, bad disk file? */
-	debug(20, 1) ("WARNING: swapfile header too small\n");
-	storeClientCallback(sc, -1);
+	debug(20, 1) ("WARNING: swapfile header inconsistent with available data\n");
+	fail();
 	return;
     }
+    tlv *tlv_list = aBuilder.createStoreMeta ();
     if (tlv_list == NULL) {
 	debug(20, 1) ("WARNING: failed to unpack meta data\n");
-	storeClientCallback(sc, -1);
+	fail();
 	return;
     }
     /*
      * Check the meta data and make sure we got the right object.
      */
-    for (t = tlv_list; t && swap_object_ok; t = t->next) {
-	switch (t->type) {
-	case STORE_META_KEY:
-	    assert(t->length == MD5_DIGEST_CHARS);
-	    if (!EBIT_TEST(e->flags, KEY_PRIVATE) &&
-		memcmp(t->value, e->key, MD5_DIGEST_CHARS)) {
-		debug(20, 2) ("storeClientReadHeader: swapin MD5 mismatch\n");
-		debug(20, 2) ("\t%s\n", storeKeyText((const cache_key *)t->value));
-		debug(20, 2) ("\t%s\n", e->getMD5Text());
-		if (isPowTen(++md5_mismatches))
-		    debug(20, 1) ("WARNING: %d swapin MD5 mismatches\n",
-			md5_mismatches);
-		swap_object_ok = 0;
-	    }
-	    break;
-	case STORE_META_URL:
-	    if (NULL == mem->url)
-		(void) 0;	/* can't check */
-	    else if (0 == strcasecmp(mem->url, (char *)t->value))
-		(void) 0;	/* a match! */
-	    else {
-		debug(20, 1) ("storeClientReadHeader: URL mismatch\n");
-		debug(20, 1) ("\t{%s} != {%s}\n", (char *) t->value, mem->url);
-		swap_object_ok = 0;
-		break;
-	    }
-	    break;
-	case STORE_META_STD:
-	    break;
-	case STORE_META_VARY_HEADERS:
-	    if (mem->vary_headers) {
-		if (strcmp(mem->vary_headers, (char *)t->value) != 0)
-		    swap_object_ok = 0;
-	    } else {
-		/* Assume the object is OK.. remember the vary request headers */
-		mem->vary_headers = xstrdup((char *)t->value);
-	    }
-	    break;
-	default:
-	    debug(20, 1) ("WARNING: got unused STORE_META type %d\n", t->type);
-	    break;
+    for (tlv *t = tlv_list; t; t = t->next) {
+	if (!t->checkConsistency(entry)) {
+	    storeSwapTLVFree(tlv_list);
+	    fail();
+	    return;
 	}
     }
     storeSwapTLVFree(tlv_list);
-    if (!swap_object_ok) {
-	storeClientCallback(sc, -1);
+
+    entry->mem_obj->swap_hdr_sz = swap_hdr_sz;
+    entry->mem_obj->object_sz = entry->swap_file_sz - swap_hdr_sz;
+
+}
+
+void
+store_client::readHeader(char const *buf, ssize_t len)
+{
+    MemObject *const mem = entry->mem_obj;
+    
+    assert(flags.disk_io_pending);
+    flags.disk_io_pending = 0;
+    assert(callbackPending());
+
+    unpackHeader (buf, len);
+    if (!object_ok)
 	return;
-    }
-    mem->swap_hdr_sz = swap_hdr_sz;
-    mem->object_sz = e->swap_file_sz - swap_hdr_sz;
+    
     /*
      * If our last read got some data the client wants, then give
      * it to them, otherwise schedule another read.
      */
-    body_sz = len - swap_hdr_sz;
-    if (static_cast(sc->copyInto.offset) < body_sz) {
+    size_t body_sz = len - mem->swap_hdr_sz;
+    if (static_cast(copyInto.offset) < body_sz) {
 	/*
 	 * we have (part of) what they want
 	 */
-	copy_sz = XMIN(sc->copyInto.length, body_sz);
+	size_t copy_sz = XMIN(copyInto.length, body_sz);
 	debug(20, 3) ("storeClientReadHeader: copying %d bytes of body\n",
 	    (int) copy_sz);
-	xmemmove(sc->copyInto.data, sc->copyInto.data + swap_hdr_sz, copy_sz);
-	if (sc->copyInto.offset == 0 && len > 0 && mem->reply->sline.status == 0)
-	    httpReplyParse(mem->reply, sc->copyInto.data,
-		headersEnd(sc->copyInto.data, copy_sz));
-	storeClientCallback(sc, copy_sz);
+	xmemmove(copyInto.data, copyInto.data + mem->swap_hdr_sz, copy_sz);
+       if (copyInto.offset == 0 && len > 0 && entry->getReply()->sline.status == 0)
+           /* Our structure ! */
+           if (!httpReplyParse((HttpReply *)entry->getReply(), copyInto.data,
+               headersEnd(copyInto.data, copy_sz))) {
+               debug (20,0)("could not parse headers from on disk structure!\n");
+           }
+
+        callback(copy_sz);
 	return;
     }
     /*
      * we don't have what the client wants, but at least we now
      * know the swap header size.
      */
-    storeClientFileRead(sc);
+    fileRead();
 }
 
 int
@@ -508,7 +506,7 @@ storeClientCopyPending(store_client * sc, StoreEntry * e, void *data)
     if (sc == NULL)
 	return 0;
 #endif
-    if (sc->callback == NULL)
+    if (!sc->callbackPending())
 	return 0;
     return 1;
 }
@@ -547,11 +545,11 @@ storeUnregister(store_client * sc, StoreEntry * e, void *data)
 	sc->swapin_sio = NULL;
 	statCounter.swap.ins++;
     }
-    if (NULL != sc->callback) {
+    if (sc->callbackPending()){
 	/* callback with ssize = -1 to indicate unexpected termination */
 	debug(20, 3) ("storeUnregister: store_client for %s has a callback\n",
 	    mem->url);
-	storeClientCallback(sc, -1);
+	sc->fail();
     }
 #if DELAY_POOLS
     delayUnregisterDelayIdPtr(&sc->delayId);
@@ -559,7 +557,7 @@ storeUnregister(store_client * sc, StoreEntry * e, void *data)
 #if STORE_CLIENT_LIST_DEBUG
     cbdataReferenceDone(sc->owner);
 #endif
-    cbdataFree(sc);
+    delete sc;
     assert(e->lock_count > 0);
     if (mem->nclients == 0)
 	CheckQuickAbort(e);
@@ -569,30 +567,15 @@ storeUnregister(store_client * sc, StoreEntry * e, void *data)
 off_t
 storeLowestMemReaderOffset(const StoreEntry * entry)
 {
-    const MemObject *mem = entry->mem_obj;
-    off_t lowest = mem->inmem_hi + 1;
-    store_client *sc;
-    dlink_node *nx = NULL;
-    dlink_node *node;
-
-    for (node = mem->clients.head; node; node = nx) {
-	sc = (store_client *)node->data;
-	nx = node->next;
-	if (sc->type != STORE_MEM_CLIENT)
-	    continue;
-	if (sc->type == STORE_DISK_CLIENT)
-	    if (sc->swapin_sio.getRaw())
-		continue;
-	if (sc->copyInto.offset < lowest)
-	    lowest = sc->copyInto.offset;
-    }
-    return lowest;
+    return entry->mem_obj->lowestMemReaderOffset();
 }
 
 /* Call handlers waiting for  data to be appended to E. */
 void
 InvokeHandlers(StoreEntry * e)
 {
+    /* Commit what we can to disk, if appropriate */
+    storeSwapOut (e);
     int i = 0;
     MemObject *mem = e->mem_obj;
     store_client *sc;
@@ -605,9 +588,7 @@ InvokeHandlers(StoreEntry * e)
 	sc = (store_client *)node->data;
 	nx = node->next;
 	debug(20, 3) ("InvokeHandlers: checking client #%d\n", i++);
-	if (sc->callback_data == NULL)
-	    continue;
-	if (sc->callback == NULL)
+	if (!sc->callbackPending())
 	    continue;
 	if (sc->flags.disk_io_pending)
 	    continue;
@@ -631,7 +612,7 @@ CheckQuickAbort2(StoreEntry * entry)
     size_t curlen;
     size_t minlen;
     size_t expectlen;
-    MemObject *mem = entry->mem_obj;
+    MemObject * const mem = entry->mem_obj;
     assert(mem);
     debug(20, 3) ("CheckQuickAbort2: entry=%p, mem=%p\n", entry, mem);
     if (mem->request && !mem->request->flags.cachable) {
@@ -642,9 +623,9 @@ CheckQuickAbort2(StoreEntry * entry)
 	debug(20, 3) ("CheckQuickAbort2: YES KEY_PRIVATE\n");
 	return 1;
     }
-    expectlen = mem->reply->content_length + mem->reply->hdr_sz;
-    assert (mem->reply->content_length + mem->reply->hdr_sz >= 0);
-    curlen = (size_t) mem->inmem_hi;
+    expectlen = entry->getReply()->content_length + entry->getReply()->hdr_sz;
+    assert (entry->getReply()->content_length + entry->getReply()->hdr_sz >= 0);
+    curlen = (size_t) mem->endOffset ();
     minlen = (size_t) Config.quickAbort.min << 10;
     if (minlen < 0) {
 	debug(20, 3) ("CheckQuickAbort2: NO disabled\n");
@@ -677,8 +658,7 @@ CheckQuickAbort2(StoreEntry * entry)
 static void
 CheckQuickAbort(StoreEntry * entry)
 {
-    if (entry == NULL)
-	return;
+    assert (entry);
     if (storePendingNClients(entry) > 0)
 	return;
     if (entry->store_status != STORE_PENDING)
@@ -687,27 +667,33 @@ CheckQuickAbort(StoreEntry * entry)
 	return;
     if (CheckQuickAbort2(entry) == 0)
 	return;
-    statCounter.aborted_requests++;
     storeAbort(entry);
 }
 
 void
-storeClientDumpStats(store_client * thisClient, StoreEntry * output, int clientNumber)
+store_client::dumpStats(StoreEntry * output, int clientNumber) const
 {
-    if (thisClient->callback_data == NULL)
+    if (callbackPending())
 	return;
-    storeAppendPrintf(output, "\tClient #%d, %p\n", clientNumber, thisClient->callback_data);
+    storeAppendPrintf(output, "\tClient #%d, %p\n", clientNumber, _callback.callback_data);
     storeAppendPrintf(output, "\t\tcopy_offset: %lu\n",
-	(unsigned long) thisClient->copyInto.offset);
+	(unsigned long) copyInto.offset);
     storeAppendPrintf(output, "\t\tcopy_size: %d\n",
-	(int) thisClient->copyInto.length);
+	(int) copyInto.length);
     storeAppendPrintf(output, "\t\tflags:");
-    if (thisClient->flags.disk_io_pending)
+    if (flags.disk_io_pending)
 	storeAppendPrintf(output, " disk_io_pending");
-    if (thisClient->flags.store_copying)
+    if (flags.store_copying)
 	storeAppendPrintf(output, " store_copying");
-    if (thisClient->flags.copy_event_pending)
+    if (flags.copy_event_pending)
 	storeAppendPrintf(output, " copy_event_pending");
     storeAppendPrintf(output, "\n");
+}
 
+bool
+store_client::callbackPending() const
+{
+    return _callback.callback_handler && _callback.callback_data;
 }
+
+store_client::Callback::Callback(STCB *function, void *data) : callback_handler(function), callback_data (data) {}
diff --git a/src/store_digest.cc b/src/store_digest.cc
index bc3a25e3b7..f12cafa27b 100644
--- a/src/store_digest.cc
+++ b/src/store_digest.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: store_digest.cc,v 1.54 2002/10/25 07:36:32 robertc Exp $
+ * $Id: store_digest.cc,v 1.55 2003/01/23 00:37:26 robertc Exp $
  *
  * DEBUG: section 71    Store Digest Manager
  * AUTHOR: Alex Rousskov
@@ -41,11 +41,13 @@
  */
 
 #include "squid.h"
-#include "Store.h"
-
-
 #if USE_CACHE_DIGESTS
 
+#include "Store.h"
+#include "HttpRequest.h"
+#include "HttpReply.h"
+#include "MemObject.h"
+
 /*
  * local types
  */
@@ -379,15 +381,15 @@ storeDigestRewriteResume(void)
     /* setting public key will purge old digest entry if any */
     storeSetPublicKey(e);
     /* fake reply */
-    httpReplyReset(e->mem_obj->reply);
+    HttpReply *rep = httpReplyCreate ();
     httpBuildVersion(&version, 1, 0);
-    httpReplySetHeaders(e->mem_obj->reply, version, HTTP_OK, "Cache Digest OK",
+    httpReplySetHeaders(rep, version, HTTP_OK, "Cache Digest OK",
 	"application/cache-digest", store_digest->mask_size + sizeof(sd_state.cblock),
 	squid_curtime, squid_curtime + Config.digest.rewrite_period);
     debug(71, 3) ("storeDigestRewrite: entry expires on %ld (%+d)\n",
-	(long int) e->mem_obj->reply->expires, (int) (e->mem_obj->reply->expires - squid_curtime));
+	(long int) rep->expires, (int) (rep->expires - squid_curtime));
     storeBuffer(e);
-    httpReplySwapOut(e->mem_obj->reply, e);
+    httpReplySwapOut(rep, e);
     storeDigestCBlockSwapOut(e);
     storeBufferFlush(e);
     eventAdd("storeDigestSwapOutStep", storeDigestSwapOutStep, sd_state.rewrite_lock, 0.0, 1);
@@ -398,16 +400,14 @@ static void
 storeDigestRewriteFinish(StoreEntry * e)
 {
     assert(sd_state.rewrite_lock && e == sd_state.rewrite_lock->data);
-    storeComplete(e);
+    e->complete();
     storeTimestampsSet(e);
     debug(71, 2) ("storeDigestRewriteFinish: digest expires at %ld (%+d)\n",
 	(long int) e->expires, (int) (e->expires - squid_curtime));
     /* is this the write order? @?@ */
-    requestUnlink(e->mem_obj->request);
-    e->mem_obj->request = NULL;
+    e->mem_obj->unlinkRequest();
     storeUnlockObject(e);
     cbdataFree(sd_state.rewrite_lock);
-    e = NULL;
     sd_state.rewrite_lock = NULL;
     sd_state.rewrite_count++;
     eventAdd("storeDigestRewriteStart", storeDigestRewriteStart, NULL, (double)
@@ -467,7 +467,7 @@ storeDigestCalcCap(void)
      */
     const int hi_cap = Config.Swap.maxSize / Config.Store.avgObjectSize;
     const int lo_cap = 1 + store_swap_size / Config.Store.avgObjectSize;
-    const int e_count = storeEntryInUse();
+    const int e_count = StoreEntry::inUseCount();
     int cap = e_count ? e_count : hi_cap;
     debug(71, 2) ("storeDigestCalcCap: have: %d, want %d entries; limits: [%d, %d]\n",
 	e_count, cap, lo_cap, hi_cap);
diff --git a/src/store_dir.cc b/src/store_dir.cc
index be2baf223a..01fc38a0fc 100644
--- a/src/store_dir.cc
+++ b/src/store_dir.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: store_dir.cc,v 1.140 2002/12/27 10:26:33 robertc Exp $
+ * $Id: store_dir.cc,v 1.141 2003/01/23 00:37:26 robertc Exp $
  *
  * DEBUG: section 47    Store Directory Routines
  * AUTHOR: Duane Wessels
@@ -35,6 +35,7 @@
 
 #include "squid.h"
 #include "Store.h"
+#include "MemObject.h"
 #include "SwapDir.h"
 
 #if HAVE_STATVFS
@@ -286,7 +287,7 @@ storeDirStats(StoreEntry * sentry)
 
     storeAppendPrintf(sentry, "Store Directory Statistics:\n");
     storeAppendPrintf(sentry, "Store Entries          : %lu\n",
-	(unsigned long int)storeEntryInUse());
+	(unsigned long int)StoreEntry::inUseCount());
     storeAppendPrintf(sentry, "Maximum Swap Size      : %8ld KB\n",
 	(long int) Config.Swap.maxSize);
     storeAppendPrintf(sentry, "Current Store Swap Size: %8lu KB\n",
diff --git a/src/store_io.cc b/src/store_io.cc
index c57d281c9c..61f6762893 100644
--- a/src/store_io.cc
+++ b/src/store_io.cc
@@ -1,5 +1,6 @@
 #include "squid.h"
 #include "Store.h"
+#include "MemObject.h"
 #include "SwapDir.h"
 
 static struct {
@@ -81,7 +82,7 @@ storeRead(StoreIOState::Pointer sio, char *buf, size_t size, off_t offset, STRCB
 }
 
 void
-storeWrite(StoreIOState::Pointer sio, char *buf, size_t size, off_t offset, FREE * free_func)
+storeIOWrite(StoreIOState::Pointer sio, char const *buf, size_t size, off_t offset, FREE * free_func)
 {
     sio->write(buf,size,offset,free_func);
 }
diff --git a/src/store_key_md5.cc b/src/store_key_md5.cc
index 9f00590799..c1ff825022 100644
--- a/src/store_key_md5.cc
+++ b/src/store_key_md5.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: store_key_md5.cc,v 1.27 2002/10/13 20:35:05 robertc Exp $
+ * $Id: store_key_md5.cc,v 1.28 2003/01/23 00:37:26 robertc Exp $
  *
  * DEBUG: section 20    Storage Manager MD5 Cache Keys
  * AUTHOR: Duane Wessels
@@ -40,12 +40,11 @@ static cache_key null_key[MD5_DIGEST_CHARS];
 const char *
 storeKeyText(const unsigned char *key)
 {
-    static MemBuf mb = MemBufNULL;
+    static char buf[MD5_DIGEST_CHARS * 2+1];
     int i;
-    memBufReset(&mb);
     for (i = 0; i < MD5_DIGEST_CHARS; i++)
-	memBufPrintf(&mb, "%02X", *(key + i));
-    return mb.buf;
+	snprintf(&buf[i*2],sizeof(buf) - i*2, "%02X", *(key + i));
+    return buf;
 }
 
 const cache_key *
diff --git a/src/store_log.cc b/src/store_log.cc
index a526aafe5b..fae1b94cc8 100644
--- a/src/store_log.cc
+++ b/src/store_log.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: store_log.cc,v 1.25 2002/10/15 08:03:30 robertc Exp $
+ * $Id: store_log.cc,v 1.26 2003/01/23 00:37:27 robertc Exp $
  *
  * DEBUG: section 20    Storage Manager Logging Functions
  * AUTHOR: Duane Wessels
@@ -35,6 +35,7 @@
 
 #include "squid.h"
 #include "Store.h"
+#include "MemObject.h"
 
 static const char *storeLogTags[] =
 {
@@ -51,7 +52,7 @@ void
 storeLog(int tag, const StoreEntry * e)
 {
     MemObject *mem = e->mem_obj;
-    HttpReply *reply;
+    HttpReply const *reply;
     if (NULL == storelog)
 	return;
 #if UNUSED_CODE
@@ -61,10 +62,10 @@ storeLog(int tag, const StoreEntry * e)
     if (mem != NULL) {
 	if (mem->log_url == NULL) {
 	    debug(20, 1) ("storeLog: NULL log_url for %s\n", mem->url);
-	    storeMemObjectDump(mem);
+	    mem->dump();
 	    mem->log_url = xstrdup(mem->url);
 	}
-	reply = mem->reply;
+	reply = e->getReply();
 	/*
 	 * XXX Ok, where should we print the dir number here?
 	 * Because if we print it before the swap file number, it'll break
@@ -81,9 +82,9 @@ storeLog(int tag, const StoreEntry * e)
 	    (int) reply->date,
 	    (int) reply->last_modified,
 	    (int) reply->expires,
-	    strLen(reply->content_type) ? strBuf(reply->content_type) : "unknown",
+	    reply->content_type.size() ? reply->content_type.buf() : "unknown",
 	    reply->content_length,
-	    (int) (mem->inmem_hi - mem->reply->hdr_sz),
+	    contentLen(e),
 	    RequestMethodStr[mem->method],
 	    mem->log_url);
     } else {
diff --git a/src/store_modules.sh b/src/store_modules.sh
index b45b5652d1..0f8a781b4c 100644
--- a/src/store_modules.sh
+++ b/src/store_modules.sh
@@ -11,6 +11,6 @@ done
 echo "void storeFsSetup(void)"
 echo "{"
 for module in "$@"; do
-   echo "	storeFsAdd(\"$module\", storeFsSetup_${module});"
+   echo "	StoreEntry::FsAdd(\"$module\", storeFsSetup_${module});"
 done
 echo "}"
diff --git a/src/store_rebuild.cc b/src/store_rebuild.cc
index ad6a6564bc..fe14ced8ae 100644
--- a/src/store_rebuild.cc
+++ b/src/store_rebuild.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: store_rebuild.cc,v 1.79 2002/12/27 10:26:33 robertc Exp $
+ * $Id: store_rebuild.cc,v 1.80 2003/01/23 00:37:27 robertc Exp $
  *
  * DEBUG: section 20    Store Rebuild Routines
  * AUTHOR: Duane Wessels
diff --git a/src/store_swapin.cc b/src/store_swapin.cc
index 6fb75a76d8..d40aa494bf 100644
--- a/src/store_swapin.cc
+++ b/src/store_swapin.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: store_swapin.cc,v 1.33 2002/12/27 10:26:33 robertc Exp $
+ * $Id: store_swapin.cc,v 1.34 2003/01/23 00:37:27 robertc Exp $
  *
  * DEBUG: section 20    Storage Manager Swapin Functions
  * AUTHOR: Duane Wessels
@@ -70,19 +70,13 @@ static void
 storeSwapInFileClosed(void *data, int errflag, storeIOState * sio)
 {
     store_client *sc = (store_client *)data;
-    StoreIOBuffer result =
-    {
-	{0}, 0, 0, sc->copyInto.data};
-    STCB *callback;
     debug(20, 3) ("storeSwapInFileClosed: sio=%p, errflag=%d\n",
 	sio, errflag);
-    if (errflag)
-	result.flags.error = 1;
     sc->swapin_sio = NULL;
-    if ((callback = sc->callback)) {
-	assert(errflag <= 0);
-	sc->callback = NULL;
-	callback(sc->callback_data, result);
+    /* why this assert */
+    if (sc->callbackPending()) {
+	assert (errflag <= 0);
+        sc->callback(0, errflag ? true : false);
     }
     statCounter.swap.ins++;
 }
diff --git a/src/store_swapmeta.cc b/src/store_swapmeta.cc
index 542518d8e4..0f83bd9636 100644
--- a/src/store_swapmeta.cc
+++ b/src/store_swapmeta.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: store_swapmeta.cc,v 1.19 2002/10/15 08:03:31 robertc Exp $
+ * $Id: store_swapmeta.cc,v 1.20 2003/01/23 00:37:27 robertc Exp $
  *
  * DEBUG: section 20    Storage Manager Swapfile Metadata
  * AUTHOR: Kostas Anagnostakis
@@ -35,18 +35,9 @@
 
 #include "squid.h"
 #include "Store.h"
-
-static tlv **
-storeSwapTLVAdd(int type, const void *ptr, size_t len, tlv ** tail)
-{
-    tlv *t = (tlv *)memAllocate(MEM_TLV);
-    t->type = (char) type;
-    t->length = (int) len;
-    t->value = xmalloc(len);
-    xmemcpy(t->value, ptr, len);
-    *tail = t;
-    return &t->next;		/* return new tail pointer */
-}
+#include "MemObject.h"
+#include "StoreMeta.h"
+#include "StoreMetaUnpacker.h"
 
 void
 storeSwapTLVFree(tlv * n)
@@ -55,7 +46,7 @@ storeSwapTLVFree(tlv * n)
     while ((t = n) != NULL) {
 	n = t->next;
 	xfree(t->value);
-	memFree(t, MEM_TLV);
+	t->deleteSelf();
     }
 }
 
@@ -73,12 +64,33 @@ storeSwapMetaBuild(StoreEntry * e)
     assert(e->swap_status == SWAPOUT_WRITING);
     url = storeUrl(e);
     debug(20, 3) ("storeSwapMetaBuild: %s\n", url);
-    T = storeSwapTLVAdd(STORE_META_KEY, e->key, MD5_DIGEST_CHARS, T);
-    T = storeSwapTLVAdd(STORE_META_STD, &e->timestamp, STORE_HDR_METASIZE, T);
-    T = storeSwapTLVAdd(STORE_META_URL, url, strlen(url) + 1, T);
+    tlv *t = StoreMeta::Factory (STORE_META_KEY,MD5_DIGEST_CHARS, e->key);
+    if (!t) {
+	storeSwapTLVFree(TLV);
+	return NULL;
+    }
+    T = StoreMeta::Add(T, t);
+    t = StoreMeta::Factory(STORE_META_STD,STORE_HDR_METASIZE,&e->timestamp);
+    if (!t) {
+	storeSwapTLVFree(TLV);
+	return NULL;
+    }
+    T = StoreMeta::Add(T, t);
+    t = StoreMeta::Factory(STORE_META_URL, strlen(url) + 1, url);
+    if (!t) {
+	storeSwapTLVFree(TLV);
+	return NULL;
+    }
+    T = StoreMeta::Add(T, t);
     vary = e->mem_obj->vary_headers;
-    if (vary)
-	T = storeSwapTLVAdd(STORE_META_VARY_HEADERS, vary, strlen(vary) + 1, T);
+    if (vary) {
+	t =StoreMeta::Factory(STORE_META_VARY_HEADERS, strlen(vary) + 1, vary);
+	if (!t) {
+	    storeSwapTLVFree(TLV);
+	    return NULL;
+	}
+	StoreMeta::Add (T, t);
+    }
     return TLV;
 }
 
@@ -100,7 +112,7 @@ storeSwapMetaPack(tlv * tlv_list, int *length)
     xmemcpy(&buf[j], &buflen, sizeof(int));
     j += sizeof(int);
     for (t = tlv_list; t; t = t->next) {
-	buf[j++] = (char) t->type;
+	buf[j++] = t->getType();
 	xmemcpy(&buf[j], &t->length, sizeof(int));
 	j += sizeof(int);
 	xmemcpy(&buf[j], t->value, t->length);
@@ -111,50 +123,3 @@ storeSwapMetaPack(tlv * tlv_list, int *length)
     *length = buflen;
     return buf;
 }
-
-tlv *
-storeSwapMetaUnpack(const char *buf, int *hdr_len)
-{
-    tlv *TLV;			/* we'll return this */
-    tlv **T = &TLV;
-    char type;
-    int length;
-    int buflen;
-    off_t j = 0;
-    assert(buf != NULL);
-    assert(hdr_len != NULL);
-    if (buf[j++] != (char) STORE_META_OK)
-	return NULL;
-    xmemcpy(&buflen, &buf[j], sizeof(int));
-    j += sizeof(int);
-    /*
-     * sanity check on 'buflen' value.  It should be at least big
-     * enough to hold one type and one length.
-     */
-    if (buflen <= (off_t) (sizeof(char) + sizeof(int)))
-	    return NULL;
-    while (buflen - j > (off_t)(sizeof(char) + sizeof(int))) {
-	type = buf[j++];
-	/* VOID is reserved, but allow some slack for new types.. */
-	if (type <= STORE_META_VOID || type > STORE_META_END + 10) {
-	    debug(20, 0) ("storeSwapMetaUnpack: bad type (%d)!\n", type);
-	    break;
-	}
-	xmemcpy(&length, &buf[j], sizeof(int));
-	if (length < 0 || length > (1 << 16)) {
-	    debug(20, 0) ("storeSwapMetaUnpack: insane length (%d)!\n", length);
-	    break;
-	}
-	j += sizeof(int);
-	if (j + length > buflen) {
-	    debug(20, 0) ("storeSwapMetaUnpack: overflow!\n");
-	    debug(20, 0) ("\ttype=%d, length=%d, buflen=%d, offset=%d\n",
-		type, length, buflen, (int) j);
-	    break;
-	}
-	T = storeSwapTLVAdd(type, &buf[j], (size_t) length, T);
-	j += length;
-    }
-    *hdr_len = buflen;
-    return TLV;
-}
diff --git a/src/store_swapout.cc b/src/store_swapout.cc
index 57de1ac072..acd8d5be23 100644
--- a/src/store_swapout.cc
+++ b/src/store_swapout.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: store_swapout.cc,v 1.91 2002/12/27 10:26:33 robertc Exp $
+ * $Id: store_swapout.cc,v 1.92 2003/01/23 00:37:27 robertc Exp $
  *
  * DEBUG: section 20    Storage Manager Swapout Functions
  * AUTHOR: Duane Wessels
@@ -36,9 +36,11 @@
 #include "squid.h"
 #include "StoreClient.h"
 #include "Store.h"
+/* FIXME: Abstract the use of this more */
+#include "mem_node.h"
+#include "MemObject.h"
 #include "SwapDir.h"
 
-static off_t storeSwapOutObjectBytesOnDisk(const MemObject *);
 static void storeSwapOutStart(StoreEntry * e);
 static STIOCB storeSwapOutFileClosed;
 static STIOCB storeSwapOutFileNotify;
@@ -47,11 +49,7 @@ static STIOCB storeSwapOutFileNotify;
 static void
 storeSwapOutStart(StoreEntry * e)
 {
-    generic_cbdata *c;
     MemObject *mem = e->mem_obj;
-    int swap_hdr_sz = 0;
-    tlv *tlv_list;
-    char *buf;
     StoreIOState::Pointer sio;
     assert(mem);
     /* Build the swap metadata, so the filesystem will know how much
@@ -60,29 +58,36 @@ storeSwapOutStart(StoreEntry * e)
     debug(20, 5) ("storeSwapOutStart: Begin SwapOut '%s' to dirno %d, fileno %08X\n",
 	storeUrl(e), e->swap_dirn, e->swap_filen);
     e->swap_status = SWAPOUT_WRITING;
-    tlv_list = storeSwapMetaBuild(e);
-    buf = storeSwapMetaPack(tlv_list, &swap_hdr_sz);
-    storeSwapTLVFree(tlv_list);
-    mem->swap_hdr_sz = (size_t) swap_hdr_sz;
+    /* If we start swapping out objects with OutOfBand Metadata,
+     * then this code needs changing
+     */
     /* Create the swap file */
-    c = cbdataAlloc(generic_cbdata);
+    generic_cbdata *c = cbdataAlloc(generic_cbdata);
     c->data = e;
     sio = storeCreate(e, storeSwapOutFileNotify, storeSwapOutFileClosed, c);
-    mem->swapout.sio = sio;
-    if (mem->swapout.sio == NULL) {
+    if (NULL == sio.getRaw()) {
 	e->swap_status = SWAPOUT_NONE;
 	cbdataFree(c);
-	xfree(buf);
 	storeLog(STORE_LOG_SWAPOUTFAIL, e);
 	return;
     }
-    storeLockObject(e);		/* Don't lock until after create, or the replacement
-				 * code might get confused */
+    mem->swapout.sio = sio;
+    /* Don't lock until after create, or the replacement
+     * code might get confused */
+    storeLockObject(e);
     /* Pick up the file number if it was assigned immediately */
     e->swap_filen = mem->swapout.sio->swap_filen;
     e->swap_dirn = mem->swapout.sio->swap_dirn;
     /* write out the swap metadata */
-    storeWrite(mem->swapout.sio, buf, mem->swap_hdr_sz, 0, xfree);
+    /* TODO: make some sort of data,size refcounted immutable buffer
+     * for use by this sort of function.
+     */
+    char const *buf = e->getSerialisedMetaData ();
+    /* If we start swapping out with out of band metadata, this assert
+     * will catch it - this code needs to be adjusted if that happens
+     */
+    assert (buf);
+    storeIOWrite(mem->swapout.sio, buf, mem->swap_hdr_sz, 0, xfree);
 }
 
 static void
@@ -99,49 +104,88 @@ storeSwapOutFileNotify(void *data, int errflag, storeIOState * sio)
     e->swap_dirn = mem->swapout.sio->swap_dirn;
 }
 
+static void
+doPages(StoreEntry *anEntry)
+{
+    MemObject *mem = anEntry->mem_obj;
+    do {
+	/*
+	 * Evil hack time.
+	 * We are paging out to disk in page size chunks. however, later on when
+	 * we update the queue position, we might not have a page (I *think*),
+	 * so we do the actual page update here.
+	 */
+
+	if (mem->swapout.memnode == NULL) {
+	    /* We need to swap out the first page */
+	    mem->swapout.memnode = mem->data_hdr.head;
+	} else {
+	    /* We need to swap out the next page */
+	    mem->swapout.memnode = mem->swapout.memnode->next;
+	}
+	/*
+	 * Get the length of this buffer. We are assuming(!) that the buffer
+	 * length won't change on this buffer, or things are going to be very
+	 * strange. I think that after the copy to a buffer is done, the buffer
+	 * size should stay fixed regardless so that this code isn't confused,
+	 * but we can look at this at a later date or whenever the code results
+	 * in bad swapouts, whichever happens first. :-)
+	 */
+	ssize_t swap_buf_len = mem->swapout.memnode->nodeBuffer.length;
+
+	debug(20, 3) ("storeSwapOut: swap_buf_len = %d\n", (int) swap_buf_len);
+	assert(swap_buf_len > 0);
+	debug(20, 3) ("storeSwapOut: swapping out %ld bytes from %ld\n",
+	    (long int) swap_buf_len, (long int) mem->swapout.queue_offset);
+	mem->swapout.queue_offset += swap_buf_len;
+	storeIOWrite(mem->swapout.sio, mem->swapout.memnode->data, swap_buf_len, -1, NULL);
+	/* the storeWrite() call might generate an error */
+	if (anEntry->swap_status != SWAPOUT_WRITING)
+	    break;
+	ssize_t swapout_size = (ssize_t) (mem->endOffset() - mem->swapout.queue_offset);
+	if (anEntry->store_status == STORE_PENDING)
+	    if (swapout_size < SM_PAGE_SIZE)
+		break;
+	if (swapout_size <= 0)
+	    return;
+    } while (true);
+}
+
+
+/* This routine is called every time data is sent to the client side.
+ * It's overhead is therefor, significant.
+ */
 void
 storeSwapOut(StoreEntry * e)
 {
-    MemObject *mem = e->mem_obj;
-    off_t lowest_offset;
-    off_t new_mem_lo;
-    off_t on_disk = 0;
-    ssize_t swapout_size;
-    ssize_t swap_buf_len;
-    if (mem == NULL)
+    if (!e->mem_obj)
 	return;
-    /* should we swap something out to disk? */
-    debug(20, 7) ("storeSwapOut: %s\n", storeUrl(e));
-    debug(20, 7) ("storeSwapOut: store_status = %s\n",
-	storeStatusStr[e->store_status]);
-    if (EBIT_TEST(e->flags, ENTRY_ABORTED)) {
-	assert(EBIT_TEST(e->flags, RELEASE_REQUEST));
-	storeSwapOutFileClose(e);
+    if (!e->swapoutPossible())
 	return;
-    }
-    if (EBIT_TEST(e->flags, ENTRY_SPECIAL)) {
-	debug(20, 3) ("storeSwapOut: %s SPECIAL\n", storeUrl(e));
-	return;
-    }
+
+    MemObject *mem = e->mem_obj;
+
     debug(20, 7) ("storeSwapOut: mem->inmem_lo = %d\n",
 	(int) mem->inmem_lo);
-    debug(20, 7) ("storeSwapOut: mem->inmem_hi = %d\n",
-	(int) mem->inmem_hi);
+    debug(20, 7) ("storeSwapOut: mem->endOffset() = %d\n",
+	(int) mem->endOffset());
     debug(20, 7) ("storeSwapOut: swapout.queue_offset = %d\n",
 	(int) mem->swapout.queue_offset);
     if (mem->swapout.sio.getRaw())
-	debug(20, 7) ("storeSwapOut: offset() = %d\n",
+	debug(20, 7) ("storeSwapOut: storeOffset() = %d\n",
 	    (int) mem->swapout.sio->offset());
-    assert(mem->inmem_hi >= mem->swapout.queue_offset);
-    lowest_offset = storeLowestMemReaderOffset(e);
+    
+    ssize_t swapout_maxsize = (ssize_t) (mem->endOffset() - mem->swapout.queue_offset);
+    assert(swapout_maxsize >= 0);
+    off_t const lowest_offset = mem->lowestMemReaderOffset();
+    
     debug(20, 7) ("storeSwapOut: lowest_offset = %d\n",
 	(int) lowest_offset);
     /*
      * Grab the swapout_size and check to see whether we're going to defer
      * the swapout based upon size
      */
-    swapout_size = (ssize_t) (mem->inmem_hi - mem->swapout.queue_offset);
-    if ((e->store_status != STORE_OK) && (swapout_size < store_maxobjsize)) {
+    if ((e->store_status != STORE_OK) && (swapout_maxsize < store_maxobjsize)) {
 	/*
 	 * NOTE: the store_maxobjsize here is the max of optional
 	 * max-size values from 'cache_dir' lines.  It is not the
@@ -155,67 +199,34 @@ storeSwapOut(StoreEntry * e)
 	debug(20, 5) ("storeSwapOut: Deferring starting swapping out\n");
 	return;
     }
-    /*
-     * Careful.  lowest_offset can be greater than inmem_hi, such
-     * as in the case of a range request.
-     */
-    if (mem->inmem_hi < lowest_offset)
-	new_mem_lo = lowest_offset;
-    else if (mem->inmem_hi - mem->inmem_lo > (ssize_t)Config.Store.maxInMemObjSize)
-	new_mem_lo = lowest_offset;
-    else
-	new_mem_lo = mem->inmem_lo;
-    assert(new_mem_lo >= mem->inmem_lo);
-    if (storeSwapOutAble(e)) {
-	/*
-	 * We should only free up to what we know has been written
-	 * to disk, not what has been queued for writing.  Otherwise
-	 * there will be a chunk of the data which is not in memory
-	 * and is not yet on disk.
-	 * The -1 makes sure the page isn't freed until storeSwapOut has
-	 * walked to the next page. (mem->swapout.memnode)
-	 */
-	if ((on_disk = storeSwapOutObjectBytesOnDisk(mem)) - 1 < new_mem_lo)
-	    new_mem_lo = on_disk - 1;
-	if (new_mem_lo == -1)
-	    new_mem_lo = 0;	/* the above might become -1 */
-    } else if (new_mem_lo > 0) {
-	/*
-	 * Its not swap-able, and we're about to delete a chunk,
-	 * so we must make it PRIVATE.  This is tricky/ugly because
-	 * for the most part, we treat swapable == cachable here.
-	 */
-	storeReleaseRequest(e);
-    }
-    stmemFreeDataUpto(&mem->data_hdr, new_mem_lo);
-    mem->inmem_lo = new_mem_lo;
+    e->trimMemory();
 #if SIZEOF_OFF_T == 4
-    if (mem->inmem_hi > 0x7FFF0000) {
+    if (mem->endOffset() > 0x7FFF0000) {
 	debug(20, 0) ("WARNING: preventing off_t overflow for %s\n", storeUrl(e));
 	storeAbort(e);
 	return;
     }
 #endif
     if (e->swap_status == SWAPOUT_WRITING)
-	assert(mem->inmem_lo <= on_disk);
+	assert(mem->inmem_lo <=  (off_t)mem->objectBytesOnDisk() );
     if (!storeSwapOutAble(e))
 	return;
     debug(20, 7) ("storeSwapOut: swapout_size = %d\n",
-	(int) swapout_size);
-    if (swapout_size == 0) {
+	(int) swapout_maxsize);
+    if (swapout_maxsize == 0) {
 	if (e->store_status == STORE_OK)
 	    storeSwapOutFileClose(e);
 	return;			/* Nevermore! */
     }
     if (e->store_status == STORE_PENDING) {
 	/* wait for a full block to write */
-	if (swapout_size < SM_PAGE_SIZE)
+	if (swapout_maxsize < SM_PAGE_SIZE)
 	    return;
 	/*
 	 * Wait until we are below the disk FD limit, only if the
 	 * next server-side read won't be deferred.
 	 */
-	if (storeTooManyDiskFilesOpen() && !fwdCheckDeferRead(-1, e))
+	if (storeTooManyDiskFilesOpen() && !StoreEntry::CheckDeferRead(-1, e))
 	    return;
     }
     /* Ok, we have stuff to swap out.  Is there a swapout.sio open? */
@@ -230,46 +241,8 @@ storeSwapOut(StoreEntry * e)
     }
     if (mem->swapout.sio == NULL)
 	return;
-    do {
-	/*
-	 * Evil hack time.
-	 * We are paging out to disk in page size chunks. however, later on when
-	 * we update the queue position, we might not have a page (I *think*),
-	 * so we do the actual page update here.
-	 */
-
-	if (mem->swapout.memnode == NULL) {
-	    /* We need to swap out the first page */
-	    mem->swapout.memnode = mem->data_hdr.head;
-	} else {
-	    /* We need to swap out the next page */
-	    mem->swapout.memnode = mem->swapout.memnode->next;
-	}
-	/*
-	 * Get the length of this buffer. We are assuming(!) that the buffer
-	 * length won't change on this buffer, or things are going to be very
-	 * strange. I think that after the copy to a buffer is done, the buffer
-	 * size should stay fixed regardless so that this code isn't confused,
-	 * but we can look at this at a later date or whenever the code results
-	 * in bad swapouts, whichever happens first. :-)
-	 */
-	swap_buf_len = mem->swapout.memnode->len;
-
-	debug(20, 3) ("storeSwapOut: swap_buf_len = %d\n", (int) swap_buf_len);
-	assert(swap_buf_len > 0);
-	debug(20, 3) ("storeSwapOut: swapping out %ld bytes from %ld\n",
-	    (long int) swap_buf_len, (long int) mem->swapout.queue_offset);
-	mem->swapout.queue_offset += swap_buf_len;
-	storeWrite(mem->swapout.sio, mem->swapout.memnode->data, swap_buf_len, -1, NULL);
-	/* the storeWrite() call might generate an error */
-	if (e->swap_status != SWAPOUT_WRITING)
-	    break;
-	swapout_size = (ssize_t) (mem->inmem_hi - mem->swapout.queue_offset);
-	if (e->store_status == STORE_PENDING)
-	    if (swapout_size < SM_PAGE_SIZE)
-		break;
-    } while (swapout_size > 0);
-    if (mem->swapout.sio == NULL)
+    doPages(e);
+    if (NULL == mem->swapout.sio.getRaw())
 	/* oops, we're not swapping out any more */
 	return;
     if (e->store_status == STORE_OK) {
@@ -278,7 +251,7 @@ storeSwapOut(StoreEntry * e)
 	 * to the filesystem at this point because storeSwapOut() is
 	 * not going to be called again for this entry.
 	 */
-	assert(mem->inmem_hi == mem->swapout.queue_offset);
+	assert(mem->endOffset() == mem->swapout.queue_offset);
 	storeSwapOutFileClose(e);
     }
 }
@@ -335,31 +308,6 @@ storeSwapOutFileClosed(void *data, int errflag, storeIOState * sio)
     storeUnlockObject(e);
 }
 
-/*
- * How much of the object data is on the disk?
- */
-static off_t
-storeSwapOutObjectBytesOnDisk(const MemObject * mem)
-{
-    /*
-     * NOTE: offset() represents the disk file size,
-     * not the amount of object data on disk.
-     * 
-     * If we don't have at least 'swap_hdr_sz' bytes
-     * then none of the object data is on disk.
-     *
-     * This should still be safe if swap_hdr_sz == 0,
-     * meaning we haven't even opened the swapout file
-     * yet.
-     */
-    if (mem->swapout.sio == NULL)
-	return 0;
-    off_t nwritten = mem->swapout.sio->offset();
-    if (nwritten <= (off_t)mem->swap_hdr_sz)
-	return 0;
-    return nwritten - mem->swap_hdr_sz;
-}
-
 /*
  * Is this entry a candidate for writing to disk?
  */
@@ -374,13 +322,19 @@ storeSwapOutAble(const StoreEntry * e)
     /*
      * If there are DISK clients, we must write to disk
      * even if its not cachable
+     * RBC: Surely we should not create disk client on non cacheable objects?
+     * therefore this should be an assert?
      */
     for (node = e->mem_obj->clients.head; node; node = node->next) {
-	if (((store_client *) node->data)->type == STORE_DISK_CLIENT)
+	if (((store_client *) node->data)->getType() == STORE_DISK_CLIENT)
 	    return 1;
     }
     /* Don't pollute the disk with icons and other special entries */
     if (EBIT_TEST(e->flags, ENTRY_SPECIAL))
 	return 0;
-    return EBIT_TEST(e->flags, ENTRY_CACHABLE);
+    if (!EBIT_TEST(e->flags, ENTRY_CACHABLE))
+	return 0;
+    if (!e->mem_obj->isContiguous())
+	return 0;
+    return 1;
 }
diff --git a/src/structs.h b/src/structs.h
index 1f47584df9..96d88690c0 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -1,6 +1,6 @@
 
 /*
- * $Id: structs.h,v 1.441 2002/12/27 10:26:34 robertc Exp $
+ * $Id: structs.h,v 1.442 2003/01/23 00:37:27 robertc Exp $
  *
  *
  * SQUID Web Proxy Cache          http://www.squid-cache.org/
@@ -110,12 +110,6 @@ struct _acl_arp_data {
 
 #endif
 
-struct _String {
-    /* never reference these directly! */
-    unsigned short int size;	/* buffer size; 64K limit */
-    unsigned short int len;	/* current length  */
-    char *buf;
-};
 
 struct _header_mangler {
     acl_access *access_list;
@@ -692,52 +686,6 @@ struct _fde_disk {
     off_t offset;
 };
 
-struct _fde {
-    unsigned int type;
-    u_short local_port;
-    u_short remote_port;
-    struct in_addr local_addr;
-    unsigned char tos;
-    char ipaddr[16];		/* dotted decimal address of peer */
-    char desc[FD_DESC_SZ];
-    struct {
-	unsigned int open:1;
-	unsigned int close_request:1;
-	unsigned int write_daemon:1;
-	unsigned int closing:1;
-	unsigned int socket_eof:1;
-	unsigned int nolinger:1;
-	unsigned int nonblocking:1;
-	unsigned int ipc:1;
-	unsigned int called_connect:1;
-	unsigned int nodelay:1;
-	unsigned int close_on_exec:1;
-	unsigned int read_pending:1;
-    } flags;
-    int bytes_read;
-    int bytes_written;
-    int uses;			/* ie # req's over persistent conn */
-    struct _fde_disk disk;
-    PF *read_handler;
-    void *read_data;
-    PF *write_handler;
-    void *write_data;
-    PF *timeout_handler;
-    time_t timeout;
-    void *timeout_data;
-    void *lifetime_data;
-    close_handler *closeHandler;	/* linked list */
-    DEFER *defer_check;		/* check if we should defer read */
-    void *defer_data;
-    CommWriteStateData *rwstate;	/* State data for comm_write */
-    READ_HANDLER *read_method;
-    WRITE_HANDLER *write_method;
-#if USE_SSL
-    SSL *ssl;
-    int ssl_shutdown:1;
-#endif
-};
-
 struct _fileMap {
     int max_n_files;
     int n_files_in_map;
@@ -746,19 +694,6 @@ struct _fileMap {
     unsigned long *file_map;
 };
 
-/* auto-growing memory-resident buffer with printf interface */
-/* note: when updating this struct, update MemBufNULL #define */
-struct _MemBuf {
-    /* public, read-only */
-    char *buf;
-    mb_size_t size;		/* used space, does not count 0-terminator */
-
-    /* private, stay away; use interface function instead */
-    mb_size_t max_capacity;	/* when grows: assert(new_capacity <= max_capacity) */
-    mb_size_t capacity;		/* allocated space */
-    unsigned stolen:1;		/* the buffer has been stolen for use by someone else */
-};
-
 /* see Packer.c for description */
 struct _Packer {
     /* protected, use interface functions instead */
@@ -779,11 +714,13 @@ struct _HttpStatusLine {
  * Note: HttpBody is used only for messages with a small content that is
  * known a priory (e.g., error messages).
  */
+#include "MemBuf.h"
 struct _HttpBody {
     /* private */
     MemBuf mb;
 };
 
+#include "String.h"
 /* http header extention field */
 struct _HttpHdrExtField {
     String name;		/* field-name  from HTTP/1.1 (no column after name) */
@@ -798,26 +735,6 @@ struct _HttpHdrCc {
     int max_stale;
 };
 
-/* http byte-range-spec */
-struct _HttpHdrRangeSpec {
-    ssize_t offset;
-    ssize_t length;
-};
-
-/* There may be more than one byte range specified in the request.
- * This object holds all range specs in order of their appearence
- * in the request because we SHOULD preserve that order.
- */
-struct _HttpHdrRange {
-    Stack specs;
-};
-
-/* http content-range header field */
-struct _HttpHdrContRange {
-    HttpHdrRangeSpec spec;
-    ssize_t elength;		/* entity length, not content length */
-};
-
 /* some fields can hold either time or etag specs (e.g. If-Range) */
 struct _TimeOrTag {
     ETag tag;			/* entity tag */
@@ -825,15 +742,6 @@ struct _TimeOrTag {
     int valid;			/* true if struct is usable */
 };
 
-/* data for iterating thru range specs */
-struct _HttpHdrRangeIter {
-    HttpHdrRangePos pos;
-    const HttpHdrRangeSpec *spec;	/* current spec at pos */
-    ssize_t debt_size;		/* bytes left to send from the current spec */
-    ssize_t prefix_size;	/* the size of the incoming HTTP msg prefix */
-    String boundary;		/* boundary for multipart responses */
-};
-
 /* per field statistics */
 struct _HttpHeaderFieldStat {
     int aliveCount;		/* created but not destroyed (count) */
@@ -865,6 +773,7 @@ struct _HttpHeader {
     int len;			/* length when packed, not counting terminating '\0' */
 };
 
+class HttpHdrContRange;
 struct _HttpReply {
     /* unsupported, writable, may disappear/change in the future */
     int hdr_sz;			/* sums _stored_ status-line, headers, and  */
@@ -893,6 +802,7 @@ struct _http_state_flags {
     unsigned int proxying:1;
     unsigned int keepalive:1;
     unsigned int only_if_cached:1;
+    unsigned int headers_pushed:1;
     unsigned int front_end_https:2;
 };
 
@@ -953,38 +863,6 @@ struct _AccessLogEntry {
     HierarchyLogEntry hier;
 };
 
-struct _clientHttpRequest {
-    ConnStateData *conn;
-    request_t *request;		/* Parsed URL ... */
-    char *uri;
-    char *log_uri;
-    struct {
-	off_t offset;
-	size_t size;
-	size_t headers_sz;
-    } out;
-    HttpHdrRangeIter range_iter;	/* data for iterating thru range specs */
-    size_t req_sz;		/* raw request size on input, not current request size */
-    StoreEntry *entry;
-    StoreEntry *old_entry;
-    log_type logType;
-    struct timeval start;
-    http_version_t http_ver;
-    AccessLogEntry al;
-    struct {
-	unsigned int accel:1;
-	unsigned int internal:1;
-	unsigned int done_copying:1;
-	unsigned int purging:1;
-    } flags;
-    struct {
-	http_status status;
-	char *location;
-    } redirect;
-    dlink_node active;
-    dlink_list client_stream;
-};
-
 struct _ConnStateData {
     int fd;
     struct {
@@ -1321,18 +1199,6 @@ struct _iostats {
     } Http, Ftp, Gopher, Wais;
 };
 
-struct _mem_node {
-    char data[SM_PAGE_SIZE];
-    int len;
-    mem_node *next;
-};
-
-struct _mem_hdr {
-    mem_node *head;
-    mem_node *tail;
-    int origin_offset;
-};
-
 /* Removal policies */
 
 struct _RemovalPolicyNode {
@@ -1367,45 +1233,6 @@ struct _RemovalPurgeWalker {
     void (*Done) (RemovalPurgeWalker * walker);
 };
 
-/* TODO: Move this include and the memobject header to another file
- * - see the fix_ranges branch 
- */
-#include "StoreIOState.h"
-/* This structure can be freed while object is purged out from memory */
-struct _MemObject {
-    method_t method;
-    char *url;
-    mem_hdr data_hdr;
-    off_t inmem_hi;
-    off_t inmem_lo;
-    dlink_list clients;
-    int nclients;
-    struct {
-	off_t queue_offset;	/* relative to in-mem data */
-	mem_node *memnode;	/* which node we're currently paging out */
-	StoreIOState::Pointer sio;
-    } swapout;
-    HttpReply *reply;
-    request_t *request;
-    struct timeval start_ping;
-    IRCB *ping_reply_callback;
-    void *ircb_data;
-    int fd;			/* FD of client creating this entry */
-    struct {
-	STABH *callback;
-	void *data;
-    } abort;
-    char *log_url;
-    RemovalPolicyNode repl;
-    int id;
-    ssize_t object_sz;
-    size_t swap_hdr_sz;
-#if URL_CHECKSUM_DEBUG
-    unsigned int chksum;
-#endif
-    const char *vary_headers;
-};
-
 /* To hard to pull this into another file just yet.
  * SO, we stop globals.c seeing it 
  */
@@ -1448,8 +1275,11 @@ struct _link_list {
     struct _link_list *next;
 };
 
+class HttpHdrRange;
+class request_t {
+public:
+    bool multipartRangeRequest() const;
 
-struct _request_t {
     method_t method;
     protocol_t protocol;
     char login[MAX_LOGIN_SZ];
@@ -1685,14 +1515,6 @@ struct _HttpHeaderStat {
     int busyDestroyedCount;
 };
 
-
-struct _tlv {
-    char type;
-    int length;
-    void *value;
-    tlv *next;
-};
-
 /*
  * Do we need to have the dirn in here? I don't think so, since we already
  * know the dirn .. 
diff --git a/src/test-ellipses.pl b/src/test-ellipses.pl
index a72484beea..3f2d663bba 100755
--- a/src/test-ellipses.pl
+++ b/src/test-ellipses.pl
@@ -1,7 +1,7 @@
 #!/usr/local/bin/perl -w
 use strict;
 
-# $Id: test-ellipses.pl,v 1.1 1998/03/09 07:32:53 rousskov Exp $
+# $Id: test-ellipses.pl,v 1.2 2003/01/23 00:37:27 robertc Exp $
 
 #
 # Replaces printf-like function calls with printf and compiles with gcc -Wall
diff --git a/src/test_cache_digest.cc b/src/test_cache_digest.cc
index f6aaf9597f..9560ae2149 100644
--- a/src/test_cache_digest.cc
+++ b/src/test_cache_digest.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: test_cache_digest.cc,v 1.28 2002/10/13 20:35:05 robertc Exp $
+ * $Id: test_cache_digest.cc,v 1.29 2003/01/23 00:37:27 robertc Exp $
  *
  * AUTHOR: Alex Rousskov
  *
diff --git a/src/tools.cc b/src/tools.cc
index a925c72878..c9f9878bf4 100644
--- a/src/tools.cc
+++ b/src/tools.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: tools.cc,v 1.229 2003/01/17 08:21:51 robertc Exp $
+ * $Id: tools.cc,v 1.230 2003/01/23 00:37:27 robertc Exp $
  *
  * DEBUG: section 21    Misc Functions
  * AUTHOR: Harvest Derived
@@ -34,6 +34,7 @@
  */
 
 #include "squid.h"
+#include "fde.h"
 
 #define DEAD_MSG "\
 The Squid Cache (version %s) died.\n\
diff --git a/src/tunnel.cc b/src/tunnel.cc
index a549e5d318..46961f1dd9 100644
--- a/src/tunnel.cc
+++ b/src/tunnel.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: tunnel.cc,v 1.131 2002/12/05 15:02:24 hno Exp $
+ * $Id: tunnel.cc,v 1.132 2003/01/23 00:37:25 robertc Exp $
  *
  * DEBUG: section 26    Secure Sockets Layer Proxy
  * AUTHOR: Duane Wessels
@@ -34,7 +34,10 @@
  */
 
 #include "squid.h"
+#include "HttpRequest.h"
+#include "fde.h"
 #include "comm.h"
+#include "client_side_request.h"
 
 typedef struct {
     char *url;
diff --git a/src/typedefs.h b/src/typedefs.h
index 501df6bb13..1cb6b9093d 100644
--- a/src/typedefs.h
+++ b/src/typedefs.h
@@ -1,6 +1,6 @@
 
 /*
- * $Id: typedefs.h,v 1.145 2003/01/17 05:49:35 robertc Exp $
+ * $Id: typedefs.h,v 1.146 2003/01/23 00:37:27 robertc Exp $
  *
  *
  * SQUID Web Proxy Cache          http://www.squid-cache.org/
@@ -31,6 +31,8 @@
  *
  */
 
+#include "squid.h"
+
 #ifndef SQUID_TYPEDEFS_H
 #define SQUID_TYPEDEFS_H
 
@@ -88,7 +90,7 @@ typedef struct _dread_ctrl dread_ctrl;
 typedef struct _dnsserver_t dnsserver_t;
 typedef struct _dwrite_q dwrite_q;
 typedef struct _ETag ETag;
-typedef struct _fde fde;
+class fde;
 typedef struct _fileMap fileMap;
 typedef struct _HttpReply http_reply;
 typedef struct _HttpStatusLine HttpStatusLine;
@@ -96,19 +98,14 @@ typedef struct _HttpHeaderFieldAttrs HttpHeaderFieldAttrs;
 typedef struct _HttpHeaderFieldInfo HttpHeaderFieldInfo;
 typedef struct _HttpHeader HttpHeader;
 typedef struct _HttpHdrCc HttpHdrCc;
-typedef struct _HttpHdrRangeSpec HttpHdrRangeSpec;
-typedef struct _HttpHdrRange HttpHdrRange;
-typedef struct _HttpHdrRangeIter HttpHdrRangeIter;
 typedef struct _HttpHdrSc HttpHdrSc;
 typedef struct _HttpHdrScTarget HttpHdrScTarget;
-typedef struct _HttpHdrContRange HttpHdrContRange;
 typedef struct _TimeOrTag TimeOrTag;
 typedef struct _HttpHeaderEntry HttpHeaderEntry;
 typedef struct _HttpHeaderFieldStat HttpHeaderFieldStat;
 typedef struct _HttpHeaderStat HttpHeaderStat;
 typedef struct _HttpBody HttpBody;
 typedef struct _HttpReply HttpReply;
-typedef struct _clientHttpRequest clientHttpRequest;
 typedef struct _ConnStateData ConnStateData;
 typedef struct _ConnCloseHelperData ConnCloseHelperData;
 typedef struct _ipcache_addrs ipcache_addrs;
@@ -131,11 +128,8 @@ typedef struct _pingerReplyData pingerReplyData;
 typedef struct _icp_common_t icp_common_t;
 typedef struct _Meta_data Meta_data;
 typedef struct _iostats iostats;
-typedef struct _MemBuf MemBuf;
-typedef struct _mem_node mem_node;
-typedef struct _mem_hdr mem_hdr;
-typedef struct _store_client store_client;
-typedef struct _MemObject MemObject;
+class MemBuf;
+class store_client;
 class StoreEntry;
 class SwapDir;
 typedef struct _helper_flags helper_flags;
@@ -143,7 +137,7 @@ typedef struct _helper_stateful_flags helper_stateful_flags;
 typedef struct _http_state_flags http_state_flags;
 typedef struct _header_mangler header_mangler;
 typedef struct _body_size body_size;
-typedef struct _request_t request_t;
+class request_t;
 typedef struct _AccessLogEntry AccessLogEntry;
 typedef struct _cachemgr_passwd cachemgr_passwd;
 typedef struct _refresh_t refresh_t;
@@ -152,12 +146,10 @@ typedef struct _ErrorState ErrorState;
 typedef struct _dlink_node dlink_node;
 typedef struct _dlink_list dlink_list;
 typedef struct _StatCounters StatCounters;
-typedef struct _tlv tlv;
 typedef struct _storeSwapLogData storeSwapLogData;
 typedef struct _authConfig authConfig;
 typedef struct _cacheSwap cacheSwap;
 typedef struct _StatHist StatHist;
-typedef struct _String String;
 typedef struct _ClientInfo ClientInfo;
 typedef struct _cd_guess_stats cd_guess_stats;
 typedef struct _CacheDigest CacheDigest;
@@ -269,9 +261,6 @@ typedef int Ctx;
 /* in case we want to change it later */
 typedef ssize_t mb_size_t;
 
-/* iteration for HttpHdrRange */
-typedef int HttpHdrRangePos;
-
 /*iteration for headers; use HttpHeaderPos as opaque type, do not interpret */
 typedef ssize_t HttpHeaderPos;
 
diff --git a/src/ufscommon.cc b/src/ufscommon.cc
index 31b3d10239..409821943a 100644
--- a/src/ufscommon.cc
+++ b/src/ufscommon.cc
@@ -1,5 +1,5 @@
 /*
- * $Id: ufscommon.cc,v 1.6 2003/01/09 11:49:35 hno Exp $
+ * $Id: ufscommon.cc,v 1.7 2003/01/23 00:37:27 robertc Exp $
  *
  * DEBUG: section 47    Store Directory Routines
  * AUTHOR: Duane Wessels
@@ -34,6 +34,10 @@
 
 #include "ufscommon.h"
 #include "Store.h"
+#include "fde.h"
+#include "StoreMeta.h"
+#include "Generic.h"
+#include "StoreMetaUnpacker.h"
 #include "RefCount.h"
 
 CBDATA_CLASS_INIT(RebuildState);
@@ -79,6 +83,27 @@ RebuildState::RebuildFromDirectory(void *data)
     rb->rebuildFromDirectory();
 }
 
+struct InitStoreEntry : public unary_function
+{
+    InitStoreEntry(StoreEntry *anEntry, cache_key *aKey):what(anEntry),index(aKey){}
+    void operator()(StoreMeta const &x) {
+	    switch (x.getType()) {
+	    case STORE_META_KEY:
+		assert(x.length == MD5_DIGEST_CHARS);
+		xmemcpy(index, x.value, MD5_DIGEST_CHARS);
+		break;
+	    case STORE_META_STD:
+		assert(x.length == STORE_HDR_METASIZE);
+		xmemcpy(&what->timestamp, x.value, STORE_HDR_METASIZE);
+		break;
+	    default:
+		break;
+	    }
+    }
+    StoreEntry *what;
+    cache_key *index;
+};
+
 void
 RebuildState::rebuildFromDirectory()
 {
@@ -89,8 +114,7 @@ RebuildState::rebuildFromDirectory()
     struct stat sb;
     int swap_hdr_len;
     int fd = -1;
-    tlv *tlv_list;
-    tlv *t;
+    StoreMeta *tlv_list;
     assert(this != NULL);
     debug(47, 3) ("commonUfsDirRebuildFromDirectory: DIR #%d\n", sd->index);
     for (int count = 0; count < speed; count++) {
@@ -121,7 +145,8 @@ RebuildState::rebuildFromDirectory()
 		sd->path, counts.scancount);
 	debug(47, 9) ("file_in: fd=%d %08X\n", fd, filn);
 	statCounter.syscalls.disk.reads++;
-	if (FD_READ_METHOD(fd, hdr_buf, SM_PAGE_SIZE) < 0) {
+	int len;
+	if ((len = FD_READ_METHOD(fd, hdr_buf, SM_PAGE_SIZE)) < 0) {
 	    debug(47, 1) ("commonUfsDirRebuildFromDirectory: read(FD %d): %s\n",
 		fd, xstrerror());
 	    file_close(fd);
@@ -137,7 +162,14 @@ RebuildState::rebuildFromDirectory()
 	if (sb.st_size == 0)
 	    continue;
 #endif
-	tlv_list = storeSwapMetaUnpack(hdr_buf, &swap_hdr_len);
+        StoreMetaUnpacker aBuilder(hdr_buf, len, &swap_hdr_len);
+	if (!aBuilder.isBufferSane()) {
+	    debug(47, 1) ("commonUfsDirRebuildFromDirectory: Swap data buffer length is not sane.\n");
+	    /* XXX shouldn't this be a call to commonUfsUnlink ? */
+	    sd->unlinkFile ( filn);
+	    continue;
+	}
+        tlv_list = aBuilder.createStoreMeta ();
 	if (tlv_list == NULL) {
 	    debug(47, 1) ("commonUfsDirRebuildFromDirectory: failed to get meta data\n");
 	    /* XXX shouldn't this be a call to commonUfsUnlink ? */
@@ -147,20 +179,8 @@ RebuildState::rebuildFromDirectory()
 	debug(47, 3) ("commonUfsDirRebuildFromDirectory: successful swap meta unpacking\n");
 	memset(key, '\0', MD5_DIGEST_CHARS);
 	memset(&tmpe, '\0', sizeof(StoreEntry));
-	for (t = tlv_list; t; t = t->next) {
-	    switch (t->type) {
-	    case STORE_META_KEY:
-		assert(t->length == MD5_DIGEST_CHARS);
-		xmemcpy(key, t->value, MD5_DIGEST_CHARS);
-		break;
-	    case STORE_META_STD:
-		assert(t->length == STORE_HDR_METASIZE);
-		xmemcpy(&tmpe.timestamp, t->value, STORE_HDR_METASIZE);
-		break;
-	    default:
-		break;
-	    }
-	}
+	InitStoreEntry visitor(&tmpe, key);
+	for_each(*tlv_list, visitor);
 	storeSwapTLVFree(tlv_list);
 	tlv_list = NULL;
 	if (storeKeyNull(key)) {
@@ -473,3 +493,7 @@ RebuildState::getNextFile(sfileno * filn_p, int *size)
     *filn_p = fn;
     return fd;
 }
+
+#ifndef _USE_INLINE_
+#include "ufscommon.cci"
+#endif
diff --git a/src/ufscommon.cci b/src/ufscommon.cci
new file mode 100644
index 0000000000..406dbd087b
--- /dev/null
+++ b/src/ufscommon.cci
@@ -0,0 +1,34 @@
+/*
+ * $Id: ufscommon.cci,v 1.1 2003/01/23 00:37:27 robertc Exp $
+ *
+ * DEBUG: section 47    Store Directory Routines
+ * AUTHOR: Duane Wessels
+ *
+ * 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.
+ *
+ */
+
diff --git a/src/ufscommon.h b/src/ufscommon.h
index 6d920ad04c..e7a8138d50 100644
--- a/src/ufscommon.h
+++ b/src/ufscommon.h
@@ -1,6 +1,6 @@
 
 /*
- * $Id: ufscommon.h,v 1.2 2002/12/27 10:26:34 robertc Exp $
+ * $Id: ufscommon.h,v 1.3 2003/01/23 00:37:27 robertc Exp $
  *
  * SQUID Web Proxy Cache          http://www.squid-cache.org/
  * ----------------------------------------------------------
@@ -185,7 +185,7 @@ class UFSStoreState : public storeIOState, public IORequestor {
     bool reading;
     bool writing;
     void read_(char *buf, size_t size, off_t offset, STRCB * callback, void *callback_data);
-    void write(char *buf, size_t size, off_t offset, FREE * free_func);
+    void write(char const *buf, size_t size, off_t offset, FREE * free_func);
   protected:
     class _queued_read {
       public:
@@ -203,7 +203,7 @@ class UFSStoreState : public storeIOState, public IORequestor {
       public:
 	void *operator new(size_t);
 	void operator delete (void *);
-	char *buf;
+	char const *buf;
 	size_t size;
 	off_t offset;
 	FREE *free_func;
@@ -213,7 +213,7 @@ class UFSStoreState : public storeIOState, public IORequestor {
     link_list *pending_reads;
     link_list *pending_writes;
     void queueRead(char *, size_t, off_t, STRCB *, void *);
-    void queueWrite(char *, size_t, off_t, FREE *);
+    void queueWrite(char const *, size_t, off_t, FREE *);
     bool kickReadQueue();
     bool kickWriteQueue();
     char *read_buf;
@@ -254,5 +254,8 @@ private:
     int getNextFile(sfileno *, int *size);
 };
 
+#ifdef _USE_INLINE_
+#include "ufscommon.cci"
+#endif
 
 #endif /* SQUID_UFSCOMMON_H */
diff --git a/src/ufsdump.cc b/src/ufsdump.cc
new file mode 100644
index 0000000000..454fdbb4a3
--- /dev/null
+++ b/src/ufsdump.cc
@@ -0,0 +1,128 @@
+
+/*
+ * $Id: ufsdump.cc,v 1.1 2003/01/23 00:37:27 robertc Exp $
+ *
+ * DEBUG: section 0     UFS Store Dump
+ * AUTHOR: Robert Collins
+ *
+ * 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 "StoreMeta.h"
+#include "StoreMetaUnpacker.h"
+#include "Store.h"
+#include "Generic.h"
+#undef assert
+#undef malloc
+#undef free
+#include 
+#include 
+
+void shut_down(int)
+{}
+
+
+struct DumpStoreMeta : public unary_function
+{
+    DumpStoreMeta(){}
+
+    void operator()(StoreMeta const &x)
+    {
+        switch (x.getType()) {
+            case STORE_META_KEY:
+	        std::cout << "MD5: " << storeKeyText((const cache_key *)x.value) << std::endl;
+                break;
+            case STORE_META_STD:
+                break;
+            case STORE_META_URL:
+                assert (((char *)x.value)[x.length - 1] == 0);
+                std::cout << "URL: " << (char *)x.value << std::endl;
+            default:
+                break;
+            }
+    }
+};
+
+int
+main(int argc, char *argv[])
+{
+    int fd = -1;
+    StoreMeta *metadata = NULL;
+
+    try {
+        if (argc != 2)
+            throw std::runtime_error("No filename provided");
+
+        fd = open (argv[1], O_RDONLY | O_BINARY);
+
+        if (fd < 0)
+            throw std::runtime_error("Could not open file.");
+
+        char tempbuf[SM_PAGE_SIZE];
+
+        int len = read(fd, tempbuf, SM_PAGE_SIZE);
+
+        if (len < 0)
+            throw std::runtime_error("Could not read header into memory.");
+
+        close (fd);
+
+        fd = -1;
+
+        int hdr_len;
+
+        StoreMetaUnpacker aBuilder(tempbuf, len, &hdr_len);
+
+        metadata = aBuilder.createStoreMeta ();
+
+        StoreEntry anEntry;
+
+        cache_key key[MD5_DIGEST_CHARS];
+
+        memset(key, '\0', MD5_DIGEST_CHARS);
+
+        memset(&anEntry, '\0', sizeof(StoreEntry));
+
+	DumpStoreMeta dumper;
+	for_each(*metadata, dumper);
+
+
+        return 0;
+    } catch (std::runtime_error error) {
+        std::cout << "Failed : " << error.what() << std::endl;
+
+        if (fd >= 0)
+            close(fd);
+
+        if (metadata)
+            StoreMeta::FreeList(&metadata);
+
+        return 1;
+    }
+}
diff --git a/src/unlinkd.cc b/src/unlinkd.cc
index 1df3167201..46f9aefd42 100644
--- a/src/unlinkd.cc
+++ b/src/unlinkd.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: unlinkd.cc,v 1.48 2002/07/21 00:25:44 hno Exp $
+ * $Id: unlinkd.cc,v 1.49 2003/01/23 00:37:29 robertc Exp $
  *
  * DEBUG: section 2     Unlink Daemon
  * AUTHOR: Duane Wessels
@@ -69,6 +69,8 @@ main(int argc, char *argv[])
 
 #else /* UNLINK_DAEMON */
 
+#include "fde.h"
+
 /* This code gets linked to Squid */
 
 static int unlinkd_wfd = -1;
diff --git a/src/url.cc b/src/url.cc
index 93c153fb0f..1b381dc649 100644
--- a/src/url.cc
+++ b/src/url.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: url.cc,v 1.141 2003/01/18 15:00:39 hno Exp $
+ * $Id: url.cc,v 1.142 2003/01/23 00:37:29 robertc Exp $
  *
  * DEBUG: section 23    URL Parsing
  * AUTHOR: Duane Wessels
@@ -34,6 +34,7 @@
  */
 
 #include "squid.h"
+#include "HttpRequest.h"
 
 const char *RequestMethodStr[] =
 {
@@ -318,16 +319,16 @@ urlParse(method_t method, char *url)
 	return NULL;
     }
 #endif
-    if (Config.appendDomain && !strchr(host, '.'))
-	strncat(host, Config.appendDomain, SQUIDHOSTNAMELEN);
+#if DONT_DO_THIS_IT_BREAKS_SEMANTIC_TRANSPARENCY
     /* remove trailing dots from hostnames */
     while ((l = strlen(host)) > 0 && host[--l] == '.')
 	host[l] = '\0';
-    /* reject duplicate or leading dots */
-    if (strstr(host, "..") || *host == '.') {
-	debug(23, 1) ("urlParse: Illegal hostname '%s'\n", host);
-	return NULL;
-    }
+    /* remove duplicate dots */
+    while ((t = strstr(host, "..")))
+	xmemmove(t, t + 1, strlen(t));
+#endif
+    if (Config.appendDomain && !strchr(host, '.'))
+	strncat(host, Config.appendDomain, SQUIDHOSTNAMELEN);
     if (port < 1 || port > 65535) {
 	debug(23, 3) ("urlParse: Invalid port '%d'\n", port);
 	return NULL;
@@ -387,7 +388,7 @@ urlCanonical(request_t * request)
     if (request->canonical)
 	return request->canonical;
     if (request->protocol == PROTO_URN) {
-	snprintf(urlbuf, MAX_URL, "urn:%s", strBuf(request->urlpath));
+	snprintf(urlbuf, MAX_URL, "urn:%s", request->urlpath.buf());
     } else {
 	switch (request->method) {
 	case METHOD_CONNECT:
@@ -403,7 +404,7 @@ urlCanonical(request_t * request)
 		*request->login ? "@" : null_string,
 		request->host,
 		portbuf,
-		strBuf(request->urlpath));
+		request->urlpath.buf());
 	    break;
 	}
     }
@@ -418,7 +419,7 @@ urlCanonicalClean(const request_t * request)
     LOCAL_ARRAY(char, loginbuf, MAX_LOGIN_SZ + 1);
     char *t;
     if (request->protocol == PROTO_URN) {
-	snprintf(buf, MAX_URL, "urn:%s", strBuf(request->urlpath));
+	snprintf(buf, MAX_URL, "urn:%s", request->urlpath.buf());
     } else {
 	switch (request->method) {
 	case METHOD_CONNECT:
@@ -440,7 +441,7 @@ urlCanonicalClean(const request_t * request)
 		loginbuf,
 		request->host,
 		portbuf,
-		strBuf(request->urlpath));
+		request->urlpath.buf());
 	    /*
 	     * strip arguments AFTER a question-mark
 	     */
diff --git a/src/urn.cc b/src/urn.cc
index bd0f37e40e..c110ad5591 100644
--- a/src/urn.cc
+++ b/src/urn.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: urn.cc,v 1.80 2003/01/17 05:49:35 robertc Exp $
+ * $Id: urn.cc,v 1.81 2003/01/23 00:37:29 robertc Exp $
  *
  * DEBUG: section 52    URN Parsing
  * AUTHOR: Kostas Anagnostakis
@@ -36,6 +36,8 @@
 #include "squid.h"
 #include "StoreClient.h"
 #include "Store.h"
+#include "HttpReply.h"
+#include "HttpRequest.h"
 
 #define	URN_REQBUF_SZ	4096
 
@@ -146,10 +148,10 @@ UrnState::getHost (String &urlpath)
     char const *t;
     if ((t = strChr(urlpath, ':')) != NULL) {
 	strSet(urlpath, t, '\0');
-	result = xstrdup(strBuf(urlpath));
+	result = xstrdup(urlpath.buf());
 	strSet(urlpath, t, ':');
     } else {
-	result = xstrdup(strBuf(urlpath));
+	result = xstrdup(urlpath.buf());
     }
     return result;
 }
@@ -157,14 +159,14 @@ UrnState::getHost (String &urlpath)
 bool
 UrnState::RequestNeedsMenu(request_t *r)
 {
-    return strncasecmp(strBuf(r->urlpath), "menu.", 5) == 0;
+    return strncasecmp(r->urlpath.buf(), "menu.", 5) == 0;
 }
 
 void
 UrnState::updateRequestURL(request_t *r, char const *newPath)
 {
      char *new_path = xstrdup (newPath);
-     stringReset(&r->urlpath, new_path);
+     r->urlpath = new_path;
      xfree(new_path);
 }
 
@@ -173,7 +175,7 @@ UrnState::createUriResRequest (String &uri)
 {
     LOCAL_ARRAY(char, local_urlres, 4096);
     char *host = getHost (uri);
-    snprintf(local_urlres, 4096, "http://%s/uri-res/N2L?urn:%s", host, strBuf(uri));
+    snprintf(local_urlres, 4096, "http://%s/uri-res/N2L?urn:%s", host, uri.buf());
     safe_free (host);
     safe_free (urlres);
     urlres = xstrdup (local_urlres);
@@ -184,7 +186,7 @@ void
 UrnState::setUriResFromRequest(request_t *r)
 {
     if (RequestNeedsMenu(r)) {
-	updateRequestURL(r, strBuf(r->urlpath) + 5);
+	updateRequestURL(r, r->urlpath.buf() + 5);
 	flags.force_menu = 1;
     }
  
@@ -227,7 +229,7 @@ UrnState::created(StoreEntry *newEntry)
 	sc = storeClientListAdd(urlres_e, this);
     }
     reqofs = 0;
-    StoreIOBuffer tempBuffer = EMPTYIOBUFFER;
+    StoreIOBuffer tempBuffer;
     tempBuffer.offset = reqofs;
     tempBuffer.length = URN_REQBUF_SZ;
     tempBuffer.data = reqbuf;
@@ -259,6 +261,7 @@ url_entry_sort(const void *A, const void *B)
 	return u1->rtt - u2->rtt;
 }
 
+/* TODO: use the clientStream support for this */
 static void
 urnHandleReply(void *data, StoreIOBuffer result)
 {
@@ -315,18 +318,21 @@ urnHandleReply(void *data, StoreIOBuffer result)
 	goto error;
     }
     s = buf + k;
-    assert(urlres_e->mem_obj->reply);
-    httpReplyParse(urlres_e->mem_obj->reply, buf, k);
-    debug(52, 3) ("mem->reply exists, code=%d.\n",
-	urlres_e->mem_obj->reply->sline.status);
-    if (urlres_e->mem_obj->reply->sline.status != HTTP_OK) {
+    assert(urlres_e->getReply());
+    rep = httpReplyCreate ();
+    httpReplyParse(rep, buf, k);
+    debug(52, 3) ("reply exists, code=%d.\n",
+       rep->sline.status);
+    if (rep->sline.status != HTTP_OK) {
 	debug(52, 3) ("urnHandleReply: failed.\n");
 	err = errorCon(ERR_URN_RESOLVE, HTTP_NOT_FOUND);
 	err->request = requestLink(urnState->request);
 	err->url = xstrdup(storeUrl(e));
 	errorAppendEntry(e, err);
+	httpReplyDestroy(rep);
 	goto error;
     }
+    httpReplyDestroy(rep);
     while (xisspace(*s))
 	s++;
     urls = urnParseReply(s, urnState->request->method);
@@ -370,8 +376,7 @@ urnHandleReply(void *data, StoreIOBuffer result)
 	"Generated by %s@%s\n"
 	"\n",
 	full_appname_string, getMyHostname());
-    rep = e->mem_obj->reply;
-    httpReplyReset(rep);
+    rep = httpReplyCreate();
     httpBuildVersion(&version, 1, 0);
     httpReplySetHeaders(rep, version, HTTP_MOVED_TEMPORARILY, NULL,
 	"text/html", mb.size, 0, squid_curtime);
@@ -382,7 +387,7 @@ urnHandleReply(void *data, StoreIOBuffer result)
     }
     httpBodySet(&rep->body, &mb);
     httpReplySwapOut(rep, e);
-    storeComplete(e);
+    e->complete();
     for (i = 0; i < urlcnt; i++) {
 	safe_free(urls[i].url);
 	safe_free(urls[i].host);
diff --git a/src/useragent.cc b/src/useragent.cc
index ce211f3dd8..83e400d616 100644
--- a/src/useragent.cc
+++ b/src/useragent.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: useragent.cc,v 1.26 2001/07/16 21:35:05 wessels Exp $
+ * $Id: useragent.cc,v 1.27 2003/01/23 00:37:29 robertc Exp $
  *
  * DEBUG: section 40    User-Agent logging
  * AUTHOR: Joe Ramey 
diff --git a/src/wais.cc b/src/wais.cc
index 3d9d2984a3..5242c8f15d 100644
--- a/src/wais.cc
+++ b/src/wais.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: wais.cc,v 1.144 2002/10/21 14:00:03 adrian Exp $
+ * $Id: wais.cc,v 1.145 2003/01/23 00:37:29 robertc Exp $
  *
  * DEBUG: section 24    WAIS Relay
  * AUTHOR: Harvest Derived
@@ -35,8 +35,10 @@
 
 #include "squid.h"
 #include "Store.h"
+#include "HttpRequest.h"
 
-typedef struct {
+class WaisStateData {
+public:
     int fd;
     StoreEntry *entry;
     method_t method;
@@ -44,8 +46,9 @@ typedef struct {
     char url[MAX_URL];
     request_t *request;
     FwdState *fwd;
-    char buf[BUFSIZ]; 
-} WaisStateData;
+    char buf[BUFSIZ];
+    bool dataWritten;
+};
 
 static PF waisStateFree;
 static PF waisTimeout;
@@ -72,7 +75,7 @@ waisTimeout(int fd, void *data)
     StoreEntry *entry = waisState->entry;
     debug(24, 4) ("waisTimeout: FD %d: '%s'\n", fd, storeUrl(entry));
     if (entry->store_status == STORE_PENDING) {
-	if (entry->mem_obj->inmem_hi == 0) {
+	if (!waisState->dataWritten) {
 	    fwdFail(waisState->fwd,
 		errorCon(ERR_READ_TIMEOUT, HTTP_GATEWAY_TIMEOUT));
 	}
@@ -140,7 +143,7 @@ waisReadReply(int fd, char *buf, size_t len, comm_err_t flag, int xerrno, void *
 	    errorAppendEntry(entry, err);
 	    comm_close(fd);
 	}
-    } else if (flag == COMM_OK && len == 0 && entry->mem_obj->inmem_hi == 0) {
+    } else if (flag == COMM_OK && len == 0 && !waisState->dataWritten) {
 	ErrorState *err;
 	err = errorCon(ERR_ZERO_SIZE_OBJECT, HTTP_SERVICE_UNAVAILABLE);
 	err->xerrno = errno;
@@ -153,6 +156,7 @@ waisReadReply(int fd, char *buf, size_t len, comm_err_t flag, int xerrno, void *
 	fwdComplete(waisState->fwd);
 	comm_close(fd);
     } else {
+	waisState->dataWritten = 1;
 	storeAppend(entry, buf, len);
         comm_read(fd, waisState->buf, read_sz, waisReadReply, waisState);
     }
@@ -184,7 +188,7 @@ waisSendComplete(int fd, char *bufnotused, size_t size, comm_err_t errflag, void
     } else {
 	/* Schedule read reply. */
         comm_read(fd, waisState->buf, BUFSIZ, waisReadReply, waisState);
-	commSetDefer(fd, fwdCheckDeferRead, entry);
+	commSetDefer(fd, StoreEntry::CheckDeferRead, entry);
     }
 }
 
@@ -231,6 +235,7 @@ waisStart(FwdState * fwd)
     waisState->request_hdr = &request->header;
     waisState->fd = fd;
     waisState->entry = entry;
+    waisState->dataWritten = 0;
     xstrncpy(waisState->url, url, MAX_URL);
     waisState->request = requestLink(request);
     waisState->fwd = fwd;
diff --git a/src/wccp.cc b/src/wccp.cc
index 163c1ee625..0688265d28 100644
--- a/src/wccp.cc
+++ b/src/wccp.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: wccp.cc,v 1.31 2002/11/10 04:37:14 hno Exp $
+ * $Id: wccp.cc,v 1.32 2003/01/23 00:37:29 robertc Exp $
  *
  * DEBUG: section 80    WCCP Support
  * AUTHOR: Glenn Chisholm
diff --git a/src/whois.cc b/src/whois.cc
index c1d37b5180..92fcef80c9 100644
--- a/src/whois.cc
+++ b/src/whois.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: whois.cc,v 1.22 2002/10/21 15:21:52 adrian Exp $
+ * $Id: whois.cc,v 1.23 2003/01/23 00:37:29 robertc Exp $
  *
  * DEBUG: section 75    WHOIS protocol
  * AUTHOR: Duane Wessels, Kostas Anagnostakis
@@ -35,16 +35,21 @@
 
 #include "squid.h"
 #include "Store.h"
+#include "HttpReply.h"
 #include "comm.h"
 
 #define WHOIS_PORT 43
 
-typedef struct {
+class WhoisState {
+public:
+    void readReply (int fd, char *buf, size_t len, comm_err_t flag, int xerrno);
+    void setReplyToOK(StoreEntry *entry);
     StoreEntry *entry;
     request_t *request;
     FwdState *fwd;
     char buf[BUFSIZ];
-} WhoisState;
+    bool dataWritten;
+};
 
 static PF whoisClose;
 static PF whoisTimeout;
@@ -72,11 +77,12 @@ whoisStart(FwdState * fwd)
     p->request = fwd->request;
     p->entry = fwd->entry;
     p->fwd = fwd;
+    p->dataWritten = 0;
     storeLockObject(p->entry);
     comm_add_close_handler(fd, whoisClose, p);
-    l = strLen(p->request->urlpath) + 3;
+    l = p->request->urlpath.size() + 3;
     buf = (char *)xmalloc(l);
-    snprintf(buf, l, "%s\r\n", strBuf(p->request->urlpath) + 1);
+    snprintf(buf, l, "%s\r\n", p->request->urlpath.buf() + 1);
     comm_write(fd, buf, strlen(buf), whoisWriteComplete, p);
     comm_read(fd, p->buf, BUFSIZ, whoisReadReply, p);
     commSetTimeout(fd, Config.Timeout.read, whoisTimeout, p);
@@ -96,8 +102,22 @@ static void
 whoisReadReply(int fd, char *buf, size_t len, comm_err_t flag, int xerrno, void *data)
 {
     WhoisState *p = (WhoisState *)data;
-    StoreEntry *entry = p->entry;
-    MemObject *mem = entry->mem_obj;
+    p->readReply(fd, buf, len, flag, xerrno);
+}
+
+void
+WhoisState::setReplyToOK(StoreEntry *entry)
+{
+     HttpReply *reply = httpReplyCreate();
+     http_version_t version;
+     httpBuildVersion(&version, 1, 0);
+     httpReplySetHeaders(reply, version, HTTP_OK, NULL, NULL, 0, 0, -1);
+     storeEntryReplaceObject (entry, reply);
+}
+
+void
+WhoisState::readReply (int fd, char *buf, size_t len, comm_err_t flag, int xerrno)
+{
     int do_next_read = 0;
 
     /* Bail out early on COMM_ERR_CLOSING - close handlers will tidy up for us */
@@ -109,10 +129,12 @@ whoisReadReply(int fd, char *buf, size_t len, comm_err_t flag, int xerrno, void
     debug(75, 3) ("whoisReadReply: FD %d read %d bytes\n", fd, (int)len);
     debug(75, 5) ("{%s}\n", buf);
     if (flag == COMM_OK && len > 0) {
-	if (0 == mem->inmem_hi)
-	    mem->reply->sline.status = HTTP_OK;
+	if (!dataWritten)
+	    setReplyToOK(entry);
 	kb_incr(&statCounter.server.all.kbytes_in, len);
 	kb_incr(&statCounter.server.http.kbytes_in, len);
+	/* No range support, we always grab it all */
+	dataWritten = 1;
 	storeAppend(entry, buf, len);
         do_next_read = 1;
     } else if (flag != COMM_OK || len < 0) {
@@ -120,11 +142,11 @@ whoisReadReply(int fd, char *buf, size_t len, comm_err_t flag, int xerrno, void
 	    fd, xstrerror());
 	if (ignoreErrno(errno)) {
             do_next_read = 1;
-	} else if (mem->inmem_hi == 0) {
+	} else if (!dataWritten) {
 	    ErrorState *err;
 	    err = errorCon(ERR_READ_ERROR, HTTP_INTERNAL_SERVER_ERROR);
 	    err->xerrno = errno;
-	    fwdFail(p->fwd, err);
+	    fwdFail(fwd, err);
 	    comm_close(fd);
             do_next_read = 0;
 	} else {
@@ -136,13 +158,13 @@ whoisReadReply(int fd, char *buf, size_t len, comm_err_t flag, int xerrno, void
 	storeBufferFlush(entry);
 	if (!EBIT_TEST(entry->flags, RELEASE_REQUEST))
 	    storeSetPublicKey(entry);
-	fwdComplete(p->fwd);
+	fwdComplete(fwd);
 	debug(75, 3) ("whoisReadReply: Done: %s\n", storeUrl(entry));
 	comm_close(fd);
         do_next_read = 0;
     }
     if (do_next_read)
-        comm_read(fd, p->buf, BUFSIZ, whoisReadReply, p);
+        comm_read(fd, buf, BUFSIZ, whoisReadReply, this);
 }
 
 static void
diff --git a/src/win32.cc b/src/win32.cc
index d77cc45b5f..b49116d068 100644
--- a/src/win32.cc
+++ b/src/win32.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: win32.cc,v 1.5 2002/06/25 11:43:34 hno Exp $
+ * $Id: win32.cc,v 1.6 2003/01/23 00:37:29 robertc Exp $
  *
  * * * * * * * * Legal stuff * * * * * * *
  *
diff --git a/test-suite/Makefile.am b/test-suite/Makefile.am
index b8f62c27aa..d689d4413a 100644
--- a/test-suite/Makefile.am
+++ b/test-suite/Makefile.am
@@ -1,7 +1,7 @@
 #
 #  Makefile for the Squid Object Cache server
 #
-#  $Id: Makefile.am,v 1.2 2002/12/27 10:26:40 robertc Exp $
+#  $Id: Makefile.am,v 1.3 2003/01/23 00:38:34 robertc Exp $
 #
 
 AUTOMAKE_OPTIONS = subdir-objects
@@ -11,16 +11,31 @@ AM_CXXFLAGS = -Werror -Wall
 
 INCLUDES        = -I. -I$(srcdir) -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)/src
 
-EXTRA_PROGRAMS = membanger tcp-banger2
+EXTRA_PROGRAMS = mem_node_test membanger tcp-banger2
 
-TESTS = refcount
+## Sort by dependencies - test lowest layers first
+TESTS = refcount mem_node_test http_range_test
 
-LDADD = -L$(top_builddir)/lib -lmiscutil
-
-check_PROGRAMS= refcount
+## Sort by dependencies - test lowest layers first
+check_PROGRAMS= refcount mem_node_test http_range_test
 
+LDADD = -L$(top_builddir)/lib -lmiscutil
+mem_node_test_SOURCES = mem_node_test.cc
+mem_node_test_LDADD = $(top_builddir)/src/mem_node.o $(LDADD)
 refcount_SOURCES = refcount.cc
 
+DEBUG_OBJECTS = $(top_builddir)/src/debug.o\
+		$(top_builddir)/src/globals.o
+
+http_range_test_SOURCES = http_range_test.cc
+http_range_test_LDADD = $(top_builddir)/src/HttpHdrRange.o \
+		$(top_builddir)/src/HttpHeaderTools.o \
+		$(top_builddir)/src/MemBuf.o \
+		$(top_builddir)/src/Packer.o \
+		$(top_builddir)/src/String.o \
+		$(top_builddir)/src/mem.o \
+		$(DEBUG_OBJECTS) $(LDADD)
+
 ## membanger won't link today. Bitrot..
 ##CC	= gcc
 ##CFLAGS	= -g -Wall -I../include -I../src
diff --git a/test-suite/Makefile.in b/test-suite/Makefile.in
index 68b9d7f370..7e309bf801 100644
--- a/test-suite/Makefile.in
+++ b/test-suite/Makefile.in
@@ -1,6 +1,7 @@
-# Makefile.in generated automatically by automake 1.5 from Makefile.am.
+# Makefile.in generated by automake 1.6.3 from Makefile.am.
+# @configure_input@
 
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
 # Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -16,9 +17,8 @@
 #
 #  Makefile for the Squid Object Cache server
 #
-#  $Id: Makefile.in,v 1.10 2003/01/22 10:08:20 robertc Exp $
+#  $Id: Makefile.in,v 1.11 2003/01/23 00:38:34 robertc Exp $
 #
-
 SHELL = @SHELL@
 
 srcdir = @srcdir@
@@ -49,9 +49,13 @@ AUTOCONF = @AUTOCONF@
 AUTOMAKE = @AUTOMAKE@
 AUTOHEADER = @AUTOHEADER@
 
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 INSTALL = @INSTALL@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_DATA = @INSTALL_DATA@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_HEADER = $(INSTALL_DATA)
 transform = @program_transform_name@
@@ -63,6 +67,10 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 host_alias = @host_alias@
 host_triplet = @host@
+
+EXEEXT = @EXEEXT@
+OBJEXT = @OBJEXT@
+PATH_SEPARATOR = @PATH_SEPARATOR@
 AMTAR = @AMTAR@
 AR = @AR@
 AR_R = @AR_R@
@@ -80,7 +88,6 @@ DEPDIR = @DEPDIR@
 DIGEST_AUTH_HELPERS = @DIGEST_AUTH_HELPERS@
 ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@
 ERR_LANGUAGES = @ERR_LANGUAGES@
-EXEEXT = @EXEEXT@
 EXTERNAL_ACL_HELPERS = @EXTERNAL_ACL_HELPERS@
 FALSE = @FALSE@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
@@ -93,7 +100,6 @@ MAINT = @MAINT@
 MKDIR = @MKDIR@
 MV = @MV@
 NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
 OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
 PACKAGE = @PACKAGE@
 PERL = @PERL@
@@ -110,6 +116,7 @@ STORE_LIBS = @STORE_LIBS@
 STORE_MODULES = @STORE_MODULES@
 STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
 STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
 TRUE = @TRUE@
 VERSION = @VERSION@
 XTRA_LIBS = @XTRA_LIBS@
@@ -126,21 +133,50 @@ AM_CXXFLAGS = -Werror -Wall
 
 INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)/src
 
-EXTRA_PROGRAMS = membanger tcp-banger2
+EXTRA_PROGRAMS = mem_node_test membanger tcp-banger2
 
-TESTS = refcount
+TESTS = refcount mem_node_test http_range_test
+
+check_PROGRAMS = refcount mem_node_test http_range_test
 
 LDADD = -L$(top_builddir)/lib -lmiscutil
+mem_node_test_SOURCES = mem_node_test.cc
+mem_node_test_LDADD = $(top_builddir)/src/mem_node.o $(LDADD)
+refcount_SOURCES = refcount.cc
 
-check_PROGRAMS = refcount
+DEBUG_OBJECTS = $(top_builddir)/src/debug.o\
+		$(top_builddir)/src/globals.o
+
+
+http_range_test_SOURCES = http_range_test.cc
+http_range_test_LDADD = $(top_builddir)/src/HttpHdrRange.o \
+		$(top_builddir)/src/HttpHeaderTools.o \
+		$(top_builddir)/src/MemBuf.o \
+		$(top_builddir)/src/Packer.o \
+		$(top_builddir)/src/String.o \
+		$(top_builddir)/src/mem.o \
+		$(DEBUG_OBJECTS) $(LDADD)
 
-refcount_SOURCES = refcount.cc
 subdir = test-suite
 mkinstalldirs = $(SHELL) $(top_srcdir)/cfgaux/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/include/autoconf.h
 CONFIG_CLEAN_FILES =
-EXTRA_PROGRAMS = membanger$(EXEEXT) tcp-banger2$(EXEEXT)
-check_PROGRAMS = refcount$(EXEEXT)
+EXTRA_PROGRAMS = mem_node_test$(EXEEXT) membanger$(EXEEXT) \
+	tcp-banger2$(EXEEXT)
+check_PROGRAMS = refcount$(EXEEXT) mem_node_test$(EXEEXT) \
+	http_range_test$(EXEEXT)
+am_http_range_test_OBJECTS = http_range_test.$(OBJEXT)
+http_range_test_OBJECTS = $(am_http_range_test_OBJECTS)
+http_range_test_DEPENDENCIES = $(top_builddir)/src/HttpHdrRange.o \
+	$(top_builddir)/src/HttpHeaderTools.o \
+	$(top_builddir)/src/MemBuf.o $(top_builddir)/src/Packer.o \
+	$(top_builddir)/src/String.o $(top_builddir)/src/mem.o \
+	$(top_builddir)/src/debug.o $(top_builddir)/src/globals.o
+http_range_test_LDFLAGS =
+am_mem_node_test_OBJECTS = mem_node_test.$(OBJEXT)
+mem_node_test_OBJECTS = $(am_mem_node_test_OBJECTS)
+mem_node_test_DEPENDENCIES = $(top_builddir)/src/mem_node.o
+mem_node_test_LDFLAGS =
 membanger_SOURCES = membanger.c
 membanger_OBJECTS = membanger.$(OBJEXT)
 membanger_LDADD = $(LDADD)
@@ -163,8 +199,11 @@ CPPFLAGS = @CPPFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBS = @LIBS@
 depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp
-@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/membanger.Po $(DEPDIR)/refcount.Po \
-@AMDEP_TRUE@	$(DEPDIR)/tcp-banger2.Po
+am__depfiles_maybe = depfiles
+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/http_range_test.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/mem_node_test.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/membanger.Po ./$(DEPDIR)/refcount.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/tcp-banger2.Po
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
@@ -176,9 +215,10 @@ CXXLD = $(CXX)
 CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
 	-o $@
 CXXFLAGS = @CXXFLAGS@
-DIST_SOURCES = membanger.c $(refcount_SOURCES) tcp-banger2.c
+DIST_SOURCES = $(http_range_test_SOURCES) $(mem_node_test_SOURCES) \
+	membanger.c $(refcount_SOURCES) tcp-banger2.c
 DIST_COMMON = Makefile.am Makefile.in
-SOURCES = membanger.c $(refcount_SOURCES) tcp-banger2.c
+SOURCES = $(http_range_test_SOURCES) $(mem_node_test_SOURCES) membanger.c $(refcount_SOURCES) tcp-banger2.c
 
 all: all-am
 
@@ -188,12 +228,16 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configu
 	cd $(top_srcdir) && \
 	  $(AUTOMAKE) --foreign  test-suite/Makefile
 Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
-	cd $(top_builddir) && \
-	  CONFIG_HEADERS= CONFIG_LINKS= \
-	  CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
 
 clean-checkPROGRAMS:
 	-test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
+http_range_test$(EXEEXT): $(http_range_test_OBJECTS) $(http_range_test_DEPENDENCIES) 
+	@rm -f http_range_test$(EXEEXT)
+	$(CXXLINK) $(http_range_test_LDFLAGS) $(http_range_test_OBJECTS) $(http_range_test_LDADD) $(LIBS)
+mem_node_test$(EXEEXT): $(mem_node_test_OBJECTS) $(mem_node_test_DEPENDENCIES) 
+	@rm -f mem_node_test$(EXEEXT)
+	$(CXXLINK) $(mem_node_test_LDFLAGS) $(mem_node_test_OBJECTS) $(mem_node_test_LDADD) $(LIBS)
 membanger$(EXEEXT): $(membanger_OBJECTS) $(membanger_DEPENDENCIES) 
 	@rm -f membanger$(EXEEXT)
 	$(LINK) $(membanger_LDFLAGS) $(membanger_OBJECTS) $(membanger_LDADD) $(LIBS)
@@ -210,18 +254,20 @@ mostlyclean-compile:
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/membanger.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/refcount.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/tcp-banger2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http_range_test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mem_node_test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/membanger.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refcount.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tcp-banger2.Po@am__quote@
 
 distclean-depend:
-	-rm -rf $(DEPDIR)
+	-rm -rf ./$(DEPDIR)
 
 .c.o:
 @AMDEP_TRUE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
 @AMDEP_TRUE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-	$(COMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$<
+	$(COMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
 
 .c.obj:
 @AMDEP_TRUE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@@ -234,7 +280,7 @@ CCDEPMODE = @CCDEPMODE@
 @AMDEP_TRUE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
 @AMDEP_TRUE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-	$(CXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$<
+	$(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
 
 .cc.obj:
 @AMDEP_TRUE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@@ -244,32 +290,36 @@ CCDEPMODE = @CCDEPMODE@
 CXXDEPMODE = @CXXDEPMODE@
 uninstall-info-am:
 
+ETAGS = etags
+ETAGSFLAGS =
+
 tags: TAGS
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	mkid -fID $$unique $(LISP)
+	mkid -fID $$unique
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
 	tags=; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-	  || etags $(ETAGS_ARGS) $$tags  $$unique $(LISP)
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
 
 GTAGS:
-	here=`CDPATH=: && cd $(top_builddir) && pwd` \
+	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && cd $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) $$here
 
@@ -329,23 +379,27 @@ check-TESTS: $(TESTS)
 	  echo "$$banner"; \
 	  echo "$$dashes"; \
 	  test "$$failed" -eq 0; \
-	fi
-
+	else :; fi
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 
 top_distdir = ..
 distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
 
 distdir: $(DISTFILES)
-	@for file in $(DISTFILES); do \
-	  if test -f $$file; then d=.; else d=$(srcdir); fi; \
+	@list='$(DISTFILES)'; for file in $$list; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
 	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-	    $(mkinstalldirs) "$(distdir)/$$dir"; \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
 	  fi; \
 	  if test -d $$d/$$file; then \
-	    cp -pR $$d/$$file $(distdir) \
-	    || exit 1; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
 	  else \
 	    test -f $(distdir)/$$file \
 	    || cp -p $$d/$$file $(distdir)/$$file \
@@ -371,6 +425,7 @@ install-am: all-am
 installcheck: installcheck-am
 install-strip:
 	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  INSTALL_STRIP_FLAG=-s \
 	  `test -z '$(STRIP)' || \
 	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
 mostlyclean-generic:
@@ -378,7 +433,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
+	-rm -f Makefile $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
diff --git a/test-suite/hash.c b/test-suite/hash.c
index 45f93866c6..01c935d474 100644
--- a/test-suite/hash.c
+++ b/test-suite/hash.c
@@ -1,6 +1,6 @@
 
 /*
- * $Id: hash.c,v 1.7 2001/01/12 00:37:37 wessels Exp $
+ * $Id: hash.c,v 1.8 2003/01/23 00:38:34 robertc Exp $
  *
  * DEBUG: section 0     Hash Tables
  * AUTHOR: Harvest Derived
diff --git a/test-suite/http_range_test.cc b/test-suite/http_range_test.cc
new file mode 100644
index 0000000000..2a4736cb68
--- /dev/null
+++ b/test-suite/http_range_test.cc
@@ -0,0 +1,259 @@
+
+/*
+ * $Id: http_range_test.cc,v 1.1 2003/01/23 00:38:34 robertc Exp $
+ *
+ * DEBUG: section 64    HTTP Range Header
+ * AUTHOR: Alex Rousskov
+ *
+ * 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 "Mem.h"
+//#include "Store.h"
+#include "HttpHeaderRange.h"
+//#include "client_side_request.h"
+
+/* Stub routines */
+SQUIDCEXTERN void 
+cachemgrRegister(const char *, const char *, OBJH *, int, int){
+}
+
+SQUIDCEXTERN void httpHeaderPutStr(HttpHeader * hdr, http_hdr_type type, const char *str)
+{
+    fatal ("dummy function\n");
+}
+
+#if STDC_HEADERS
+SQUIDCEXTERN void
+storeAppendPrintf(StoreEntry *, const char *,...)
+#else
+SQUIDCEXTERN void storeAppendPrintf()
+#endif
+{
+    fatal ("dummy function\n");
+}
+
+SQUIDCEXTERN void eventAdd(const char *name, EVH * func, void *arg, double when, int)
+{
+    fatal ("dummy function\n");
+}
+
+SQUIDCEXTERN void
+storeBuffer(StoreEntry * e)
+{
+    fatal ("dummy function\n");
+}
+
+SQUIDCEXTERN void
+storeBufferFlush(StoreEntry * e)
+{
+    fatal ("dummy function\n");
+}
+
+SQUIDCEXTERN void storeAppend(StoreEntry *, const char *, int)
+{
+    fatal ("dummy function\n");
+}
+
+SQUIDCEXTERN void storeAppendVPrintf(StoreEntry *, const char *, va_list ap)
+{
+    fatal ("dummy function\n");
+}
+
+SQUIDCEXTERN void httpHeaderDelAt(HttpHeader * hdr, HttpHeaderPos pos)
+{
+    fatal ("dummy function\n");
+}
+
+SQUIDCEXTERN HttpHeaderEntry *httpHeaderGetEntry(const HttpHeader * hdr, HttpHeaderPos * pos)
+{
+    fatal ("dummy function\n");
+    return NULL;
+}
+
+SQUIDCEXTERN int aclCheckFast(const struct _acl_access *A, aclCheck_t *)
+{
+    fatal ("dummy function\n");
+    return 0;
+}
+
+SQUIDCEXTERN void aclChecklistFree(aclCheck_t *)
+{
+    fatal ("dummy function\n");
+}
+
+SQUIDCEXTERN void fatal (char const *msg)
+{
+    printf ("%s\n",msg);
+    exit (1);
+}
+
+SQUIDCEXTERN aclCheck_t *aclChecklistCreate(const struct _acl_access *,
+    request_t *,
+    const char *ident)
+{
+    fatal ("dummy function\n");
+    return NULL;
+}
+
+SQUIDCEXTERN String httpHeaderGetList(const HttpHeader * hdr, http_hdr_type id)
+{
+    fatal ("dummy function\n");
+    return StringNull;
+}
+
+SQUIDCEXTERN int httpHeaderHas(const HttpHeader * hdr, http_hdr_type type)
+{
+    fatal ("dummy function\n");
+    return 0;
+}
+
+SQUIDCEXTERN void httpHdrContRangeDestroy(HttpHdrContRange * crange)
+{
+    fatal ("dummy function\n");
+}
+
+SQUIDCEXTERN void httpHdrContRangeSet(HttpHdrContRange *, HttpHdrRangeSpec, ssize_t)
+{
+    fatal ("dummy function\n");
+}
+
+SQUIDCEXTERN void httpHeaderPutContRange(HttpHeader * hdr, const HttpHdrContRange * cr)
+{
+    fatal ("dummy function\n");
+}
+
+SQUIDCEXTERN HttpHdrContRange *httpHdrContRangeCreate(void)
+{
+    fatal ("dummy function\n");
+    return NULL;
+}
+
+void
+testRangeParser(char const *rangestring)
+{
+    String aString (rangestring);
+    HttpHdrRange *range = HttpHdrRange::ParseCreate (&aString);
+    if (!range)
+	exit (1);
+    HttpHdrRange copy(*range);
+    assert (copy.specs.count == range->specs.count);
+
+    HttpHdrRange::iterator pos = range->begin();
+    assert (*pos);
+    
+    range->deleteSelf();
+}
+
+HttpHdrRange *
+rangeFromString(char const *rangestring)
+{
+    String aString (rangestring);
+    HttpHdrRange *range = HttpHdrRange::ParseCreate (&aString);
+    if (!range)
+	exit (1);
+    return range;
+}
+
+void
+testRangeIter ()
+{
+    HttpHdrRange *range=rangeFromString("bytes=0-3, 1-, -2");
+    assert (range->specs.count == 3);
+    size_t counter = 0;
+    HttpHdrRange::iterator i = range->begin();
+    while (i != range->end()) {
+	++counter;
+	++i;
+    }
+    assert (counter == 3);
+    i = range->begin();
+    assert (i - range->begin() == 0);
+    ++i;
+    assert (i - range->begin() == 1);
+    assert (i - range->end() == -2);
+}
+
+void
+testRangeCanonization()
+{
+    HttpHdrRange *range=rangeFromString("bytes=0-3, 1-, -2");
+    assert (range->specs.count == 3);
+
+    /* 0-3 needs a content length of 4 */
+    /* This passes in the extant code - but should it? */
+    if (!range->canonize(3))
+	exit(1);
+    assert (range->specs.count == 3);
+    range->deleteSelf();
+    
+    range=rangeFromString("bytes=0-3, 1-, -2");
+    assert (range->specs.count == 3);
+    /* 0-3 needs a content length of 4 */
+    if (!range->canonize(4))
+	exit(1);
+    range->deleteSelf();
+    
+    range=rangeFromString("bytes=3-6");
+    assert (range->specs.count == 1);
+    /* 3-6 needs a content length of 4 or more */
+    if (range->canonize(3))
+	exit(1);
+    range->deleteSelf();
+
+    range=rangeFromString("bytes=3-6");
+    assert (range->specs.count == 1);
+    /* 3-6 needs a content length of 4 or more */
+    if (!range->canonize(4))
+	exit(1);
+    range->deleteSelf();
+    
+    range=rangeFromString("bytes=1-1,2-3");
+    assert (range->specs.count == 2);
+    if (!range->canonize(4))
+	exit(1);
+    assert (range->specs.count == 2);
+    range->deleteSelf();
+}
+
+int
+main (int argc, char **argv)
+{
+    Mem::Init();
+    /* enable for debugging to console */
+//    _db_init (NULL, NULL);
+//    Debug::Levels[64] = 9;
+    testRangeParser ("bytes=0-3");
+    testRangeParser ("bytes=-3");
+    testRangeParser ("bytes=1-");
+    testRangeParser ("bytes=0-3, 1-, -2");
+    testRangeIter ();
+    testRangeCanonization();
+    return 0;
+}
diff --git a/test-suite/mem_node_test.cc b/test-suite/mem_node_test.cc
new file mode 100644
index 0000000000..83c92ef582
--- /dev/null
+++ b/test-suite/mem_node_test.cc
@@ -0,0 +1,74 @@
+
+/*
+ * $Id: mem_node_test.cc,v 1.1 2003/01/23 00:38:34 robertc Exp $
+ *
+ * DEBUG: section 19    Store Memory Primitives
+ * AUTHOR: Robert Collins
+ *
+ * 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 "mem_node.h"
+#include 
+
+/* TODO: put this in a libTest */
+void
+xassert(const char *msg, const char *file, int line)
+{
+    std::cout << "Assertion failed: (" << msg << ") at " << file << ":" << line << std::endl;
+    exit (1);
+}
+time_t squid_curtime = 0;
+
+int
+main (int argc, char *argv)
+{
+    mem_node *aNode = new mem_node(0);
+    assert (aNode);
+    assert (mem_node::InUseCount() == 1);
+    assert (SM_PAGE_SIZE > 50);
+    aNode->nodeBuffer.length = 45;
+    assert (aNode->start() == 0);
+    assert (aNode->end() == 45);
+    aNode->nodeBuffer.offset = 50;
+    assert (aNode->start() == 50);
+    assert (aNode->end() == 95);
+    assert (!aNode->contains(49));
+    assert (aNode->contains(50));
+    assert (aNode->contains(75));
+    assert (!aNode->contains(95));
+    assert (aNode->contains(94));
+    assert (!aNode->canAccept(50));
+    assert (aNode->canAccept(95));
+    assert (!aNode->canAccept(94));
+    aNode->nodeBuffer.length = SM_PAGE_SIZE - 1;
+    assert (aNode->canAccept (50 + SM_PAGE_SIZE - 1));
+    assert (!aNode->canAccept (50 + SM_PAGE_SIZE));
+    return 0;
+}
diff --git a/test-suite/refcount.cc b/test-suite/refcount.cc
index 02fab28461..a51c066b53 100644
--- a/test-suite/refcount.cc
+++ b/test-suite/refcount.cc
@@ -1,6 +1,6 @@
 
 /*
- * $Id: refcount.cc,v 1.2 2002/12/13 03:41:28 robertc Exp $
+ * $Id: refcount.cc,v 1.3 2003/01/23 00:38:34 robertc Exp $
  *
  * DEBUG: section xx    Refcount allocator
  * AUTHOR:  Robert Collins
diff --git a/test-suite/tcp-banger2.c b/test-suite/tcp-banger2.c
index bfc1cd0cdb..4624c27ac5 100644
--- a/test-suite/tcp-banger2.c
+++ b/test-suite/tcp-banger2.c
@@ -1,32 +1,6 @@
 #include "config.h"
 
-/* $Id: tcp-banger2.c,v 1.23 1999/04/15 06:16:15 wessels Exp $ */
-
-/*
- * On some systems, FD_SETSIZE is set to something lower than the
- * actual number of files which can be opened.  IRIX is one case,
- * NetBSD is another.  So here we increase FD_SETSIZE to our
- * configure-discovered maximum *before* any system includes.
- */
-#define CHANGE_FD_SETSIZE 1
-
-/* Cannot increase FD_SETSIZE on Linux */
-#if defined(_SQUID_LINUX_)
-#undef CHANGE_FD_SETSIZE
-#define CHANGE_FD_SETSIZE 0
-#endif
-
-/* Cannot increase FD_SETSIZE on FreeBSD before 2.2.0, causes select(2)
- * to return EINVAL. */
-/* Marian Durkovic  */
-/* Peter Wemm  */
-#if defined(_SQUID_FREEBSD_)
-#include 
-#if __FreeBSD_version < 220000
-#undef CHANGE_FD_SETSIZE
-#define CHANGE_FD_SETSIZE 0
-#endif
-#endif
+/* $Id: tcp-banger2.c,v 1.24 2003/01/23 00:38:34 robertc Exp $ */
 
 /* Increase FD_SETSIZE if SQUID_MAXFD is bigger */
 #if CHANGE_FD_SETSIZE && SQUID_MAXFD > DEFAULT_FD_SETSIZE
@@ -145,14 +119,15 @@ free_request(struct _request *r)
     free(r);
 }
 
+#define RFC1123_STRFTIME "%a, %d %b %Y %H:%M:%S GMT"
 char *
-mkrfc850(t)
+mkrfc1123(t)
      time_t *t;
 {
     static char buf[128];
     struct tm *gmt = gmtime(t);
     buf[0] = '\0';
-    (void) strftime(buf, 127, "%A, %d-%b-%y %H:%M:%S GMT", gmt);
+    (void) strftime(buf, 127, RFC1123_STRFTIME, gmt);
     return buf;
 }
 
@@ -364,7 +339,7 @@ request(char *urlin)
     strcat(msg, "Accept: */*\r\n");
     if (opt_ims && (lrand48() & 0x03) == 0) {
 	w = time(NULL) - (lrand48() & 0x3FFFF);
-	sprintf(buf, "If-Modified-Since: %s\r\n", mkrfc850(&w));
+	sprintf(buf, "If-Modified-Since: %s\r\n", mkrfc1123(&w));
 	strcat(msg, buf);
     }
     if (file && strcmp(file, "-") != 0) {