]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Import of fix-ranges branch
authorrobertc <>
Thu, 23 Jan 2003 07:34:50 +0000 (07:34 +0000)
committerrobertc <>
Thu, 23 Jan 2003 07:34:50 +0000 (07:34 +0000)
372 files changed:
CREDITS
Makefile.am
Makefile.in
QUICKSTART
aclocal.m4
cfgaux/mkinstalldirs
configure
configure.in
contrib/Makefile.in
contrib/rredir.c
doc/Makefile.am
doc/Makefile.in
doc/Programming-Guide/prog-guide.sgml
doc/release-notes/release-2.5.html
doc/release-notes/release-2.5.sgml
errors/Makefile.am
errors/Makefile.in
helpers/Makefile.in
helpers/basic_auth/LDAP/Makefile.am
helpers/basic_auth/LDAP/Makefile.in
helpers/basic_auth/MSNT/Makefile.am
helpers/basic_auth/MSNT/Makefile.in
helpers/basic_auth/Makefile.am
helpers/basic_auth/Makefile.in
helpers/basic_auth/NCSA/Makefile.am
helpers/basic_auth/NCSA/Makefile.in
helpers/basic_auth/PAM/Makefile.am
helpers/basic_auth/PAM/Makefile.in
helpers/basic_auth/PAM/pam_auth.c
helpers/basic_auth/SASL/Makefile.am
helpers/basic_auth/SASL/Makefile.in
helpers/basic_auth/SASL/sasl_auth.c
helpers/basic_auth/SMB/Makefile.am
helpers/basic_auth/SMB/Makefile.in
helpers/basic_auth/YP/Makefile.am
helpers/basic_auth/YP/Makefile.in
helpers/basic_auth/getpwnam/Makefile.am
helpers/basic_auth/getpwnam/Makefile.in
helpers/basic_auth/multi-domain-NTLM/Makefile.am
helpers/basic_auth/multi-domain-NTLM/Makefile.in
helpers/basic_auth/multi-domain-NTLM/smb_auth.pl
helpers/basic_auth/winbind/Makefile.am
helpers/basic_auth/winbind/Makefile.in
helpers/digest_auth/Makefile.am
helpers/digest_auth/Makefile.in
helpers/digest_auth/password/Makefile.am
helpers/digest_auth/password/Makefile.in
helpers/external_acl/Makefile.am
helpers/external_acl/Makefile.in
helpers/external_acl/ip_user/Makefile.am
helpers/external_acl/ip_user/Makefile.in
helpers/external_acl/ip_user/Makefile.separate
helpers/external_acl/ip_user/README
helpers/external_acl/ip_user/dict.c
helpers/external_acl/ip_user/example.conf
helpers/external_acl/ip_user/ip_user.h
helpers/external_acl/ip_user/main.c
helpers/external_acl/ip_user/match.c
helpers/external_acl/ldap_group/Makefile.am
helpers/external_acl/ldap_group/Makefile.in
helpers/external_acl/unix_group/Makefile.am
helpers/external_acl/unix_group/Makefile.in
helpers/external_acl/unix_group/README
helpers/external_acl/unix_group/check_group.c
helpers/external_acl/wbinfo_group/Makefile.am
helpers/external_acl/wbinfo_group/Makefile.in
helpers/external_acl/winbind_group/Makefile.am
helpers/external_acl/winbind_group/Makefile.in
helpers/external_acl/winbind_group/wb_check_group.c
helpers/ntlm_auth/Makefile.am
helpers/ntlm_auth/Makefile.in
helpers/ntlm_auth/SMB/Makefile.am
helpers/ntlm_auth/SMB/Makefile.in
helpers/ntlm_auth/SMB/smbval/Makefile.in
helpers/ntlm_auth/fakeauth/Makefile.am
helpers/ntlm_auth/fakeauth/Makefile.in
helpers/ntlm_auth/fakeauth/ntlm.h
helpers/ntlm_auth/no_check/Makefile.am
helpers/ntlm_auth/no_check/Makefile.in
helpers/ntlm_auth/winbind/Makefile.am
helpers/ntlm_auth/winbind/Makefile.in
icons/Makefile.am
icons/Makefile.in
include/Array.h
include/GNUregex.h
include/Range.h
include/RefCount.h
include/Stack.h
include/asn1.h
include/cache_snmp.h
include/config.h
include/hash.h
include/heap.h
include/md5.h
include/ntlmauth.h
include/parse.h
include/radix.h
include/rfc1035.h
include/rfc2617.h
include/snmp-internal.h
include/snmp-mib.h
include/snmp.h
include/snmp_api.h
include/snmp_api_error.h
include/snmp_api_util.h
include/snmp_client.h
include/snmp_coexist.h
include/snmp_debug.h
include/snmp_error.h
include/snmp_impl.h
include/snmp_msg.h
include/snmp_pdu.h
include/snmp_session.h
include/snmp_util.h
include/snmp_vars.h
include/snprintf.h
include/splay.h
include/squid_types.h
include/tempnam.h
include/util.h
include/version.h
lib/Array.cc
lib/GNUregex.c
lib/Makefile.am
lib/MemPool.c
lib/Profiler.c
lib/base64.c
lib/dlmalloc.c
lib/getfullhostname.c
lib/hash.c
lib/heap.c
lib/html_quote.c
lib/iso3307.c
lib/md5-test.c
lib/md5.c
lib/ntlmauth.c
lib/radix.c
lib/rfc1035.c
lib/rfc1123.c
lib/rfc1738.c
lib/rfc2617.c
lib/safe_inet_addr.c
lib/snprintf.c
lib/splay.c
lib/strerror.c
lib/stub_memaccount.c
lib/tempnam.c
lib/util.c
lib/uudecode.c
scripts/Makefile.in
scripts/RunAccel.in
scripts/RunCache.in
scripts/check_cache.pl
scripts/fileno-to-pathname.pl
scripts/flag_truncs.pl
scripts/upgrade-1.0-store.pl
snmplib/Makefile.in
src/CacheDigest.cc
src/Debug.h
src/ETag.cc
src/Generic.h
src/HttpBody.cc
src/HttpHdrCc.cc
src/HttpHdrContRange.cc
src/HttpHdrContRange.h [new file with mode: 0644]
src/HttpHdrExtField.cc
src/HttpHdrRange.cc
src/HttpHeader.cc
src/HttpHeader.h
src/HttpHeaderRange.h [new file with mode: 0644]
src/HttpHeaderTools.cc
src/HttpMsg.cc
src/HttpReply.cc
src/HttpReply.h [new file with mode: 0644]
src/HttpRequest.cc
src/HttpRequest.h [new file with mode: 0644]
src/HttpStatusLine.cc
src/ICP.h
src/IPInterception.cc
src/IPInterception.h
src/Makefile.am
src/Makefile.in
src/Mem.h [new file with mode: 0644]
src/MemBuf.cc
src/MemBuf.cci [new file with mode: 0644]
src/MemBuf.h [new file with mode: 0644]
src/MemObject.cc [new file with mode: 0644]
src/MemObject.h [new file with mode: 0644]
src/Packer.cc
src/ProfStats.cc
src/StatHist.cc
src/Store.cci [new file with mode: 0644]
src/Store.h
src/StoreClient.h
src/StoreIOBuffer.h
src/StoreIOState.cc
src/StoreIOState.h
src/StoreMeta.cc [new file with mode: 0644]
src/StoreMeta.h [new file with mode: 0644]
src/StoreMetaMD5.cc [new file with mode: 0644]
src/StoreMetaMD5.h [new file with mode: 0644]
src/StoreMetaSTD.cc [new file with mode: 0644]
src/StoreMetaSTD.h [new file with mode: 0644]
src/StoreMetaURL.cc [new file with mode: 0644]
src/StoreMetaURL.h [new file with mode: 0644]
src/StoreMetaUnpacker.cc [new file with mode: 0644]
src/StoreMetaUnpacker.h [new file with mode: 0644]
src/StoreMetaVary.cc [new file with mode: 0644]
src/StoreMetaVary.h [new file with mode: 0644]
src/String.cc
src/String.cci [new file with mode: 0644]
src/String.h [new file with mode: 0644]
src/SwapDir.cc
src/SwapDir.h
src/access_log.cc
src/acl.cc
src/asn.cc
src/auth/Makefile.am
src/auth/Makefile.in
src/auth/basic/auth_basic.cc
src/auth/digest/auth_digest.cc
src/auth/ntlm/auth_ntlm.cc
src/authenticate.cc
src/authenticate.h
src/cache_cf.cc
src/cache_diff.cc
src/cache_manager.cc
src/cachemgr.cc
src/carp.cc
src/cbdata.cc
src/cf.data.pre
src/cf_gen.cc
src/client.cc
src/clientStream.cc
src/clientStream.h
src/client_db.cc
src/client_side.cc
src/client_side_reply.cc
src/client_side_request.cc
src/client_side_request.h
src/comm.cc
src/comm.h
src/comm_kqueue.cc
src/comm_poll.cc
src/comm_select.cc
src/debug.cc
src/defines.h
src/delay_pools.cc
src/disk.cc
src/dns.cc
src/dns_internal.cc
src/dnsserver.cc
src/enums.h
src/errorpage.cc
src/event.cc
src/external_acl.cc
src/fd.cc
src/fde.cc [new file with mode: 0644]
src/fde.h [new file with mode: 0644]
src/filemap.cc
src/forward.cc
src/fqdncache.cc
src/fs/Makefile.am
src/fs/Makefile.in
src/fs/aufs/Makefile.in
src/fs/aufs/aiops.cc
src/fs/aufs/async_io.cc
src/fs/aufs/store_dir_aufs.cc
src/fs/coss/Makefile.in
src/fs/coss/async_io.cc
src/fs/coss/coss-notes.txt
src/fs/coss/store_coss.h
src/fs/coss/store_dir_coss.cc
src/fs/coss/store_io_coss.cc
src/fs/diskd/Makefile.am
src/fs/diskd/Makefile.in
src/fs/diskd/diskd.cc
src/fs/diskd/store_dir_diskd.cc
src/fs/diskd/store_io_diskd.cc
src/fs/null/Makefile.in
src/fs/null/store_null.cc
src/fs/ufs/Makefile.in
src/fs/ufs/store_dir_ufs.cc
src/fs/ufs/store_io_ufs.cc
src/ftp.cc
src/globals.h
src/gopher.cc
src/helper.cc
src/htcp.cc
src/htcp.h
src/http.cc
src/http.h
src/icmp.cc
src/icp_v2.cc
src/icp_v3.cc
src/ident.cc
src/internal.cc
src/ipc.cc
src/ipcache.cc
src/leakfinder.cc
src/logfile.cc
src/main.cc
src/mem.cc
src/mem_node.cc [new file with mode: 0644]
src/mem_node.h [new file with mode: 0644]
src/mib.txt
src/mime.cc
src/mk-string-arrays.pl
src/multicast.cc
src/neighbors.cc
src/net_db.cc
src/pconn.cc
src/peer_digest.cc
src/peer_select.cc
src/pinger.cc
src/protos.h
src/recv-announce.cc
src/redirect.cc
src/referer.cc
src/refresh.cc
src/repl/Makefile.am
src/repl/Makefile.in
src/repl/heap/store_heap_replacement.cc
src/repl/heap/store_repl_heap.cc
src/repl/lru/store_repl_lru.cc
src/send-announce.cc
src/snmp_agent.cc
src/snmp_core.cc
src/squid.h
src/ssl.cc
src/ssl_support.cc
src/ssl_support.h
src/stat.cc
src/stmem.cc
src/stmem.h [new file with mode: 0644]
src/store.cc
src/store_client.cc
src/store_digest.cc
src/store_dir.cc
src/store_io.cc
src/store_key_md5.cc
src/store_log.cc
src/store_modules.sh
src/store_rebuild.cc
src/store_swapin.cc
src/store_swapmeta.cc
src/store_swapout.cc
src/structs.h
src/test-ellipses.pl
src/test_cache_digest.cc
src/tools.cc
src/tunnel.cc
src/typedefs.h
src/ufscommon.cc
src/ufscommon.cci [new file with mode: 0644]
src/ufscommon.h
src/ufsdump.cc [new file with mode: 0644]
src/unlinkd.cc
src/url.cc
src/urn.cc
src/useragent.cc
src/wais.cc
src/wccp.cc
src/whois.cc
src/win32.cc
test-suite/Makefile.am
test-suite/Makefile.in
test-suite/hash.c
test-suite/http_range_test.cc [new file with mode: 0644]
test-suite/mem_node_test.cc [new file with mode: 0644]
test-suite/refcount.cc
test-suite/tcp-banger2.c

diff --git a/CREDITS b/CREDITS
index 44cc8bec10756a5a1f4535efd481f368c029f356..828229f833ff39a442f72f7783a9fe479fb6878a 100644 (file)
--- 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 $
 
 ==============================================================================
 
index 3825a05daeafea1865a002b8a9c00f58d85fd174..80a9c0fb6d5992bcbbdbfbf57b627b0f48d654a1 100644 (file)
@@ -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
index 29bfdbf74a0c6fee342477a6a23e6cfd28605627..bb6ea65de9817166c86a1f4a787691b5092f937b 100644 (file)
@@ -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 \
index be8e586441dc1d4faf991ac7ed25a89317c6e248..a1046d2e57d79e5ef59635c92e5e393edfff8b3e 100644 (file)
@@ -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
index 387ae752d81f593dfbea00213d56a7b8338b1460..6bf721faca36999a2398236deab32155dc93d154 100644 (file)
@@ -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
index 5dc4f5300e254b31292749b4985c6fe8864cf35d..aef3fd5ccf00dac937a5b9b62e8490677228061a 100755 (executable)
@@ -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
 
index 4580807fd122f54111d4d4aaa4da1b15e5d9a31b..eb11712ef97deb31d350914927d130384026dd8f 100755 (executable)
--- 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 <unistd.h>
 #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 <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* 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 <stdlib.h>' \
-   '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 <stdlib.h>' \
+   '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 <stdlib.h>
 $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 <stdlib.h>
 $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 <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* 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 <stdlib.h>
 $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 <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> 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 <assert.h>
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#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 <ac_nonexistent.h>
 _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 <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> 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 <assert.h>
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#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 <ac_nonexistent.h>
 _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 <sys/types.h>
 #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 <stdlib.h>
 #include <stdarg.h>
 #include <string.h>
 #include <float.h>
 
+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 <string.h>
 
 _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 <stdlib.h>
 
 _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 <ctype.h>
 #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 <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* 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 <sys/types.h>
 #include <sys/param.h>
 
-#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 <sys/types.h>
 #include <sys/param.h>
 
-#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 <sys/types.h>
 #include <time.h>
 
-#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 <sys/time.h>
+#endif
+#elif HAVE_TIME_H
+#include <time.h>
+#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 <sys/types.h>
@@ -7603,12 +8009,6 @@ else
 #include <malloc.h>
 #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 <sys/types.h>
@@ -7667,12 +8072,6 @@ else
 #include <malloc.h>
 #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 <sys/types.h>
+#endif
+#if HAVE_MALLOC_H
+#include <malloc.h>
+#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 <sys/time.h>
@@ -7731,12 +8179,6 @@ else
 #include <sys/resource.h>
 #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 <sys/types.h>
@@ -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 <sys/types.h>
+#endif
+#include <netinet/in.h>
+#include <netinet/in_systm.h>
+#include <netinet/ip.h>
+#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 <stdio.h>
 #include <stdlib.h>
-#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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -8815,12 +9308,6 @@ long longval () { return (long) (sizeof (short)); }
 unsigned long ulongval () { return (long) (sizeof (short)); }
 #include <stdio.h>
 #include <stdlib.h>
-#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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -9417,12 +9908,6 @@ long longval () { return (long) (sizeof (int)); }
 unsigned long ulongval () { return (long) (sizeof (int)); }
 #include <stdio.h>
 #include <stdlib.h>
-#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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -10250,12 +10736,6 @@ long longval () { return (long) (sizeof (long)); }
 unsigned long ulongval () { return (long) (sizeof (long)); }
 #include <stdio.h>
 #include <stdlib.h>
-#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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -11160,12 +11640,6 @@ long longval () { return (long) (sizeof (long long)); }
 unsigned long ulongval () { return (long) (sizeof (long long)); }
 #include <stdio.h>
 #include <stdlib.h>
-#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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -11991,12 +12466,6 @@ long longval () { return (long) (sizeof (size_t)); }
 unsigned long ulongval () { return (long) (sizeof (size_t)); }
 #include <stdio.h>
 #include <stdlib.h>
-#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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -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 <stdio.h>
 
@@ -12666,12 +13138,6 @@ long longval () { return (long) (sizeof (off_t)); }
 unsigned long ulongval () { return (long) (sizeof (off_t)); }
 #include <stdio.h>
 #include <stdlib.h>
-#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 <alloca.h>
-#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 <assert.h>
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#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 <sys/types.h>
 #include <sys/socket.h>
@@ -13220,12 +13706,6 @@ else
 #include <stddef.h>
 #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 <sys/types.h>
 #include <sys/ipc.h>
 #include <sys/msg.h>
 
-#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 <sys/types.h>
 #include <stdlib.h>
 #include <stddef.h>
 #include <sys/socket.h>
 #include <sys/un.h>
-#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 <assert.h>
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#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 <stdlib.h>
   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 <sys/types.h>
 #include <regex.h>
-#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 <assert.h>
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#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 <stdio.h>
@@ -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 <stdio.h>
 #include <unistd.h>
@@ -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 <stdlib.h>
 #include <stdio.h>
@@ -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 <stdlib.h>
 #include <stdio.h>
@@ -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 <stdlib.h>
 #include <stdio.h>
@@ -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 <stdlib.h>
 #include <stdio.h>
@@ -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 <stdio.h>
-#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 <stdlib.h>
 #include <stdio.h>
@@ -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 <stdlib.h>
 #include <stdio.h>
 #include <sys/types.h>
 #include <sys/statvfs.h>
 
-#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 <sys/types.h>
@@ -15723,12 +16244,6 @@ else
 #include <resolv.h>
 #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 <sys/types.h>
@@ -15793,12 +16313,6 @@ else
 #include <resolv.h>
 #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
 
 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
   --*=*)
     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.
index 2c70e33ee748806a982ed8337817a2cf97c93ec2..8ea505329083c580e439f5885bb7704effa477b8 100644 (file)
@@ -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
 
index 7ecd9fbee1cbe5a24278738f2e75ed38117673b5..3b60e190ead0726d12e2a7992d6dbd4241bad386 100644 (file)
@@ -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"
index 6e6374002a440a9e6c611005d3fb692fc95eddef..2490256cb989acce84988fb2e22cb0d4d1a3f272 100644 (file)
@@ -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)
index 00201a074b497dbcde99d95f34a259ea45d1ed98..2848d906987720ec1a46137e92cf6ad557806683 100644 (file)
@@ -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:
 #
index 5c0dda5c5a38c5aa2042954dbc7df491bc5438f7..a598e4fd0dd7edd6930fcc094069a5e6a21e3dd1 100644 (file)
@@ -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,
 #
 #  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"
index 72d73cf717a60a544118e12888220fa8b3923057..2fdc561ddf56a826219a0c9c8c72a70a6e66a9bb 100644 (file)
@@ -2,7 +2,7 @@
 <article>
 <title>Squid Programmers Guide</title>
 <author>Squid Developers</author>
-<date>$Id: prog-guide.sgml,v 1.53 2002/12/16 19:53:06 robertc Exp $</date>
+<date>$Id: prog-guide.sgml,v 1.54 2003/01/23 00:34:54 robertc Exp $</date>
 
 <abstract>
 Squid is a WWW Cache application developed by the National Laboratory
index 9e2f53d30182299c2417717f8e66f4346596090f..d0635ea03e23b51cc1e2d620914dcc56dae472fe 100644 (file)
@@ -7,7 +7,7 @@
 <BODY>
 <H1>Squid 2.5 release notes</H1>
 
-<H2>Squid Developers</H2>$Id: release-2.5.html,v 1.3 2002/09/07 05:41:41 robertc Exp $
+<H2>Squid Developers</H2>$Id: release-2.5.html,v 1.4 2003/01/23 00:34:59 robertc Exp $
 <HR>
 <EM>This document contains the release notes for version 2.5 of Squid.
 Squid is a WWW Cache application developed by the National Laboratory
index 66b0138dd315db7c15c1d2f9a021a46ce08e0890..da4f5622b5b2559bdd6c1df4861beb0f99d39a34 100644 (file)
@@ -2,7 +2,7 @@
 <article>
 <title>Squid 2.5 release notes</title>
 <author>Squid Developers</author>
-<date>$Id: release-2.5.sgml,v 1.4 2002/09/07 10:17:00 hno Exp $</date>
+<date>$Id: release-2.5.sgml,v 1.5 2003/01/23 00:34:59 robertc Exp $</date>
 
 <abstract>
 This document contains the release notes for version 2.5 of Squid.
index f768004a62741a55cd5c3747890af469b00a21e0..190ea316da448a11259f747a4eafc86c82df8935 100644 (file)
@@ -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
index 30944d1791f2513cb8f27ce2efd8b3fe070c839a..a3235e282fb942e1ba9a5673342c620609bc2f04 100644 (file)
@@ -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"
index 174673f0bfe1e12f1cf5562c0f1b9bff5cc0c085..eae9d6e5134ecfe219cb33665c370c8e0989e053 100644 (file)
@@ -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"
index 180960d87c907660acc6079d38331a260aeeb06c..c3da4d793ee55b33b5de5a81510b3aee9298b703 100644 (file)
@@ -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:
 #
index 541d35360f7d13c8c765ea8814dd0fb23e77252e..bdaa0ac4cab0d62e24f29f951382ac3da3847eea 100644 (file)
@@ -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,
 #
 #  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"
index 9ffb626a1df1954ab7edf78b70ad0e35b1666d0b..09565e16e4528b9fc29eae4ad8226859437e9a22 100644 (file)
@@ -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:
 #
index 8045a5c5ce53e0257c16394ba9342c18d7d70ee0..eac6dd65cd434c2cba044a819f5e9ebdc83cf0ca 100644 (file)
@@ -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,
 #
 #  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"
index 9a30aeb6705e835aa1a0d6568d018a7365908c90..9d3098e092267fc1c8cbdec228a39cc96e9d9186 100644 (file)
@@ -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
index 4017c53b01ccaad4a7780907de7a685eeec29b0c..5c63bfdd0d7997ee76537c1fef8c38abbf1af8f0 100644 (file)
@@ -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"
index 4a55e42c9bbe892b12d2bb8b39e5ba704462e453..e4d292aab53bb7672f364a6fa87945d2dc5495d5 100644 (file)
@@ -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:
 #
index b4d50afa9a811ecc268fa6193c482defecebb82f..232c0660cf953540777e8242556e89e2d5c507bf 100644 (file)
@@ -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,
 #
 #  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"
index be4d46a5d438308f20c7e8fb4375bfa8567afe90..1578cadd88a6feb387a71e7a7634c893d3c65b68 100644 (file)
@@ -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:
 #
index d1e12991d45728705e1b89aa214078a483b21b3b..4e532bdfd4b1af5d8c57f668e05d6dbf050d4f0a 100644 (file)
@@ -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,
 #
 #  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"
index d815a78ea3c341412f091bbf72e5dfad77275034..144f2018b1d9a9c93d69adab4c0e70434bcebe71 100644 (file)
@@ -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 <hno@squid-cache.org>
index 9735bdaf3e115ae619e224db337140da47b0bfb6..f06274a0630fa05d341d8985a5218b0d4f0eb735 100644 (file)
@@ -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:
 #
index 420f0f3de201f0e1def75ee7a4e5746ee4f817fd..07f39c5bccdc025829453a7705085da0f8f5a2ea 100644 (file)
@@ -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,
 #
 #  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"
index 082ae1e5489467cb3659a1356d1b395474e39e86..f7ddea1fee9c3dfc8eb6e580c917ecf1f1393716 100644 (file)
@@ -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 <ian.castle@coldcomfortfarm.net>
index aedd63d1d18fe796f593fc8646d2353941d379a0..4d7f8bb58f864d20734ca3b65a6214e43f2a97c5 100644 (file)
@@ -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:
 #
index 512882dc8ed36b3c471926e68e586f3c0e04cd4a..fe58521fdc7da6081de7fee9811923db2ebb7e6a 100644 (file)
@@ -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"
index 1f2ba03864dbc053d388bf0640a14fe7d2b31bd3..36bdf67934436e6c75f9c5256694ecde7c7dcd37 100644 (file)
@@ -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 $
 #
 #
 
index f938f60481c8df6e3c35d0b9eec61348cf7805fb..0ba55ec2af7417d32d0fe00845ce22d63a2dc850 100644 (file)
@@ -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,
 #
 #  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"
index 46f3b32d67cb50f589d3e330db625bd75c09cc0b..8bc01b64750bdf064fbe6869a46dfd74552f54bf 100644 (file)
@@ -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:
 #
index 124ef9b7f0e4486a3f355738b1741b354c6ea3d3..cf66e5a8472149986f1a54219340056c78944a4d 100644 (file)
@@ -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,
 #
 #  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"
index 10bf10350e183c7afb538cf7faa3ddcfe131f468..fa93397181c9285a46f323bc3d1cbfabfbe6685a 100644 (file)
@@ -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:
 #
index 66ef022ddb1ea788420b3bcf89820c3f99e46058..90c75eddfdf9ede5262c946da7797499dcb4e4ce 100644 (file)
@@ -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,
 #
 #  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"
index c28fe642a28d2aaa10def13850822d0aaaea1d30..71898facf566f994c77c62ea6fb756ffc214d91e 100644 (file)
@@ -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;
index 1aeb18d557d4907388c58ae91f4132255c9bdd0f..128f2aaef16941ded8bd116dd1796db34337d54e 100644 (file)
@@ -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
index b3946b812fcbffc2faebd7932fdbaebf7aa998cf..942c4e1dd9ae9590ce83cfa862c3382a0694943c 100644 (file)
@@ -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"
index 8adb4a406ad950b49cfaffc8433a4b5ec34d6607..d1fb9d53db02373ceb9bdfd893ed3efdf0bcab66 100644 (file)
@@ -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
index a3dcce1ccf86951af25a59153cf04e6d27546655..7ee6e41d2216bc49348467cbd884d896171c7ac8 100644 (file)
@@ -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"
index 0117029b9ba10c93dde51fae660d4e71676e0e48..72ab19aab468ff373ea5d532d45cb95d535c83dc 100644 (file)
@@ -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:
 #
index 34daebc7204ba5676712ae941a9344af56968dea..8eafdf0276fa6e7952a385abb24d2e5ff6c0124f 100644 (file)
@@ -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,
 #
 #  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"
index e57ed62aeb4d0cba82ae0e93dfb1f003051b31eb..39c172c884a0644a34fd30bce0c4ad7ab70c5bec 100644 (file)
@@ -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
index e3d8f98682c301eaa87a2552493fd9f023189148..def27a8b39adc837152981d6b91f0f836cbc9c6d 100644 (file)
@@ -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"
index e378bc7f140ae88e65af4cf06daad5cb79bb447d..798df2a0935af0df9691438004a8940cb2e0fbed 100644 (file)
@@ -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:
 #
index ca8f049e79af944b0ef56514f6eaea18f0475295..fa39264d066e887f6f293cde233fe7ed2117cdbd 100644 (file)
@@ -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,
 #
 #  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"
index e2f38fad59383bff28c65d6c8ad1a3c6a1bacff4..b755efd92d9756dfbaca4304e813b185ef698b70 100644 (file)
@@ -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=
index eaa697a55bfa668e17a8e00ba148204ea34c48ee..e6d8304141286120768b4aeff74fcdd291fe4594 100644 (file)
@@ -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.
index cc3fbdd5a26fdc700b36813719f19c455b8d2b78..830355ac6e15e750d01e58c17f40645cf12cd983 100644 (file)
@@ -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
index f994e9025b0aea30fa5641fbdf313875caef0a6c..72c63540195c5e34397949b396c2230fda90d780 100644 (file)
@@ -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:
 # 
index f8617f461e64e64d8b24749a3a9e57fcf279b815..b6b8093793754f570d2d8e538d4e22735ae99529 100644 (file)
@@ -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
index 8fe676a699a0aaf03ab269702f2c86fc9721a74c..c692edbf6a6c01d598e7720729cfedaf90eb7d6b 100644 (file)
@@ -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
index 071d529b0bfef976604b9f569365113157db537d..89e451364d60450bdc72d5825bbee6ff968c700f 100644 (file)
@@ -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
index 5f0fa6615a1dd29baad23c7a476f24c41e0eff82..829b31b1f7906723dd9c2b2a847906429dfd3f00 100644 (file)
@@ -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:
 #
index f6c318314bdadacf4a2ce28dac6b6b22794af297..544c68b49ae43c138ebd2c75203bdbf9460b23cb 100644 (file)
@@ -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,
 #
 #  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"
index 51cb88b6403e60d7fe2ff44cf6c2c866180301e7..b471458c4ac0c015ff83f3cb6d10d95318a3e814 100644 (file)
@@ -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:
 #
index 81be71ff0ca8a9ca26e3443a5e8f3b6977ad998a..090fa8aeef3491d89fa628760b971dec8cfa14e2 100644 (file)
@@ -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,
 #
 #  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"
index d365be59df8c93758b19aadd364b4762d59b2688..f4794f2b9fbf8803d09b46a5fd44e2db015cdd03 100644 (file)
@@ -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.
index 66b54e510be8f118f789d3a6d1a8554b43d29ed3..37539ea33bb15262aa90f32420d34fbeba21b8ba 100644 (file)
@@ -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)
index f19bbbffca4800ec6049580234f75aecb07e3862..7637c4827c35d55a80407190a40215f5199879b8 100644 (file)
@@ -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:
 #
index 2ed8505e6ce2d1b11eeb07a57cf577eaba1b7323..eafaebb804a19bc27ab79310c5de9527994b2999 100644 (file)
@@ -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,
 #
 #  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"
index a54369a6ac394d71530ffeff6ce159de87abd15e..2d47c44793064b435313ad81c31830c719694cca 100755 (executable)
@@ -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
index 7fdd29c5de039e08ab88d08fd0fec412e4bf162a..17404e21a6d562ab9e7a678748a0d32100b7d7c0 100644 (file)
@@ -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"
index 9ed948c0fd5684a9d2c6a73c4107567854c808b2..e6255abb6c8505a2e88ad35477200a5d98ae3dd7 100755 (executable)
@@ -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 <squidnt@serassio.it>
index 131b3507712eb68d5450202ad8cf85e7a57c8908..c40b5bf6beebb4f5e7aea70a280643046e317353 100644 (file)
@@ -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
index 0c52c803f80b02b2db91901ecfcf5d39feffedee..2fb5082646bf2089d533013adba4ce7fb68328a1 100644 (file)
@@ -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"
index 493877fd0426ed9a393aeb6c4ea11b6ab95ce528..91b14d730b0e5082b3af0541f58678e035c55771 100644 (file)
@@ -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
index 0f87053bc86a8fe96710cbc032da18813cb78c47..cf7325f4205bbd8ca65ed4acd7c4c5932fcd77f2 100644 (file)
@@ -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"
index edb615839d1bbbace54548981d547530c50151f9..5aab265a25ead086cb9c63a8b36b18ad45d2acc9 100644 (file)
@@ -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"
index afe307d8a7e0f39e687cd85e30487a9ef7a69d84..bde765a187d4f4dbab5d58e042d86c128035e4d9 100644 (file)
@@ -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:
 #
index 9d87cd1949c39ae4b6ffb6b4d034fa3baa209862..322b5242ae25c1fa2a1ada67fff53a07956bebaf 100644 (file)
@@ -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,
 #
 #  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"
index 9327e686631691cf15dd280e8694cc4b99602b52..08deda83d71e2b93110cf9a42829f0638a7e1c1e 100644 (file)
@@ -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 <ad@interlude.eu.org>
  *
index f1516ef75a9ac0976f9e883991e0a02f469ee5e2..6ff99684444fd550cbe34ac98fde264a6ca23495 100644 (file)
@@ -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:
 #
index 72087a7f8e8dfdf20ebd54b6e4ad7509074d30e7..adb983aa196acf7e0173ed805e61fec69b3df6b1 100644 (file)
@@ -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,
 #
 #  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"
index 934ea64d07f4c7815364cb757fd1f9d57739e641..6983fd1980f8346ca368530669753037c620e8c4 100644 (file)
@@ -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
index 5d9a7bdf4da84b318ad3348a85b04ea7c671b3b1..068c480d0aac863cd389e3070bbe3d8693bfef38 100644 (file)
@@ -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"
index aef29f92785c82cc77924a802cf60b743549e38b..2636e0282166854fa84e028c75bc0536e199ba8b 100644 (file)
@@ -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
index ca20b851d3d59c3d9c462e5f6229097dccba8df2..b2aa693536d0ad20e55bdb6903e4f78060b36b8e 100644 (file)
@@ -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:
index 9129cc9bd0f69620f1508a53965539c8dff69ddc..17808f7c2aa2c0c825e7a45e8e512d65c78052e2 100644 (file)
@@ -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
  *
index 048b921433618364f2cfdb72f0caf51b9dc9d96c..f4af992cb3da642935679b2a2c7d6763d3da6b44 100644 (file)
@@ -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
index 5e7f5b863bf313b3f67298f776d0fdd87ec3b658..84779415c8252332e0cc565a48f078840786074f 100644 (file)
@@ -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/
 #define SQUID_RANGE_H
 
 /* represents [start, end) */
-template <class C> class Range {
-  public:
+
+template <class C>
+
+class Range
+{
+
+public:
     Range (C start_, C end_);
     C start;
     C end;
@@ -44,17 +49,20 @@ template <class C> class Range {
     size_t size() const;
 };
 
-template<class C> 
+template<class C>
 Range<C>::Range (C start_, C end_) : start(start_), end(end_){}
 
-template<class C> class Range<C>
-Range<C>::intersection (Range const &rhs)
+template<class C>
+
+class Range<C>
+            Range<C>::intersection (Range const &rhs)
 {
     Range<C> result (XMAX(start, rhs.start), XMIN(end, rhs.end));
     return result;
 }
 
-template<class C> size_t
+template<class C>
+size_t
 Range<C>::size() const
 {
     return end > start ? end - start : 0;
index 911e1252d82f150ae9549cc237b9574e09bf4b2f..5f02d6a99b9a482cc4ba7aba721f0d028150ecc5 100644 (file)
@@ -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
index c044cbced1225930e6b858335d082219905137ca..c03a0f265553339f1fd3681ed65ed79ec1acb438 100644 (file)
@@ -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
  *
index 4c6792701cbafd8e48eb0b96399a37f3b5bb4da3..328c4ca3697acda4c25ec37b5cec1d328f935d7b 100644 (file)
@@ -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 $
  * 
  **********************************************************************/
 
index e129e4163b4e48751f50c447b0c2aed4c5b9f7f2..714131c2dcbe25fffe234ba81f66595e9c874d68 100644 (file)
@@ -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
index b7244cd8d8887c13bd9c189c0e56b3a98b2ba971..78db763474f25ea11cefcf80bcf7e3fd5462a3c7 100644 (file)
@@ -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
  *
index 99bd430cbbdb857885b631e474bffcf3ac46ea8a..7e05d1d9fa7fa1fdcc3fcb69587b20725e4f5d20 100644 (file)
@@ -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
index 6e256a2cc3957f22ec13db4bbdd8d906d6048548..f1e4a3f52b70fdb191312aa9ad47231f9ec9723b 100644 (file)
@@ -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
  *
index 5252d45a56a2a3287771b5a3d78840612fd3bdf8..70a370bbd0fafb75fead043bf3579ae1c5e10d01 100644 (file)
@@ -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
index 10232902cf1794975370baa697ba3f08a90fef20..9a5b59ac3ff689fe34ca48187928916e5d8aee30 100644 (file)
@@ -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 * * * * * * *
  *
index 06e4469e0809cd40d4ab66d98d551444a83654fa..db79e02b952daea8dcf04d9d59ccde9dba2b1419 100644 (file)
@@ -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
index c38067acdaa13664f42e22ab9f8786c24bd8e6ba..76bee3668e8b8c895c8f5d71028975a5c7d35399 100644 (file)
@@ -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
index b3196fbb19b493e629b7478016adfd01724f2180..9c5f5c065e908cedcbd7ea15a993e828d55055ff 100644 (file)
@@ -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
  *
index ee14507b593d15caaff0febb5cc4f12c9fa10afa..ab38cd6357137aa346631e78ea131b6f9ab77422 100644 (file)
@@ -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
index 2da0b22e3aaf062738762134426a5a9673e85307..020342f6d603f56bd411615f942ce6acd3c7b9e0 100644 (file)
@@ -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 $
  * 
  **********************************************************************/
 
index 71ca7b9c01eaca0a57dce5e863b29f10fa27a374..33e56ca04ef7a325717475ebeac85028b23610cb 100644 (file)
@@ -26,7 +26,7 @@
  * 
  * Author: Ryan Troll <ryan+@andrew.cmu.edu>
  * 
- * $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 $
  * 
  ***************************************************************************/
 
index c316ab4a8f6c43416454c666db871505e441faa1..203eb07e00a549df7689de7bdc11edb5631fd5c4 100644 (file)
@@ -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 $
  * 
  **********************************************************************/
 
index e8a13131b3824e92533f5328d7e3820b611fd497..80caab04bc68c25489944eab936053935636ea17 100644 (file)
@@ -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
index 83a6525ac3e6805669d934a077ab4bc71484055d..3fbd14073b166a028f3676ebb53246636d9e6a0a 100644 (file)
@@ -26,7 +26,7 @@
  * 
  * Author: Ryan Troll <ryan+@andrew.cmu.edu>
  * 
- * $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 $
  * 
  ***************************************************************************/
 
index cb1f1884e0696cb53e7c94dad71194a1c619bdff..cb9aa8fb383913516a817b93b2b1cb5f25a27b8a 100644 (file)
@@ -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
index e269f3ba1fdc60918cf7467a82cd49f888f741db..3158e34931119f89caca32701848da7c90904b89 100644 (file)
@@ -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
index b150944417874de1c00e66fc874ca06ad97af234..4095345fa55a13e0685eaec7f44e42d53fd383b4 100644 (file)
@@ -26,7 +26,7 @@
  * 
  * Author: Ryan Troll <ryan+@andrew.cmu.edu>
  * 
- * $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 $
  * 
  **********************************************************************/
 
index a293624a849589f368a7c0c750d4c10c037607c0..349c275b6d9f9b8c29c9fbe3688dab73cd0aed79 100644 (file)
@@ -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
index eb1c7ad2389413f2fbb67ae33e90003f6e7c50f2..03c5c51b18039b27df2c26c735510d27664ae9c6 100644 (file)
@@ -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 $
  * 
  **********************************************************************/
 
index 36972451f16eb1da349fd078c78352686cf8806b..901c66862dfe55871fae69c7e76be6287869d197 100644 (file)
@@ -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
index 7c6f44b6e666745597916182da5e503035befcc7..633ae5b49e0245582b714919094b82fc7d4d50f2 100644 (file)
@@ -26,7 +26,7 @@
  * 
  * Author: Ryan Troll <ryan+@andrew.cmu.edu>
  * 
- * $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 $
  * 
  **********************************************************************/
 
index e949a641514fffa1517af49d37f7bc795828534a..a60addb3e9d067166322803a60b1050cb4d30b32 100644 (file)
@@ -25,7 +25,7 @@
  * 
  * Author: Ryan Troll <ryan+@andrew.cmu.edu>
  * 
- * $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 $
  * 
  **********************************************************************/
 
index 3462f7d1354f7db16222e391942531863a0b1fcf..0d87de033fb1b0f2c0f0ac481c859d79904359d9 100644 (file)
@@ -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 $
  * 
  **********************************************************************/
 
index 1d84646f0eb6c1f50cddae05e5c8e2b2eecb3f8a..c86ba178e8f3529c6f45f314259b7c22355d27df 100644 (file)
@@ -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
index 16ea4b654769b9c83ebf3bf14a7bf1471e1516ed..b0ba155498c43acdd43feb70244d054e5da90c92 100644 (file)
@@ -25,7 +25,7 @@
  * 
  * Author: Ryan Troll <ryan+@andrew.cmu.edu>
  * 
- * $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 $
  * 
  **********************************************************************/
 
index c4c5c9216ae8509c6ac64b5025e7ada34d47bb86..8268285891f3aed58d29bdc955918fc4c2848abc 100644 (file)
@@ -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
index 69a0365e78ca7e24dd502a5f5e885d15c7af6bdf..23d4c195351f3982d9730dd60c9c3fd67efa1b1e 100644 (file)
@@ -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
index ef5981e4ef870284276f59b6d554a2716587e166..7dd34f9ecb692c88d81fd24c3393966596a7525b 100644 (file)
@@ -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 * * * * * * *
  *
index 92516d825d664c7912f64f326bff8e9f05742348..1de398b62811b9c3c4300bf77f25bb3584a0230c 100644 (file)
@@ -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 $
  */
 
 
index 0593a27d9f29cb6a1e8bbc7d96a40d9b2ccc4758..838cf696d86e6f732848d227d6185a58564b6fbb 100644 (file)
@@ -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
  *
index 730456bd5b62230ab2c2fdc5f1c9b9835ba3941e..529043e6fa99f31195e0d103edf046ae7545182b 100644 (file)
@@ -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
  */
index 65b478af00e26da8b743dcb411d09e1d295a0224..0b1cfd805f21b9e74bb3acd6478258c2425215f6 100644 (file)
@@ -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
  *
index 7c5bd5a720e1c56e7c6debed14ff98b3354a76d7..378843497292156a950fde0e0a57e0f007da4ac1 100644 (file)
@@ -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,
index ea39f86fc5e553cab66d98c03be0e340d65fc98f..87390f9ca883f71276fc6869a47e6aac77ac3c24 100644 (file)
@@ -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
index e2150c812580cdfe8b4f26ef3bf9bbca1537c6a1..63478c3073327509380fd1f14ade20fe7d12c7c9 100644 (file)
@@ -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
index 025c81454a14a82e133d8f7d19223b0e094f8f71..cc2ba67834c8be5daf46f3d37bc748ba6394b8e8 100644 (file)
@@ -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
index adee8e334af2ae73d81570b4c415dd04f0b870ef..f829c6d65a3e7f1d564ee4cac6d4cef43519ce37 100644 (file)
@@ -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"
index 5602027449cda61380ee09368c1f573bcc4de3a9..658c0c7370ee30b9823d274c8df72ffc8e00ccc2 100644 (file)
@@ -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 ------------ */
index 8ccfb8cb1823faea2291c7c8a212be036dc1d4db..89c50572798e7da7de70e0d753e7718bfd7796d1 100644 (file)
@@ -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
index a001d9a1968dcf3631ffddd5b92f82afb7b9cee8..ee1fc5e92d0790c96c735e666c95a8013cc1753c 100644 (file)
@@ -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
index 1c62db91b75dd78be75ec2d2d84bd46d949e4bac..3fbc9dc03f08f00cd7f5c15d806af0b2cb3af409 100644 (file)
@@ -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
  *
index 43c4aa6a664382305db985b7c174272b23b9aa65..27937a5cd4a22b21ed65cb81d6b1abf42264f26b 100644 (file)
@@ -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
index 2b5f764eb636279870bfb1f7f1a45c404a55a897..245c21b53b5c5b26825175aed2c8a6401fa473ff 100644 (file)
@@ -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"
index 1d9ae485d7c823bb57a79d161a370dc62ee67660..1ba2bdac29dfb6956ad2610174521a28ee802644 100644 (file)
@@ -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 $
  */
 
 /*
index 4b8322498a7998e6feac07e9dd3b9987efd7de42..88a017b553f9a6e44f43e4f4a9fdf3bc4f95c5f8 100644 (file)
--- 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 */
index 06a4bc3e0ff248b6d02bff7014120280f4b999a2..44fb912a8951132cc81b1c01170cb3d99cbf9a9e 100644 (file)
@@ -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 * * * * * * *
  *
index 110240a147f048333cc1477425378dfbb22b289a..1e5ebfe25ef8677b61ea27b3d4fb55b0d565f6bd 100644 (file)
@@ -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
index 41800562a88626305287a96dcd50cf5fd187c0be..64d5f942ce20ee0e08467061125f4ba2df7f1f64 100644 (file)
@@ -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
index 8acad0f08f8e62ed82f04e6b97e9296c6b09b9e1..6f2cadd39540fff5f3ac465ee2d454a3b5594311 100644 (file)
@@ -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
index 9a2d429e63b9375e823c721e18b422485ce8b6ac..dc5fb2f7a4112d98261a0693e99833cd1f563f76 100644 (file)
@@ -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
index 5ae2730c0d73fed27b791bddfd6173871f44f623..752d50e714f17d940bc542ddf91389936bfb86b8 100644 (file)
@@ -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
index 04a042e246861f3ef60d9382949c4a1f5315fa9b..1a0c1453d64b14f2319c5cd3e7ef569466342b49 100644 (file)
@@ -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"
index a44f342821c84960a7dee1cb4fcc5daa62ba2d41..5ceac2cca3a55e4c71b92ba49809abb0ba6e6b55 100644 (file)
@@ -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 $
  */
 
 /* ====================================================================
index 0d8e778e7c60817b73f7706aedc4dd7a47d4c4c2..7b9494478fef40d9a62c27af072aa738808dcbde 100644 (file)
@@ -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
index f03978b2193cd5d0c04f42c93a18c4239fe8292a..5c92771381d9efc644492a77b63ef6aa9f76b506 100644 (file)
@@ -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
index 3f3b4f4f19ff4048f5479af72a09b660e054e78e..111474f49c6b1db5cf5bb479f2bc01f254010bad 100644 (file)
@@ -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 */
index c1a761542424fc9d045fdb66547657fdd1415916..6695d40e80614462dd130d9c290791c32a4d1ddb 100644 (file)
@@ -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. */
index 06fc0a46d3ea38755be6ac8960a26ebd4a085ed3..c56f4f31e194b84083f436a62f0ac9e3ba41fd61 100644 (file)
@@ -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
index 0fa66e31274e9c33bce2bee2984289fe5f5787b4..73ada954a9820f06f8da09d179c12ea4485a2b9a 100644 (file)
@@ -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"
index d3c89f2161da1953ea6ba6a1ac4e9c0329827383..35c43ef110e4af0338238d030a667b4ed8104271 100644 (file)
@@ -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"
index 0f17f86d3344e2831ee2e13ede71ac290e72becd..0720a906e280c320a2e0cbe34c1614c87267ab71 100644 (file)
@@ -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"
index 2d285ac4f580c35ca748897ab86ef28b8b5d05fc..6f918422df9fe3e9d5e2ec7d3b1f5e56bdd2692f 100644 (file)
@@ -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@
index 6133d89dfb4ea2ebf3ec6e549cf0d8cd2df3a014..45d2f74b01ccdeb8fc2c97ed2d8f580647d92e1a 100755 (executable)
@@ -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");
index befae1176fe94d13a5970f6bdc3b8d0e31d445af..b0caa8d0c790edeba2d6c48aceb8ad1f2d10c65d 100755 (executable)
@@ -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
 
index 024b96a8aa0ddb0a49beb7a9a08c5b30f74b1709..6aa9e0a96e9ecbbe17f9daa1e312aa48aea7e9d3 100755 (executable)
@@ -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";
index 0dbe98e4c621285c473ca7aac546444c0fe61b6b..52b4be75c5428251d8f4425dc70b5e3a5a428000 100755 (executable)
@@ -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;
index 9f2cfdc6e82fcf6be551a8879eb3d20cc0e2f4e2..b7a3d58a0564b5f348247dde00d4eabf830917f9 100644 (file)
@@ -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"
index b85d1f10f92c9050d88dc9d0d780d401aa55c590..dc5638e073d85d7916551df08e1893e3f72e9184 100644 (file)
@@ -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
index 58f385c3ee7b8cecb9352e5fbc36e291ca349ee4..1839d37bbcf6cd5842c0bfe7bc73f9eb6dc304bc 100644 (file)
@@ -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
index 27d7d0db05d55543e953fe82663b4f838a9b3f00..f802ec3260a26b6400342c730b50f1101916ed14 100644 (file)
@@ -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
index 19e9454d4c2b622a33debca966e80e29b87be5ca..fba0c374b46794c99bbedb87069c4dd89a8b39ab 100644 (file)
@@ -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/
index 21c75a08c280aa7e3552d0489af7906d5eebde48..be776c7746848eb848cba0f029f7b7c8379fb703 100644 (file)
@@ -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
index d4188056df483d61cf9d00a8660beaa44d3fe88f..1ca31e13c984e1fb46486d8b7182554c346a369f 100644 (file)
@@ -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));
index 6752714c197e5c456cac21765b7d8ad0af2d777d..8e79e39c0897ecdc83a049e4bb4c79d0eb73cb6f 100644 (file)
@@ -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 (file)
index 0000000..af5bda3
--- /dev/null
@@ -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 */
index 4af50f083706fdf6fa138a5eaff42d3d619d9e00..6f743713461fc062f5f9375872e5922bef996bc5 100644 (file)
@@ -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());
 }
index 7abe5eecac04845b3c5bf5638fdcdb1c1d198d84..fc27bf74f078701433580d182f76d3b81e0341df 100644 (file)
@@ -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
  *
  *    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<HttpHdrRangeSpec *> &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<HttpHdrRangeSpec *> &copy)
+{
+    /* 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<HttpHdrRangeSpec*> 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;
 }
index 3f4f937f7ebc93192775809a7f7d7b53c72ac52b..8d2ce64824e0d70ad95f7f2401593b17ee3db726 100644 (file)
@@ -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;
index 830e021d65befcf36c5184b1a81ac142a7e597ac..dbb65aab92f88d1b81e5f4d55f1500aed533f73c 100644 (file)
@@ -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 (file)
index 0000000..7056872
--- /dev/null
@@ -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<ssize_t> 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<HttpHdrRangeSpec *>::iterator iterator;
+    typedef Vector<HttpHdrRangeSpec *>::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<HttpHdrRangeSpec *> specs;
+private:
+    static MemPool *Pool;
+    void getCanonizedSpecs (Vector<HttpHdrRangeSpec *> &copy);
+    void merge (Vector<HttpHdrRangeSpec *> &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 */
index 0ce931780f267e4654fd1533d03d799f37786bbd..49610fd800903bba3171ce31e8f0c52121c1d34f 100644 (file)
@@ -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;
     }
 
index 35f229d028eca885b0f17246e6152435df1ea9fb..4fc11286dabff2f4121ee663fd39269de1389f46 100644 (file)
@@ -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
index 1ff35324a8557df572dae7aac9df4042641c70ef..b0d12b767c5d4d18187a4795a9d94066c8e68329 100644 (file)
@@ -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
  *
  */
 
+#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 (file)
index 0000000..9fcd889
--- /dev/null
@@ -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 */
index 6bdd9b3fd74ad54f384a027e0df75697448c792c..fe48d5f928cf733d3b5896b534828281232f551b 100644 (file)
@@ -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
  *
  */
 
+#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<request_t *>(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 (file)
index 0000000..3351283
--- /dev/null
@@ -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 */
index cfccb145a0408ec552dab8ef95eda98fbe448155..a74b4c9b57acc8158e1db626c5ce0ad639bf65ea 100644 (file)
@@ -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
index bab4e8b11ed1b55fb69c6fa7d27d61c65aa0b265..476fb1f4786a2235c3064678fde53243bce1886b 100644 (file)
--- 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.
index 7f29967d1bc6117f1bea329c7c7a764d72724bd0..93f61ea74de7cc61384a5642a0ac2624a34950a8 100644 (file)
@@ -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
index b2ab308ab1a351e5fd68e346561991dfe23ba005..38329a0dcfeef31a8a981a35122b28e09dce8f3e 100644 (file)
@@ -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/
index 55d023cb15de1ca7f8e1c03493de93f4a2112d5e..4e1a0bb513ec607ca508bb11354dcd1b8b102be2 100644 (file)
@@ -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
 
index 52c74eac3ff2e4610a7309dd65aaad2f1b5366b1..6bd8abe0be13369a2af0f90f147cf7e4f4ff41b3 100644 (file)
@@ -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,
 #
 #  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 (file)
index 0000000..e75ae4d
--- /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 */
index 02aa3a1d37d58f25e8a9d84e90d47e1e2a432258..710933b942a1a25d7663d8a277aa7548dd1a23fd 100644 (file)
@@ -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 (file)
index 0000000..e1d8278
--- /dev/null
@@ -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 (file)
index 0000000..cd9c1e3
--- /dev/null
@@ -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 (file)
index 0000000..e4b7450
--- /dev/null
@@ -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<store_client, void>
+{
+    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<store_client, void>
+{
+    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 (file)
index 0000000..f6d7df8
--- /dev/null
@@ -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 */
index 179870b245593e014db830edf2f33a95f7b79e3d..e00eae4849c3a0aba2b295d7337468c1170292d6 100644 (file)
@@ -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
index e27a675d30e070b3a6e159bf5cca6630031b4ad4..cd95c407a74c1790dc91f333565102118167007b 100644 (file)
@@ -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
index 54768833d713b7532d1ba7b03c8be74aefb75a46..a17b52c52e2d6333f17e27242263cd816cdeee63 100644 (file)
@@ -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 (file)
index 0000000..c007f94
--- /dev/null
@@ -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;
+}
index 4fdb9394bf34f3bd0417362068b6ed0f38439ca6..15efec74f92d8cc6e80688d1ba8c6c62387b9827 100644 (file)
@@ -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/
 #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 */
index be062c7f36ccd29def60af285d35f4a78d33d6ba..3b5c08b93618f6491e1f6ae0c5826735dd47e839 100644 (file)
@@ -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/
 
 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 */
index e077438246c5b58efeab7e1d78626413fb971922..21e7f1a21dfbb7e4328d0b5293dc393272ba8e58 100644 (file)
@@ -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/
 #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 */
index e335091634d3a5e7027b370a592c4b7db84308cc..7fa230ab4e7c92860e2191191f35d05d56ce26a4 100644 (file)
@@ -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
index c6b7f0d4a4c4747304d87d0041ede9254b9993db..a763a7fd9e3c10d10a026e405d80424bfef94548 100644 (file)
@@ -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 (file)
index 0000000..5831618
--- /dev/null
@@ -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 (file)
index 0000000..ac7ff78
--- /dev/null
@@ -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 (file)
index 0000000..a8b03f6
--- /dev/null
@@ -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 (file)
index 0000000..5465125
--- /dev/null
@@ -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 (file)
index 0000000..2fe3b27
--- /dev/null
@@ -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 (file)
index 0000000..1c78e8b
--- /dev/null
@@ -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 (file)
index 0000000..57bc9b2
--- /dev/null
@@ -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 (file)
index 0000000..747c4d2
--- /dev/null
@@ -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 (file)
index 0000000..1fb726d
--- /dev/null
@@ -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 (file)
index 0000000..bc427eb
--- /dev/null
@@ -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 (file)
index 0000000..83b4863
--- /dev/null
@@ -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 (file)
index 0000000..58a6a0b
--- /dev/null
@@ -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 */
index c9d4d0a21f9986303a833d4e7ef407bf38671791..3f59c381f0168b693c93525ecd917f03c20cbee7 100644 (file)
@@ -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
 
 #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 (file)
index 0000000..239ad09
--- /dev/null
@@ -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 (file)
index 0000000..bf0d2b0
--- /dev/null
@@ -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 */
+
index 136fa51ab80d9e7254e680f27cf5a3a6822433aa..40434826828010787adf908791861010fd394315 100644 (file)
@@ -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
index 2d7d03ac77c2e045f670ca9fe3b40c393f31adcf..6c59848e0fca81ca0d14c0af853e08eeb39baf79 100644 (file)
@@ -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 */
index cea56388ee9d5bbc6b0914951d03e67bdef5032e..56aa03b7198a84a932bae9703a763b8a948879fd 100644 (file)
@@ -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
index 0e109c3dd53329d65272143523a24d37e2945efd..b2a850b3c1fa290f556bf835a79352c6980180b9 100644 (file)
@@ -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);
index 098639b5f6a80d3859c0ab25f183f9dcd4ee3c6e..c740277371a56d7d2988faa3235eff937cbbd5fd 100644 (file)
@@ -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);
     }
 }
 
index 871c904d778b2dac18a884b4b38c0620de9de339..7f691e89dd6b714967952c634d9706a0c88b202e 100644 (file)
@@ -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
index e2b6f46c85c29b3fefa19bde6d0cbb5189ac28d1..d8e9c4a9edb989c107e9ef3afd3a8581c8604339 100644 (file)
@@ -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,
 # 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"
index 53401f76103b09d94adf4d4292a9db62fe539aaf..79c979281a8ac9692d3e8c11e8a46e245cd1d030 100644 (file)
@@ -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
index 58c4cb2ae63b4008330edc90b72ce3926c188598..bf142b6cec4381ae0fa11bed9931fc1628fa4981 100644 (file)
@@ -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 */
index 6921dbd78471956f378c13dec8406188971f502f..db26724365c400d6af27dfd7d1f66e4f3c597b41 100644 (file)
@@ -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
index ff4e4abb447b5dd862065dd7b81844300c5b8c45..39a6a3d44274b8526f5b863b55bb373c6b8729fa 100644 (file)
@@ -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
index fd7161a5fd1474b4dfea4ad750bf844e29fe1e55..2d1a048e7df77a72758b442a8558aff20369b7d6 100644 (file)
@@ -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/
index 61914b01cffaeeef824c9e38df84f653e7a17e0f..54de34367c4597a1f6eb39a5633f317ac8f18872 100644 (file)
@@ -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
index a1024a88c6c81a4e7554da1fea7116695d35d1c5..a8682c612e7017370f074e556b7c3248f3f63b57 100644 (file)
@@ -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
  *
index 5eac0d786123b906eb231d06ba064398a64d68f0..2f054099c67e6ed2536377312b2bfe9f07105dbc 100644 (file)
@@ -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
  */
 
 #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);
 }
index 2a340f24be0bace833e9505cda7149dd71c5a83f..7e643fb1ee0578ac7a784ebe1a939829705fea07 100644 (file)
@@ -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
index 0bc6b0d083828af39c2ff26a099519ec6b54f2f9..56f3cc7c447021d9b00d8fd0559f74b87f77d00e 100644 (file)
@@ -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
index 7daa9584a398f0e72e2dd720396af52ecd220e43..f092eecc2bd62e0cb5c17c35c6fb3b85cd6a2f2e 100644 (file)
@@ -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);
index fc65091b45809bcc142e5ec40f3d8a4be62cc17b..3ecbdd1890bd5a5129afe102c2cc27bfdfff9601 100644 (file)
@@ -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/
index 44b16c6fe729d797936de3b81a225ea5f655a393..c0919c80d9174fcf538f9e6d1cf07f5132ce311d 100644 (file)
@@ -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
index 56931f202557c5e384ab038ef81f1faa844ec348..6ffaffce3b81aee5b3861784e80087434ae9d75f 100644 (file)
@@ -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
index 908e3f4a6c32e548f7c77db4da0774bffb4c6e1b..6578970a4a19a459981dc1574875a18753d37b28 100644 (file)
@@ -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);
 
index e3acd345ad012912d396448d20794e112879419a..b602eb0ee88c9747b6c72ebbd888b004045f6bdc 100644 (file)
@@ -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/
 #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 */
index 2b414aa9bc12d584bc37827d440f5290f7366d6b..c3c0f7cba764d9a7195ad4c7521e6ecd62a29f81 100644 (file)
@@ -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
index eb7c4ae39e6269119b8c21f4e87b0f3ead820668..6a58b0cb04b11f52d46e79d55644de05168fa35a 100644 (file)
@@ -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
 #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 <crlf>! */
+    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 <crlf> (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 : "<none>");
+       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);
        }
index b161f989c956d5dd60cdd9190c8c7f0f3a626fb8..a5cb1c3fa991a9157a892167974515e557b4c91b 100644 (file)
@@ -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)
 #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<clientReplyContext *>(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 */
index 495d14f4edd9d170d3056b7a1caea1f7cb534e04..783e5f4c19c0ed7ca80a4190b09d1210804ade27 100644 (file)
@@ -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<ClientHttpRequest *>(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);
 }
index df532b5a084c46024d78ce743099dd99248e47c1..76ac6f03322febab6f98a2b96427589267890ce1 100644 (file)
@@ -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/
 #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 */
index acbbc80d00ba9887caf48673cd812215c8bf3d65..bb2214fc6e1da9a9b44aeaa670f948e2c6781c8a 100644 (file)
@@ -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 <sys/ioctl.h>
@@ -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);
index 6ce1bfbf695ceea9fc70ce7da4634fb0cb3247c3..1339366896a9d68f0230ce05f9d106251a484b26 100644 (file)
@@ -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,
index 0bb4a0086361be0f49b912a1c0e4bd0abf178663..04ee0f3d926cd0d588953cfbfc905c0503e18eb2 100644 (file)
@@ -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
  *
index e18d30d0bc4596f64a8e812cc897b696ca961dc6..441e62b8d846e2fb918f0643312671ef54c9110f 100644 (file)
@@ -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
 
index 906c8b74ecd94276f4a4040305c07a3795fd24be..2a81f6479276ebc381dfb2ddf5a7c18f185de697 100644 (file)
@@ -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
  *
index e14665fa38908e0246013c18eaafa3aea3716d1f..3c8a5f17bea4f75b0c916e375c3386e309b3155f 100644 (file)
@@ -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
index f07909c1bb2f4215665aa59b6367527cce5b970d..0eda5eb49ed0c2fe3c76b313fab2e0dda85500f7 100644 (file)
@@ -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/
 #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
  */
index 2c46cdd24d5de36be2f28aac6b42a86ba9144816..f1254d0c1d3b2c9d9a9b0f7b16f2852c8c8fd824 100644 (file)
@@ -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 <david@luyer.net>
@@ -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) {
index f49139d777a1ad51c2d10d65ff2b1fdcc8969354..9be90b15e865852e9e1154edbf651ef45f26ddbd 100644 (file)
@@ -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,
index 44dd2a972cc8b1b1feddf34576707c2d600edc2f..30b92b91daef29eb8808d8506603c2ab56ea47b2 100644 (file)
@@ -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
index e642b5e8b8465c1d9dc72e7c9f7772a55d676fce..8643ced7c8f85229de125172bee8c271ec3b1145 100644 (file)
@@ -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
index 64b2344348aa8506bacdcd9fd550d4459bafa3bc..e7436629ab24f655820da726764f14596a8a03d7 100644 (file)
@@ -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
index a01402de5f06de2164f75c95647012f50a73eca7..b66a728bdd51f03b54ed3ef2e7de0a6560b6fbf6 100644 (file)
@@ -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,
index f61315d76468f19d884981b76204a430ca52d656..a9fc86d1c4d4e84753b0c6286cce59394a71f6b0 100644 (file)
@@ -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
 #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);
index 3a35ac40ef1133b87a0b1147ffe5b02585e008eb..418d0efa150f9355a749c7c1ccc80382e58ce758 100644 (file)
@@ -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
index 9560ea6d69c899385b48cb64a3d577d22d23d784..544777c263c9cc175b1c50810fd77ac58c13419b 100644 (file)
@@ -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) {
index 82f556c946d031621a8c8d99ff3d1357d12f15ad..18f2ae28db7381ad8a3578b5be0bedd9ea308134 100644 (file)
--- 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 (file)
index 0000000..dc27ddb
--- /dev/null
@@ -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 (file)
index 0000000..058ef5b
--- /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 */
index b7441b022af78bf2722d0268a8db43ecb7e8541c..3c1c55c69dc325210ca289c2d15a7784a764eb2d 100644 (file)
@@ -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
index f59eeabdbdc84aeef1f15e030ee47b7287cce119..6314f4d12b2c46f8abff67d92f0025ee52fd1707 100644 (file)
@@ -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.
index 67fbfa16efeee4d3fe768b56b104a7ed2fb7fa94..b4f3c6f49519ef0a1022dfe50f58ab7929497aef 100644 (file)
@@ -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
index 8a619ba9cbe6e92ac9ebc82d49dfdb304893f482..de1aad86713aad9e9eabb46c9383981ce0dd9db8 100644 (file)
@@ -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
index c4c19977a3f1a3058b1c1025c158f8f819a16c17..c4209cac6659c9b2954df40d386cfa4ed4011f4e 100644 (file)
@@ -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"
index 79477be3433ea4ed49d4ffcc7aa29aef43d2adf6..a0557cfabe960614f1df98306583f5d947973308 100644 (file)
@@ -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.
index d397b5ffa377c3c7efda60b3700329f908733763..8786a9fc9d36e2e762bceb7b779588eb81643739 100644 (file)
@@ -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 <slf@connect.com.au>
index 0733881745a40a1626eef85676de903b186ac4ab..02fe2020f2a75cb47592fb236e3971c62d862909 100644 (file)
@@ -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 <pete@demon.net>
@@ -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
index 45cf1efa8ea6debf7c135ebf0c999d7894e816e2..4fe12e10fa8f8bb9c121d79936fcf695c86f5415 100644 (file)
@@ -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
index efeffc497b98cd945364410eec96de254bb34ca1..ccc5233a7df58a956153a298cd5acc31c3483b67 100644 (file)
@@ -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.
index 48c5d0ab9313bb2af290736a39fddc2733e6ed2a..9c244da9f6c0d703f58dbdf9512c1402e049dee6 100644 (file)
@@ -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"
index 6dceaf7a5b964ec84ad5f4a2e68a9f79a21467d9..99f79198b5ec6d3f29cf70e9def312f6626393d8 100644 (file)
@@ -2,7 +2,7 @@ COSS notes
 
 Adrian Chadd <adrian@creative.net.au>
 
-$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
index 630f46ef8939a9d071a8787d89d5a43629e206bb..2d3e9d173ed20fd3916dead7e9c4ad506a735798 100644 (file)
@@ -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;
index 50b790bd6a56c26591cc5e9c1a137d6425ac965d..577adf4b823d155b6a8dfef7ea124297798ba21d 100644 (file)
@@ -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
index f1b4c01838f0f50b62513415e9335545ba4c4664..420a287d7d7b80fa361f4688a6220cc1fa6578ea 100644 (file)
@@ -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 <aio.h>
 #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);
 }
 
 
index bbc4e73d3dde1b2597c3b80ced42d82b222429b8..28160e28c7b3b8227c134f8379e426e6fa041100 100644 (file)
@@ -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
index 46fe54299a1aa4017ac0aa7c5f59169c2c960fe2..ffc4fd720b730bf5c6ea41e74bc183b91be99d41 100644 (file)
@@ -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"
index f001979054f69b99941d5a294bfa29a31b2911de..0db90ec59c2228d245fb6dfc81572d306a43d077 100644 (file)
@@ -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
index 72f26dfbd6f2704f8509d5d6a06a3f5fd7adb473..cd30ae1ec38c34bb76b4e9c928783542b913d3ad 100644 (file)
@@ -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
index 35e6114cdff665898bf618a22cb8bdaa80c62bba..aceffabe3cb072d428e9f1ac0c3659f71468a065 100644 (file)
@@ -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
index f052776e5f70fa8ead200b4fc68f0f2a8dea7a74..241edc0a1569477c3aaf6b84b431660e8ba4fc6b 100644 (file)
@@ -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.
index 2708215b37324571da5f0410e89ef9bc5ce2c95b..7ed1ea9baf94393e84216db905c6e29e59eee11e 100644 (file)
@@ -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
index e88efe00ca4067325ca3e745f19f59fe5d18a912..5446199934289134203d2b335904da4cf192216f 100644 (file)
@@ -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.
index 0bdf49331cc8df0699c1e2d4c711028589b5a0a6..8ae03a0362728d7974857321852a51b0579c0b8f 100644 (file)
@@ -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"
 
index e53320a3a26817ec6e611c9a370cc1ea37eb2a00..433a5b265c612e7ac5b5664654b6317dac613b6d 100644 (file)
@@ -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<char *>(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<char *>(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;
index db3dc4a026ad623b3dcfe8d5835fe4c6b56d0872..d5b3877826070f9f7a1dea3fa0d8ebe7f61dde30 100644 (file)
@@ -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
 
 #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, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n");
     storeAppendPrintf(e, "<HTML><HEAD><TITLE>\n");
     storeAppendPrintf(e, "FTP Directory: %s\n",
-       html_quote(strBuf(ftpState->title_url)));
+       html_quote(ftpState->title_url.buf()));
     storeAppendPrintf(e, "</TITLE>\n");
     storeAppendPrintf(e, "<STYLE type=\"text/css\"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}--></STYLE>\n");
     if (ftpState->flags.need_base_href)
        storeAppendPrintf(e, "<BASE HREF=\"%s\">\n",
-           html_quote(strBuf(ftpState->base_href)));
+           html_quote(ftpState->base_href.buf()));
     storeAppendPrintf(e, "</HEAD><BODY>\n");
     if (ftpState->cwd_message) {
        storeAppendPrintf(e, "<PRE>\n");
@@ -378,8 +383,8 @@ ftpListingStart(FtpStateData * ftpState)
     storeAppendPrintf(e, "<H2>\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, "<A HREF=\"");
        i += strcspn(&title[i], "/");
@@ -390,7 +395,7 @@ ftpListingStart(FtpStateData * ftpState)
        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, "</A>");
        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;
index 73f5b2cc98a51881e640beb504a22fff1c3d1316..f918df8fe269c4cb12a73622af57633e3d30988a 100644 (file)
@@ -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 */
index 2ebd8f24aee9aa41fbb64d8f862863ed3709913e..77c96faaadee3417a0351ee92df448475e8443f5 100644 (file)
@@ -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, "<PRE>");
+       outbuf.append ("<PRE>");
        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, "</PRE><HR noshade size=\"1px\"><H2>%s</H2>\n<PRE>", 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. */
 }
index 80c2c0c3ef6445651cf7b00c16ec88ca945a997b..2200dded22a31a75f309bc63ddcc765c12851725 100644 (file)
@@ -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?
index 09cc85f23ac1e2e52c4ead9cfb53dde3b9a57260..78cf50a2199396148585cd24c88dffd25b501600 100644 (file)
@@ -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;
index b9ca52f7a7a72846a0c0423b6e9bb91167b61d99..7975ae82036477b73c3a87e24282e88e1f9725f7 100644 (file)
@@ -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/
index fa385ba1e50556a01f87d6bb40696dc8623d8ce3..ab4a01039355cedcd9a2152d377d12b5536d41a4 100644 (file)
@@ -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
 #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<HttpStateData *>(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;
index 8b11dc9354c13691a834e9a4a0d0db4190d57fc9..b306c5e9556773769c9f1c9baf24a6b666413ff8 100644 (file)
@@ -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 */
index da74cc9d5d4320bfe0b895b670570fe51c958557..d8e7741fcb024527c9f575317069f7c04ae87174 100644 (file)
@@ -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
index 5dba7ef93e0b1d34dfbec34f07bb67559fc53929..8b39a3f3ee42622ad16b3542949d3802ad9215ac 100644 (file)
@@ -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)
 {
 }
 
index ba564f010ceed5a38ec5795d1baa6bca4db2d08f..eedc4ae2ec0d85f01b3a69a89084adcf63206c68 100644 (file)
@@ -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:
index 37636eb39eb29f2a31cb273cf15795ad678b2688..d902c3bbf3b1af7cbc225162696156a19c1adf94 100644 (file)
@@ -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
index a2653bbc7c331a112c657131b2d379f0a487001d..a3e72160fc4db138754a04d45043dc48c308d3b8 100644 (file)
@@ -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);
index e10015290fa280926260601d493c22368fb6f4bd..4bb40836014ac46958fb9894deabec5491023fb5 100644 (file)
@@ -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
index 1566b804d7864a3ee93622c8456e1aa4bfc04a3d..ff6d9831055c538b2fc6a2ba78999bc61d6bbb44 100644 (file)
@@ -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
index 1e72530421934cbb1f059621b6c900b4866a378e..b855cf85ff124843d4d1c4fbd221e3955a8a03a9 100644 (file)
@@ -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
index 6ff8c939f6df42475a7dd680bd006561e7b0e123..24aa7dfd1dc29acfd873c9789ee731eab7f8ee6f 100644 (file)
@@ -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);
 
index ff2ab97a54f12fc11a93a37e993f9e7f903b6bb2..8ded205db0e0f45ce11abdccd16548108434e2f4 100644 (file)
@@ -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 */
index e9925f8726d7c912d1fac2a1f67e32e23c86431c..8706bc760a4fa07864dc3a3ea8f1591da465d8d3 100644 (file)
@@ -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<time_t>(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 (file)
index 0000000..81fa5f2
--- /dev/null
@@ -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 (file)
index 0000000..7ac0b1c
--- /dev/null
@@ -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 */
index 507be53d4f5c673b0689f391fb59364065eba62c..497b27e9fdf2ee15ac67fc4b29e25ef056f963e8 100644 (file)
@@ -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
index 232aece90026aafb7bb85c18b803c0271304b8d0..aaed05ccfe811f1e587e9922b251e03b87b13611 100644 (file)
@@ -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
 #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);
index d10b1d50653ae78b853196c604f3214373c76e91..ae1c577ebc36c58f58d4dfdd4dc349378a1130ce 100755 (executable)
@@ -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
 #
index 2ac49c3fd55eebd1d717f4dbac1b0f40ef0b3a35..f87a303fda8d4827693af07d350a6b598ca0962a 100644 (file)
@@ -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
index 893a1d1f1a7934eb9c3d9c6881d0a74544756a2d..a636cf3697ffcf1ae5389c83b538ef425b7e4e2b 100644 (file)
@@ -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
index 2ad67ae85078a018cd47098d3277cd5385b926e1..27013547e25d2a0351a176295a74fb252aae903f 100644 (file)
@@ -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
 
 #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);
index 88f0fc3e0340d64a173ff853ab70e9be955b7acd..9e0e7ccbe1a761f07dc202f9c10d1fa08b7318ba 100644 (file)
@@ -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
index ac1b4aab5a44e537b11a0f80c07ae40a31660dbb..d4897133d4914581f4de2ea92b10deff5b322299 100644 (file)
@@ -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
  */
 
 #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);
index bf88db3524caa49fa02f83a6d48d6e17f36f592e..af5c45b8d468e165f6b75388110cfd51a768f0ab 100644 (file)
@@ -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[] =
 {
index 8c5ead4ae69ba9f1c413114d353f143a369c4499..00824e640089c5cf46f41114d131b30502261947 100644 (file)
@@ -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
index c44c0719b3bf21c7edc871d0a16753cb13e26ae0..071857c9592cfb571e07b5db4fa872cfdb7665fa 100644 (file)
@@ -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
  */
index da9007a2b1724d52ac2e6dc6131daf0ce354ac12..7482700017808667c3be4ff0df9c40e0eb022795 100644 (file)
@@ -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
index d2144e645842f7ae7e6048278217e2e072085b9d..cc8d1bcba52970ae1eb27c228bca5281f70f9bc9 100644 (file)
@@ -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;
index 1543b700fa6bfddad03532475491f4bf69da0690..d93441a7347a83733d9e03ef82750858af8d1e46 100644 (file)
@@ -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 <ramey@csc.ti.com> (useragent)
index cb1411427376d53911f42d2fca81bd7bbedfd641..0020a33e04558287bee4e96e885a2ad3f252bbc0 100644 (file)
@@ -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 */
index 0a490e3603141631cc579e07391add282a09da4b..8021f84023a487d22398302b3d6e154fc23c4948 100644 (file)
@@ -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
index a40be42ef85cbc750c7111e0aeac24156ffd7e48..21c90cce6657e850befc0023d5b172fe43a49eee 100644 (file)
@@ -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"
index 0f1df2c0e4466ad0c82feb1b03b906b8473579d7..48914c1192f59d436384aa594cc4c7b848435184 100644 (file)
@@ -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
index 3642477b6864343de5fe9fcd8ec6224f82ffab8d..41f4c4818a05630ba2d2b3ec03fe90e6465e50cb 100644 (file)
@@ -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;
 
index feb07dd9977e8bd5a31e16e30cc3fd8e52c34e75..94663f3a0bda740e2192c6e247263d498ef783b1 100644 (file)
@@ -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;
 
index 2958c066e2b107d394850c71737fd21c9c0fabcf..964f5aa747f539766da84d67947f0c86b02583c8 100644 (file)
@@ -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;
 
index b49e872e7a4b4413a751ed0486c5709297d2de65..ed7713a380ccc329d5d837c80cb42867a17f2193 100644 (file)
@@ -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:
index a2d4e4f936fc632102e54bd6f7b5ea5ee93847d2..eadc8e04a95793febaa4b7caf691878fcf4f2977 100644 (file)
@@ -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
index 8a8095e5edba72f820c036230ada1a17bb5436ef..75db3a3d1e7064a76f3130940f65331ab6ff3635 100644 (file)
@@ -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
  *
index dc7e8b55cf5509165244593c1e07d1f1749fc67b..da6da1c060b420bc789f8d7b2809a3c840049580 100644 (file)
@@ -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
  */
 
 #include "squid.h"
+#include "HttpRequest.h"
+#include "fde.h"
 #include "comm.h"
+#include "client_side_request.h"
 
 typedef struct {
     char *url;
index e5af6a5a8aa1285d78e339b2eac83db60b559686..8395a8a7277bb1bcb60023a66127e52a9512c35d 100644 (file)
@@ -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);
index 7a9b2b5c968cd354e58cd11a1388e9594c71dfb7..2ab0e7b328ea3838c8c597ae2c543cad8ea6db43 100644 (file)
@@ -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
  *
index 797110cd00953ea1a9c9cf20529338f39468c43b..0aea4a3ed7b093e07c788ba8d42867d9cb297261 100644 (file)
@@ -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
 #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);
index 7e1f839c4208a9ba8d9b4382dd43b9efdc184bde..e8d85a2fa6c40499b97e42cd7dd47aee9acfec3c 100644 (file)
@@ -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
  */
 
 #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<mem_node *>(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 (file)
index 0000000..5975f90
--- /dev/null
@@ -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 */
index eac0caf747312c279eeb2089ca626f9cd4a690e7..8f94f14af60ee6240950ad9f3b59819f3607f3cb 100644 (file)
@@ -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
 #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<MemObject *>(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<StoreEntry *>(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<size_t>(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<size_t>(e->mem_obj->reply->content_length) > Config.Store.maxObjectSize) ||
-       static_cast<size_t>(e->mem_obj->inmem_hi) > Config.Store.maxObjectSize) {
+    } else if ((e->getReply()->content_length > 0 &&
+               static_cast<size_t>(e->getReply()->content_length) > Config.Store.maxObjectSize) ||
+       static_cast<size_t>(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
index 53f04054820dd49c8d1746856ab10e39a92fb545..db1a92f24dfa31d6eaf83c12b17db057471f5ac8 100644 (file)
@@ -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
 #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<size_t>(sc->copyInto.offset) < body_sz) {
+    size_t body_sz = len - mem->swap_hdr_sz;
+    if (static_cast<size_t>(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) {}
index bc3a25e3b7113215ef2ebe728094839562c2ee9a..f12cafa27bf31ccb35fdfd321a595454fb8ef4c9 100644 (file)
@@ -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
  */
 
 #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);
index be2baf223a40d396c9471706990e6c8b1f1239c5..01fc38a0fcc15463748e529d4e0a438d7664b40a 100644 (file)
@@ -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",
index c57d281c9cf6e8f164c2a8ffb10efac6c8256f94..61f6762893f95d923af5a13c3f33c4282fcec592 100644 (file)
@@ -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);
 }
index 9f0059079904bc0c673005fd0e6ecfb3eba36538..c1ff825022fa3ad23b50f7f4fd2c2f3981769240 100644 (file)
@@ -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 *
index a526aafe5bea2f4f4510dcfdeb0c8cdc476db8e3..fae1b94cc8b52fbc9d05a9e283c17c8890418338 100644 (file)
@@ -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 {
index b45b5652d100345bb003444a9cffffdf96c1b31c..0f8a781b4c4af542400577496e6042eb7d2c991e 100644 (file)
@@ -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 "}"
index ad6a6564bc56750126548d0d605444440ecfcc54..fe14ced8aeec72ec332e2897ced877df03e118e2 100644 (file)
@@ -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
index 6fb75a76d8a7d04aa28ecb24e7115638aa17d50d..d40aa494bf6a13a122aac960e24bd28a5f7c980b 100644 (file)
@@ -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++;
 }
index 542518d8e4b8a7d5594693548cd28a5d2f5b148c..0f83bd963680f61734f40b40a7236d79c11f67ac 100644 (file)
@@ -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
 
 #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;
-}
index 57de1ac07272918e4e1ec9e1f55357abbc57b6bf..acd8d5be236920af8a982a32d99527f8e581204d 100644 (file)
@@ -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
 #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;
 }
index 1f47584df90dba675ed0abcef2bd8fd15426c99f..96d88690c07a823b53550d94f79c8143c4df5f4a 100644 (file)
@@ -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 <CRLF> */
@@ -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 .. 
index a72484beea0e4a20a561f714a209641ef38e0944..3f2d663bba257f5e2ef643267247417bf82a7d00 100755 (executable)
@@ -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
index f6aaf9597f51158ff093b0fcd6a2274fd6773ef2..9560ae2149853be9d28f1b797c636c2d61e4f6da 100644 (file)
@@ -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
  *
index a925c728782a2a3feda471d870d9123e84b9e58c..c9f9878bf49c9c4e5778cced2c910e9886ed5ed5 100644 (file)
@@ -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\
index a549e5d318fb3cb9e6566e44f160ac0bce7b187a..46961f1dd919cf4f598f5150700d1749a18acbd0 100644 (file)
@@ -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
  */
 
 #include "squid.h"
+#include "HttpRequest.h"
+#include "fde.h"
 #include "comm.h"
+#include "client_side_request.h"
 
 typedef struct {
     char *url;
index 501df6bb132419fcf8b2f3273a11162575c8a4cd..1cb6b9093d56660aa76e9303c905ba56e44819da 100644 (file)
@@ -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;
 
index 31b3d10239fbfe49bf3f82c1dc44104dd90ee6d2..409821943a69eacdb29e08ad3b681d3fa21ddf3b 100644 (file)
@@ -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
 
 #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<StoreMeta, void>
+{
+    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 (file)
index 0000000..406dbd0
--- /dev/null
@@ -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.
+ *
+ */
+
index 6d920ad04cabdf6ace89ee220655fbc3bc4ee5ff..e7a8138d509034966d85efd961c07f833c35d2e8 100644 (file)
@@ -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 (file)
index 0000000..454fdbb
--- /dev/null
@@ -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 <stdexcept>
+#include <iostream>
+
+void shut_down(int)
+{}
+
+
+struct DumpStoreMeta : public unary_function<StoreMeta, void>
+{
+    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;
+    }
+}
index 1df316720101800c7df5868b2007c5a734d04e91..46f9aefd426dd1ba1ebe184b005e22e9ba94a2a5 100644 (file)
@@ -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;
index 93c153fb0f33266c5bb9c2165abf1dd1ee267ea4..1b381dc64951e38bcb23ba71faf167a3432df385 100644 (file)
@@ -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
             */
index bd0f37e40ee0a8c0d7e4d4c49888d41c006e98cd..c110ad5591bcb953c2bf4efbff9a518f13c61cbd 100644 (file)
@@ -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"
        "</ADDRESS>\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);
index ce211f3dd86cc0aec0516b36ebb79b4daff87d8b..83e400d616b6205f689a57817a7abf02ccb328c8 100644 (file)
@@ -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 <ramey@csc.ti.com>
index 3d9d2984a329497d1f14d73b4c9e95982f3e391b..5242c8f15dac43d095983d34e00cd3cdf9114b89 100644 (file)
@@ -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
 
 #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;
index 163c1ee6253809708dab708b349aa2c6acc622ea..0688265d2807038e0ec044eab5db87f62d31401a 100644 (file)
@@ -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
index c1d37b51804120435aec386569459a1a9808be01..92fcef80c9b36bcc6d54346cda24db62b134e5d6 100644 (file)
@@ -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
 
 #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
index d77cc45b5f96bdb18d6e5c12f185606a27242de9..b49116d0684467dc10fe55c029df65720af1deee 100644 (file)
@@ -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 * * * * * * *
  *
index b8f62c27aa1a20177c91fa7edd34a346e88112b3..d689d4413a3481b624ec5c020035b1858f7cbac6 100644 (file)
@@ -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
index 68b9d7f37083a06fca524e3d8941285d9969cfcf..7e309bf801f07f4a0a34f0df494a832501db4afa 100644 (file)
@@ -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"
index 45f93866c6db39ab37dab57b8ee644e9434b31e0..01c935d474573ac990764cc48fe7150ff2bfab60 100644 (file)
@@ -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 (file)
index 0000000..2a4736c
--- /dev/null
@@ -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 (file)
index 0000000..83c92ef
--- /dev/null
@@ -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 <iostream>
+
+/* 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;
+}
index 02fab28461cc1b43434ba1ac5f4354917a799513..a51c066b53bc6c5d51a4fb954a3f6baa8f1549bf 100644 (file)
@@ -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
index bfc1cd0cdb50cb84207ecf0c583c8e71b5f9d246..4624c27ac59f1ed83f96b23902f62466aa551d22 100644 (file)
@@ -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 <marian@svf.stuba.sk> */
-/* Peter Wemm <peter@spinner.DIALix.COM> */
-#if defined(_SQUID_FREEBSD_)
-#include <osreldate.h>
-#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) {