-$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 $
==============================================================================
## 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
-# 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,
@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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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
$(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
# (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 \
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)' ;; \
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)
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 \
! -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 \
&& $(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
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:
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:
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
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
.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 \
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
-# 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,
#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,
# 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)
# 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
[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
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)
# ------------------------------
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/../..'.
# 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
# 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
# _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
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=])
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])
])
DEPDIR=_deps
fi
rmdir .deps 2>/dev/null
-AC_SUBST(DEPDIR)
+AC_SUBST([DEPDIR])
])
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"`
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()
# -----------------
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.
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
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
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],
# 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
# 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
#! /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. ##
## --------------------- ##
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
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\(/\)$' \| \
/^X\/\(\/\).*/{ s//\1/; q; }
s/.*/./; q'`
+
# PATH needs CR, and LINENO needs CR and PATH.
# Avoid depending upon Character Ranges.
as_cr_letters='abcdefghijklmnopqrstuvwxyz'
# 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
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+"$@"}
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.
IFS=" $as_nl"
# CDPATH.
-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; }
+$as_unset CDPATH
# Name of the host.
# Initializations.
#
ac_default_prefix=/usr/local
+ac_config_libobj_dir=.
cross_compiling=no
subdirs=
MFLAGS=
# 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=
{ (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
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
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
# 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`
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 $@
# 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
# Save into config.log some information that might help in debugging.
{
echo
+
cat <<\_ASBOX
## ---------------- ##
## Cache variables. ##
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
## ----------- ##
## ----------- ##
_ASBOX
echo
- sed "/^$/d" confdefs.h
+ sed "/^$/d" confdefs.h | sort
echo
fi
test "$ac_signal" != 0 &&
+
ac_aux_dir=
for ac_dir in cfgaux $srcdir/cfgaux; do
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:
# 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
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
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=`
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;}
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"
#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"}
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
+# 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
MAINTAINER_MODE_TRUE='#'
MAINTAINER_MODE_FALSE=
fi
+
MAINT=$MAINTAINER_MODE_TRUE
# 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
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.
cat >conftest.$ac_ext <<_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 ()
{
}
_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.
# 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
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
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.
# 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;;
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
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 ()
{
(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
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 ()
{
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
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 ()
{
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
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=$?
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 ()
{
:
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 ()
{
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
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
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'
# 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.
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
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=
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
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 ()
{
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
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 ()
{
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
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 ()
{
:
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 ()
{
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
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
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 ()
{
ENABLE_WIN32SPECIFIC_TRUE='#'
ENABLE_WIN32SPECIFIC_FALSE=
fi
+
;;
*)
ENABLE_WIN32SPECIFIC_TRUE='#'
ENABLE_WIN32SPECIFIC_FALSE=
fi
+
;;
esac
# 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
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.
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 ()
{
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
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 ()
{
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
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
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 ()
{
:
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 ()
{
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
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
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
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"
ENABLE_PINGER_TRUE='#'
ENABLE_PINGER_FALSE=
fi
+
fi
fi;
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"
USE_DELAY_POOLS_TRUE='#'
USE_DELAY_POOLS_FALSE=
fi
+
fi
fi;
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"
USE_SNMP_TRUE='#'
USE_SNMP_FALSE=
fi
+
SNMP_MAKEFILE=./snmplib/Makefile
makesnmplib=snmplib
fi
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"
ENABLE_HTCP_TRUE='#'
ENABLE_HTCP_FALSE=
fi
+
fi
fi;
ENABLE_SSL_FALSE=
fi
+
# Check whether --enable-ssl or --disable-ssl was given.
if test "${enable_ssl+set}" = set; then
enableval="$enable_ssl"
ENABLE_SSL_TRUE='#'
ENABLE_SSL_FALSE=
fi
+
SSLLIB='-lssl -lcrypto'
USE_OPENSSL=1
fi
fi
+
# Check whether --with-openssl or --without-openssl was given.
if test "${with_openssl+set}" = set; then
withval="$with_openssl"
NEED_OWN_MD5_TRUE='#'
NEED_OWN_MD5_FALSE=
fi
+
if test -z "$SSLLIB"; then
SSLLIB="-lcrypto" # for MD5 routines
fi
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"
MAKE_LEAKFINDER_TRUE='#'
MAKE_LEAKFINDER_FALSE=
fi
+
fi
fi;
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
USE_DNSSERVER_TRUE='#'
USE_DNSSERVER_FALSE=
fi
+
fi
# Check whether --enable-truncate or --disable-truncate was given.
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"
ENABLE_UNLINKD_TRUE='#'
ENABLE_UNLINKD_FALSE=
fi
+
else
echo "unlinkd disabled"
ENABLE_UNLINKD_TRUE='#'
ENABLE_UNLINKD_FALSE=
fi
+
fi
# Check whether --enable-stacktraces or --disable-stacktraces was given.
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"
ENABLE_XPROF_STATS_TRUE='#'
ENABLE_XPROF_STATS_FALSE=
fi
+
fi
fi;
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
:
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
# 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
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
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
:
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
# 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
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
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
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 ()
{
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
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
/* 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 ()
{
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
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
/* 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 ()
{
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
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
/* 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 ()
{
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
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
/* 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 ()
{
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
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
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
# 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
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))
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
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>
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
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
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
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
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
{ 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
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
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
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
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
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
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 ()
{
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
# 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 ()
{
# 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 ()
{
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 ()
{
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
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 ()
{
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
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
cat >conftest.$ac_ext <<_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 ()
{
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
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 ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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>
#include <malloc.h>
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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>
#include <malloc.h>
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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>
#include <sys/resource.h>
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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>
#endif
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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 ()
{
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
# 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 ()
{
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 ()
{
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=
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 ()
{
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 ()
{
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=
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
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 ()
{
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 ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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 ()
{
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
# 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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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=
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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=
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
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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>
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 ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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 ()
{
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
# 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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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=
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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=
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
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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>
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 ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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 ()
{
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
# 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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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=
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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=
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
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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>
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 ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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 ()
{
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
# 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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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=
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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=
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
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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>
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 ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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 ()
{
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
# 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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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=
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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=
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
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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>
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 ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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 ()
{
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
# 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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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=
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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=
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
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>
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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>
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 ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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 ()
{
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
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
# endif
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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
_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
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;
}
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
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 ()
{
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
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>
#include <stddef.h>
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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 ()
{
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
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 ()
{
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
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 ()
{
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
cat >conftest.$ac_ext <<_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 ()
{
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
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 ()
{
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
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 ()
{
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
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 ()
{
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
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 ()
{
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
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
/* 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 ()
{
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
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
/* 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 ()
{
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
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
/* 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 ()
{
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
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 ()
{
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
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 ()
{
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
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
#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 ()
{
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
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
/* 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 ()
{
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
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 ()
{
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
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
/* 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 ()
{
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
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
/* 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 ()
{
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
-
for ac_func in \
regfree \
res_init \
rint \
- sbrk \
select \
seteuid \
setgroups \
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;
}
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
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() {
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
NEED_OWN_SNPRINTF_TRUE='#'
NEED_OWN_SNPRINTF_FALSE=
fi
+
if test "$ac_cv_func_snprintf" = "no" || test "$ac_cv_func_vsnprintf" = "no" ; then
NEED_OWN_SNPRINTF_TRUE='#'
NEED_OWN_SNPRINTF_FALSE=
fi
+
fi
if test "$IPF_TRANSPARENT" ; 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 ()
{
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
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;
}
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
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>
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
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>
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
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>
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
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>
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
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>
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
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>
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
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 ()
{
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
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 ()
{
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
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>
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
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 ()
{
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
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>
#include <resolv.h>
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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>
#include <resolv.h>
#endif
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
int
main ()
{
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
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
# 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.
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
# 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. ##
## --------------------- ##
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
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\(/\)$' \| \
/^X\/\(\/\).*/{ s//\1/; q; }
s/.*/./; q'`
+
# PATH needs CR, and LINENO needs CR and PATH.
# Avoid depending upon Character Ranges.
as_cr_letters='abcdefghijklmnopqrstuvwxyz'
# 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
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+"$@"}
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.
IFS=" $as_nl"
# CDPATH.
-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; }
+$as_unset CDPATH
exec 6>&1
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
-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]
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)
--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
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
# INIT-COMMANDS section.
#
-AMDEP_TRUE="$AMDEP_TRUE"
-ac_aux_dir="$ac_aux_dir"
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
_ACEOF
"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;}
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 ||
{
}
# 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; }
}
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
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
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
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
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
/^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=.
# 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`
# 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
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
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
/^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
# 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
# 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`
{ 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'.
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
# 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.
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
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
-# 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 installing Squid startup files on systems
# using a SVR4-based startup mechanism/file system layout
#
-
SHELL = @SHELL@
srcdir = @srcdir@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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 = ..
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 \
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:
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"
-/* $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)
#
# 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:
#
-# 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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
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; \
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 \
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:
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"
<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
<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
<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.
## 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
-# 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,
@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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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 \
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:
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"
-# 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@
-
SHELL = @SHELL@
srcdir = @srcdir@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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
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
# (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 \
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)' ;; \
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)
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 \
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:
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"
#
# 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:
#
-# 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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
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@
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; \
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 \
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:
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"
#
# 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:
#
-# 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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
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@
$(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:
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 \
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:
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"
# 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
-# 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 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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
# (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 \
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)' ;; \
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)
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 \
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:
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"
#
# 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:
#
-# 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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
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@
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 \
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:
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"
#
# 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:
#
-# 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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
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@
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; \
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 \
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:
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"
/*
- * $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>
#
# 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:
#
-# 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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
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@
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 \
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:
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"
/*
- * $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>
#
# 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:
#
-# 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: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:
#
# 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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
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
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@
@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@
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 \
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:
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"
#
# 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 $
#
#
-# 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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
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@
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 \
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:
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"
#
# 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:
#
-# 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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
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@
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 \
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:
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"
#
# 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:
#
-# 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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
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 \
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:
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"
#!/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;
#
# 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
-# 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.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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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
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@
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 \
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:
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"
# 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
-# 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 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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
# (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 \
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)' ;; \
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)
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 \
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:
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"
#
# 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:
#
-# 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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
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@
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 \
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:
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"
# 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
-# 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 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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
# (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 \
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)' ;; \
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)
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 \
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:
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"
#
# 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:
#
-# 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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
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@
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 \
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:
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"
-# $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=
-$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.
-/* $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
-# $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:
#
-/* $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
-/* $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
-/* $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
#
# 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:
#
-# 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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
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@
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; \
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 \
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:
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"
#
# 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:
#
-# 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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
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@
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; \
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 \
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:
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"
-$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.
/*
- * $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)
#
# 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:
#
-# 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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
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 \
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:
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"
#
# 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
-# 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 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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
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@
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 \
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:
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"
/*
- * $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>
# 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
-# 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 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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
# (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 \
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)' ;; \
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)
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 \
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:
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"
#
# 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
-# 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:26 robertc Exp $
+# $Id: Makefile.in,v 1.25 2003/01/23 00:36:27 robertc Exp $
#
-
SHELL = @SHELL@
srcdir = @srcdir@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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
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@
# (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 \
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)' ;; \
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)
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 \
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:
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"
-# 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,
@SET_MAKE@
# makefile for smblib
-
SHELL = @SHELL@
srcdir = @srcdir@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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@
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 \
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:
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"
#
# 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:
#
-# 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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
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@
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 \
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:
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"
/*
- * $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>
*
#
# 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:
#
-# 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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
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 \
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:
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"
#
# 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
-# 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.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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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
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@
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: $(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 \
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:
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"
-# $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
-# 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,
@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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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:
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 \
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:
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:
/*
- * $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
*
/*
- * $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
/*
- * $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;
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;
/*
- * $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
/*
- * $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
*
* 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 $
*
**********************************************************************/
/*
- * $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
/*
- * $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
*
/*
- * $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
/*
- * $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
*
/*
- * $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
/*
- * $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 * * * * * * *
*
/*
- * $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
/*
- * $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
/*
- * $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
*
/*
- * $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
* 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 $
*
**********************************************************************/
*
* 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 $
*
***************************************************************************/
* 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 $
*
**********************************************************************/
/*
- * $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
*
* 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 $
*
***************************************************************************/
/*
- * $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
/*
- * $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
*
* 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 $
*
**********************************************************************/
/*
- * $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
* 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 $
*
**********************************************************************/
/*
- * $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
*
* 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 $
*
**********************************************************************/
*
* 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 $
*
**********************************************************************/
* 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 $
*
**********************************************************************/
/*
- * $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
*
* 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 $
*
**********************************************************************/
/*
- * $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
/*
- * $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
/*
- * $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 * * * * * * *
*
/*
- * $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 $
*/
/*
- * $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
*
/*
- * $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
*/
/*
- * $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
*
/*
- * $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,
## 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
/*
- * $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
/*
- * $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
/*
- * $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"
/*
- * $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 ------------ */
/*
- * $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
/*
- * $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
/*
- * $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
*
/*
- * $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
/*
- * $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"
/*
- * $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 $
*/
/*
/*
- * $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 */
/*
- * $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 * * * * * * *
*
/*
- * $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
/*
- * $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
/*
- * $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
/*
- * $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
/*
- * $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
/*
- * $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"
/*
- * $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 $
*/
/* ====================================================================
/*
- * $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
/*
- * $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
/*
- * $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 */
/*
- * $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. */
/*
- * $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
/*
- * $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"
-# 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,
# 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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
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 \
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:
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"
#!/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"
#!/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@
# 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");
#!/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
# - 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";
#!/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;
-# 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@
-
SHELL = @SHELL@
srcdir = @srcdir@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
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 \
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)
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)
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@
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 \
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:
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"
/*
- * $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
/*
- * $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
/*
- * $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
/*
- * $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/
/*
- * $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
/*
- * $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
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;
}
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)
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));
/*
- * $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
*/
#include "squid.h"
+#include "HttpHdrContRange.h"
/*
* Currently only byte ranges are supported
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;
--- /dev/null
+
+/*
+ * $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 */
/*
- * $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
httpHdrExtFieldDestroy(HttpHdrExtField * f)
{
assert(f);
- stringClean(&f->name);
- stringClean(&f->value);
+ f->name.clean();
+ f->value.clean();
xfree(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());
}
/*
- * $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
#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? */
}
/* 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;
* 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 *> ©)
+{
+ /* 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;
* - 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;
}
* 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;
}
/*
- * $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
#include "squid.h"
#include "Store.h"
#include "HttpHeader.h"
+#include "HttpHdrContRange.h"
/*
* On naming conventions:
/* 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));
}
}
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);
}
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 */
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;
}
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;
}
/*
/* 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;
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;
}
}
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;
}
/* pack into mb */
memBufDefInit(&mb);
packerToMemInit(&p, &mb);
- httpHdrRangePackInto(range, &p);
+ range->packInto(&p);
/* put */
httpHeaderAddEntry(hdr, httpHeaderEntryCreate(HDR_RANGE, NULL, mb.buf));
/* cleanup */
}
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
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;
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;
}
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;
}
if (cc)
httpHdrCcUpdateStats(cc, &HttpHeaderStats[hdr->owner].ccTypeDistr);
httpHeaderNoteParsedEntry(HDR_CACHE_CONTROL, s, !cc);
- stringClean(&s);
+ s.clean();
return cc;
}
* 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;
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;
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;
}
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;
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;
}
{
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;
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 */
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);
}
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());
}
}
{
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)
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));
}
{
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;
/*
- * $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/
#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 {
field_type type;
};
+SQUIDCEXTERN void httpHeaderAddContRange(HttpHeader *, HttpHdrRangeSpec, ssize_t);
+
#endif /* SQUID_HTTPHEADER_H */
--- /dev/null
+
+/*
+ * $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 *> ©);
+ 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 */
/*
- * $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
#include "squid.h"
#include "HttpHeader.h"
+#include "HttpHdrContRange.h"
#if UNUSED_CODE
static int httpHeaderStrCmp(const char *h1, const char *h2, int len);
/* 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));
}
{
int i;
for (i = 0; i < count; ++i)
- stringClean(&table[i].name);
+ table[i].name.clean();
xfree(table);
}
list = httpHeaderGetList(hdr, ht);
res = strListIsMember(&list, directive, ',');
- stringClean(&list);
+ list.clean();
return res;
}
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));
}
/*
else
(*pos)++;
} else {
- *pos = strBuf(*str);
+ *pos = str->buf();
if (!*pos)
return 0;
}
* header on the fly, and return that the new header
* is allowed.
*/
- stringReset(&e->value, hm->replacement);
+ e->value = hm->replacement;
retval = 1;
}
/*
- * $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
/*
- * $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 */
assert(rep && new_rep);
httpReplyClean(rep);
*rep = *new_rep;
+ new_rep->header.entries.clean();
/* cannot use Clean() on new reply now! */
httpReplyDoDestroy(new_rep);
}
}
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);
}
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
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
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)
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 */
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);
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)
/*
* parses a 0-terminating buffer into HttpReply.
* Returns:
- * +1 -- success
+ * 1 -- success
* 0 -- need more data (partial parse)
* -1 -- parse error
*/
* 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;
--- /dev/null
+
+/*
+ * $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 */
/*
- * $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;
}
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);
}
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 */
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 */
{
assert(req);
return strlen(RequestMethodStr[req->method]) + 1 +
- strLen(req->urlpath) + 1 +
+ req->urlpath.size() + 1 +
4 + 1 + 3 + 2 +
req->header.len + 2;
}
{
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
debug(73, 9) ("request_flags::clearResetTCP\n");
reset_tcp = 0;
}
+
+bool
+request_t::multipartRangeRequest() const
+{
+ return (range && range->specs.count > 1);
+}
--- /dev/null
+
+/*
+ * $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 */
/*
- * $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
/*
- * $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/
#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.
/*
- * $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
/*
- * $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/
#
# 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:
#
unlinkd \
pinger \
dnsserver \
- recv-announce
+ recv-announce \
+ ufsdump
noinst_PROGRAMS = \
cf_gen
bin_PROGRAMS = \
squidclient
+
libexec_PROGRAMS = \
$(PINGER) \
$(DNSSERVER) \
event.cc \
external_acl.cc \
fd.cc \
+ fde.cc \
+ fde.h \
filemap.cc \
forward.cc \
fqdncache.cc \
logfile.cc \
main.cc \
mem.cc \
+ mem_node.cc \
+ mem_node.h \
MemBuf.cc \
+ MemObject.cc \
+ MemObject.h \
mime.cc \
multicast.cc \
neighbors.cc \
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 \
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 \
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
-# 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
noinst_PROGRAMS = \
- cf_gen
+ cf_gen \
+ ufsdump
sbin_PROGRAMS = \
event.cc \
external_acl.cc \
fd.cc \
+ fde.cc \
+ fde.h \
filemap.cc \
forward.cc \
fqdncache.cc \
logfile.cc \
main.cc \
mem.cc \
+ mem_node.cc \
+ mem_node.h \
MemBuf.cc \
+ MemObject.cc \
+ MemObject.h \
mime.cc \
multicast.cc \
neighbors.cc \
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 \
$(WIN32SOURCE)
+noinst_HEADERS = MemBuf.cci \
+ MemBuf.h \
+ Store.cci \
+ String.cci \
+ String.h \
+ ufscommon.cci
+
+
nodist_squid_SOURCES = \
repl_modules.cc \
auth_modules.cc \
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
@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)
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) \
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)
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)
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)
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
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)
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)
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
clean-noinstPROGRAMS:
-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
install-sbinPROGRAMS: $(sbin_PROGRAMS)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(sbindir)
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
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)
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@
@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@
@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@
$(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:
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:
# (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 \
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)' ;; \
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)
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 \
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)
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:
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:
--- /dev/null
+
+/*
+ * $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 */
/*
- * $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
assert(mb);
memBufPrintf(mb, "memBufReport is not yet implemented @?@\n");
}
+
+#ifndef _USE_INLINE_
+#include "MemBuf.cci"
+#endif
--- /dev/null
+
+/*
+ * $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)
+{
+}
--- /dev/null
+
+/*
+ * $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 */
--- /dev/null
+
+/*
+ * $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;
+}
--- /dev/null
+
+/*
+ * $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 */
/*
- * $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
/*
- * $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
/*
- * $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
--- /dev/null
+
+/*
+ * $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;
+}
/*
- * $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 */
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;
}
void operator delete(void *address);
private:
static MemPool *pool;
-#endif
+
+ bool validLength() const;
};
-#ifdef __cplusplus
class NullStoreEntry:public StoreEntry
{
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 *);
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);
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 *);
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 *);
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 */
/*
- * $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
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 */
/*
- * $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;
char *data;
};
-#define EMPTYIOBUFFER {{0},0,0,NULL}
-
#endif /* SQUID_STOREIORESULT_H */
/*
- * $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
/*
- * $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/
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;
--- /dev/null
+
+/*
+ * $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;
+}
--- /dev/null
+
+/*
+ * $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 */
--- /dev/null
+
+/*
+ * $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;
+}
--- /dev/null
+
+/*
+ * $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 */
--- /dev/null
+
+/*
+ * $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;
+}
--- /dev/null
+
+/*
+ * $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 */
--- /dev/null
+
+/*
+ * $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;
+}
--- /dev/null
+
+/*
+ * $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 */
--- /dev/null
+
+/*
+ * $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;
+}
--- /dev/null
+
+/*
+ * $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 */
--- /dev/null
+
+/*
+ * $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;
+}
--- /dev/null
+
+/*
+ * $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 */
/*
- * $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
--- /dev/null
+
+/*
+ * $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);
+}
--- /dev/null
+
+/*
+ * $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 */
+
/*
- * $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
/*
- * $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/
int blksize;
} fs;
};
-
#endif /* SQUID_SWAPDIR_H */
/*
- * $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
/*
- * $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
#include "squid.h"
#include "splay.h"
+#include "HttpRequest.h"
#include "authenticate.h"
static void aclParseDomainList(void *curlist);
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);
/*
- * $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
#include "squid.h"
#include "radix.h"
+#include "HttpRequest.h"
#include "StoreClient.h"
#include "Store.h"
off_t offset;
int reqofs;
char reqbuf[AS_REQBUF_SZ];
+ bool dataRead;
};
typedef struct _ASState ASState;
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;
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,
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);
debug(53, 3) ("asHandleReply: AS# %s (%d)\n", s, asState->as_number);
asnAddNet(s, asState->as_number);
s = t + 1;
+ asState->dataRead = 1;
}
/*
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;
tempBuffer,
asHandleReply,
asState);
- } else {
- debug(53, 3) ("asHandleReply: Done: %s\n", storeUrl(e));
- asStateFree(asState);
}
}
# 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
-# 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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
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)
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)
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)
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)
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@
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 \
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:
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"
/*
- * $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
/*
- * $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
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;
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;
debug(29, 9) ("authDigestDecodeAuth: Found response '%s'\n", digest_request->response);
}
}
- stringClean(&temp);
+ temp.clean();
/* now we validate the data given to us */
/*
- * $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
/*
- * $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
/*
- * $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/
/*
- * $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
/*
- * $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
*
/*
- * $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
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);
* 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;
}
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,
a->handler(entry);
if (a->flags.atomic) {
storeBufferFlush(entry);
- storeComplete(entry);
+ entry->complete();
}
cachemgrStateFree(mgr);
}
/*
- * $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
/*
- * $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
/*
- * $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
*/
CREATE_CBDATA(acl_access);
CREATE_CBDATA(aclCheck_t);
- CREATE_CBDATA(clientHttpRequest);
CREATE_CBDATA(ConnStateData);
CREATE_CBDATA(ErrorState);
CREATE_CBDATA(FwdState);
#
-# $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/
/*
- * $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
/*
- * $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
/*
- * $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
#include "squid.h"
#include "clientStream.h"
+#include "HttpReply.h"
+#include "HttpRequest.h"
+#include "client_side_request.h"
CBDATA_TYPE(clientStreamNode);
/*
- * $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 {
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 */
/*
- * $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
/*
- * $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
* data flow.
*/
-typedef class ClientSocketContext clientSocketContext;
/* our socket-related context */
class ClientSocketContext {
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;
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;
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);
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;
}
/*
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;
/* 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;
}
}
}
-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
}
}
-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;
}
}
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) {
void
connFreeAllContexts(ConnStateData * connState)
{
- clientSocketContext *context;
+ ClientSocketContext *context;
while ((context = connGetCurrentContext(connState)) != NULL) {
assert(connGetCurrentContext(connState) !=
connGetCurrentContext(connState)->next);
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;
}
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? */
}
HttpReply * rep, StoreIOBuffer recievedData)
{
int fd;
- clientSocketContext *context;
+ ClientSocketContext *context;
/* Test preconditions */
assert(node != NULL);
/* TODO: handle this rather than asserting
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)) {
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
void
clientSocketDetach(clientStreamNode * node, clientHttpRequest * http)
{
- clientSocketContext *context;
+ ClientSocketContext *context;
/* Test preconditions */
assert(node != NULL);
/* TODO: handle this rather than asserting
/* 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
*/
}
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) {
}
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
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
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);
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,
return context;
}
-clientSocketContext *
+ClientSocketContext *
clientCheckRequestLineIsParseable(char *inbuf, size_t req_sz, ConnStateData * conn)
{
if (strlen(inbuf) != req_sz) {
return NULL;
}
-clientSocketContext *
+ClientSocketContext *
clientParseRequestMethod(char *inbuf, method_t * method_p, ConnStateData * conn)
{
char *mstr = NULL;
*(endPointer--) = '\0';
}
-clientSocketContext *
+ClientSocketContext *
parseURIandHTTPVersion(char **url_p, http_version_t * http_ver_p,
ConnStateData * conn)
{
}
/* 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)))
*
* 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)
{
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;
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,
}
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;
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;
}
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);
HTTP_REQUEST_ENTITY_TOO_LARGE, METHOD_NONE, NULL,
&conn->peer.sin_addr, NULL, NULL, NULL);
connAddContextToQueue(conn, context);
- clientPullData(context);
+ context->pullData();
}
static void
/* 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);
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;
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();
}
}
- /*
- * 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;
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;
}
/* 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;
}
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);
#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)
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) {
/* 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;
}
} else {
if (!vary) {
- vary = httpMakeVaryMark(request, entry->mem_obj->reply);
+ vary = httpMakeVaryMark(request, entry->getReply());
if (vary)
request->vary_headers = xstrdup(vary);
}
/*
- * $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);
void purgeFoundGet(StoreEntry *newEntry);
void purgeFoundHead(StoreEntry *newEntry);
void purgeFoundObject(StoreEntry *entry);
+ void sendClientUpstreamResponse();
void purgeDoPurgeGet(StoreEntry *entry);
void purgeDoPurgeHead(StoreEntry *entry);
void doGetMoreData();
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 *);
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;
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 */
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;
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;
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);
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
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;
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)
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) {
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;
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) {
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;
}
/* 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 */
/* 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",
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;
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;
}
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.
+ */
+ }
}
}
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) {
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.
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);
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");
/*
/*
* 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)) {
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 =
* 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 {
/*
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
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)
clientReplyContext::purgeFoundObject(StoreEntry *entry)
{
assert (entry && !entry->isNull());
- StoreIOBuffer tempBuffer = EMPTYIOBUFFER;
+ StoreIOBuffer tempBuffer;
/* Swap in the metadata */
http->entry = entry;
storeLockObject(http->entry);
* 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
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,
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
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;
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;
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;
}
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;
}
}
}
+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
/* 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.
*/
(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 &&
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] == ' '))
||
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,
/* 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;
}
} else {
http->entry = e;
}
+ e = http->entry;
/* Release negatively cached IP-cache entries on reload */
if (r->flags.nocache)
ipcacheInvalidate(r->host);
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();
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;
/* 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) {
/*
*/
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)) {
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);
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
* 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 */
/*
- * $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)
#include "clientStream.h"
#include "client_side_request.h"
#include "authenticate.h"
+#include "HttpRequest.h"
#if LINGERING_CLOSE
#define comm_close comm_lingering_close
extern "C" CSR clientGetMoreData;
extern "C" CSS clientReplyStatus;
extern "C" CSD clientReplyDetach;
+static void checkFailureRatio(err_type, hier_code);
void
clientRequestContextFree(void *data)
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
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;
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)
}
/* 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))
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)))
#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) {
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) {
/* 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);
}
/*
- * $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 */
/*
- * $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
#include "squid.h"
#include "StoreIOBuffer.h"
#include "comm.h"
+#include "fde.h"
#if defined(_SQUID_CYGWIN_)
#include <sys/ioctl.h>
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;
* 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);
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,
/*
- * $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
*
/*
- * $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
*
#include "squid.h"
#include "Store.h"
+#include "fde.h"
#ifdef USE_POLL
/*
- * $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
*
/*
- * $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
/*
- * $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
*/
/*
- * $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>
#include "squid.h"
#include "StoreClient.h"
#include "Store.h"
+#include "MemObject.h"
+#include "client_side_request.h"
struct _class1DelayPool {
int delay_class;
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)
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) {
/*
- * $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
*/
#include "squid.h"
+#include "fde.h"
static PF diskHandleRead;
static PF diskHandleWrite;
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,
/*
- * $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
/*
- * $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
/*
- * $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
/*
- * $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/
ACL_PROXY_AUTH_NEEDED
} acl_lookup_state;
-enum {
+enum fd_type {
FD_NONE,
FD_LOG,
FD_FILE,
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,
MEM_IDNS_QUERY,
#endif
MEM_EVENT,
- MEM_TLV,
MEM_SWAP_LOG_DATA,
#if USE_SSL
MEM_ACL_CERT_DATA,
CBDATA_UNDEF = 0,
CBDATA_acl_access,
CBDATA_aclCheck_t,
- CBDATA_clientHttpRequest,
CBDATA_ConnStateData,
CBDATA_ErrorState,
CBDATA_FwdState,
/*
- * $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 */
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;
}
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
*/
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);
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);
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);
/*
- * $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
/*
- * $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
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:
if (!first)
memBufAppend(&mb, " ", 1);
strwordquote(&mb, str);
- stringClean(&sb);
+ sb.clean();
first = 0;
}
for (arg = acl_data->arguments; arg; arg = arg->next) {
/*
- * $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
*/
#include "squid.h"
+#include "fde.h"
int default_read_method(int, char *, int);
int default_write_method(int, const char *, int);
--- /dev/null
+
+/*
+ * $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;
+}
+
--- /dev/null
+
+/*
+ * $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 */
/*
- * $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
/*
- * $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
#include "squid.h"
#include "Store.h"
-
+#include "HttpRequest.h"
+#include "fde.h"
+#include "MemObject.h"
static PSC fwdStartComplete;
static void fwdDispatch(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);
}
}
{
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;
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;
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;
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);
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)) {
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);
}
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 */
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)
{
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);
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.
/*
- * $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
# 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
-# 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 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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)
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)
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)
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)
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@
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@
# (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 \
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)' ;; \
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)
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: $(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 \
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:
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"
-# 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@
-
SHELL = @SHELL@
srcdir = @srcdir@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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 \
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:
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"
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.
/*
- * $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>
/*
- * $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>
#include "squid.h"
#include "store_asyncufs.h"
#include "Store.h"
+#include "fde.h"
#define _AIO_OPEN 0
#define _AIO_READ 1
/*
- * $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
-# 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@
-
SHELL = @SHELL@
srcdir = @srcdir@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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 \
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:
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"
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.
* 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"
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
} 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;
/*
- * $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
#include "async_io.h"
#include "store_coss.h"
+#include "fde.h"
#include "SwapDir.h"
#define STORE_META_BUFSZ 4096
/*
- * $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
#include <aio.h>
#include "async_io.h"
#include "store_coss.h"
+#include "MemObject.h"
+#include "fde.h"
#include "SwapDir.h"
static DWCB storeCossWriteMemBufDone;
}
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;
xmemcpy(dest, buf, size);
offset_ += size;
if (free_func)
- (free_func) (buf);
+ (free_func) ((char *)buf);
}
#
# 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
-# 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 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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
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@
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 \
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:
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"
/*
- * $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
/*
- * $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
/*
- * $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
-# 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@
-
SHELL = @SHELL@
srcdir = @srcdir@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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 \
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:
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"
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.
/*
- * $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
-# 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@
-
SHELL = @SHELL@
srcdir = @srcdir@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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 \
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:
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"
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.
/*
- * $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
#include "squid.h"
#include "Store.h"
-
+#include "fde.h"
#include "store_ufs.h"
#include "ufscommon.h"
/*
- * $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
}
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) {
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;
}
}
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;
/*
- * $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];
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) {
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");
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], "/");
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)
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;
}
}
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
strCutPtr(request->urlpath, t);
}
}
- l = strLen(request->urlpath);
+ l = request->urlpath.size();
ftpState->flags.need_base_href = 1;
/* check for null path */
if (!l) {
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;
{
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);
ftpState->user, request->port);
}
/* create reply */
- reply = entry->mem_obj->reply;
+ reply = httpReplyCreate ();
assert(reply != NULL);
/* create appropriate reply */
ftpAuthRequired(reply, request, realm);
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");
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;
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) {
{
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;
}
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) {
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;
/* 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
#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
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 */
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:
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);
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 {
}
}
storeBuffer(e);
- httpReplyReset(reply);
+ reply = httpReplyCreate();
/* set standard stuff */
if (ftpState->restarted_offset) {
/* Partial reply */
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) {
/*
request->host,
portbuf,
"/%2f",
- strBuf(request->urlpath));
+ request->urlpath.buf());
if ((t = strchr(buf, '?')))
*t = '\0';
return buf;
/*
- * $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/
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[];
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 */
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 */
/*
- * $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
#include "squid.h"
#include "Store.h"
+#include "HttpRequest.h"
#include "comm.h"
/* gopher type code from rfc. Anawat. */
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';
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)) {
}
}
safe_free(escaped_selector);
- strCat(outbuf, tmpbuf);
+ outbuf.append(tmpbuf);
gopherState->data_in = 1;
} else {
memset(line, '\0', TEMP_BUF_SIZE);
} else {
snprintf(tmpbuf, TEMP_BUF_SIZE, "%s\n", html_quote(result));
}
- strCat(outbuf, tmpbuf);
+ outbuf.append(tmpbuf);
gopherState->data_in = 1;
break;
} else {
{
/* 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;
}
} /* 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;
}
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));
}
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;
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;
/* 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. */
}
/*
- * $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?
/*
- * $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
#include "squid.h"
#include "Store.h"
#include "StoreClient.h"
+#include "HttpRequest.h"
#include "comm.h"
typedef struct _Countstr Countstr;
/*
- * $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/
/*
- * $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);
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)
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));
}
}
}
+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) {
/*
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;
}
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:
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;
* 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);
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)) {
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 @?@ */
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());
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);
/* 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 */
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);
}
}
-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?
*/
* 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
}
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;
#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;
}
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);
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;
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
}
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,
* 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);
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();
}
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
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);
* request bodies.
*/
commSetTimeout(fd, Config.Timeout.read, httpTimeout, httpState);
- commSetDefer(fd, fwdCheckDeferRead, entry);
+ commSetDefer(fd, StoreEntry::CheckDeferRead, entry);
}
}
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) {
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);
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)) {
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);
/* 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
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;
/*
- * $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/
class HttpStateData {
public:
void processReplyHeader(const char *, int);
- void processReplyData(const char *, int);
+ void processReplyData(const char *, size_t);
IOCB readReply;
void maybeReadData();
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 */
/*
- * $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
/*
- * $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
#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);
/* ICPState */
ICPState:: ICPState(icp_common_t & aHeader):header(aHeader)
+ ,request(NULL),
+ fd(-1),
+ url(NULL)
{
}
/*
- * $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
#include "squid.h"
#include "Store.h"
#include "ICP.h"
+#include "HttpRequest.h"
class ICP3State : public ICPState, public StoreClient {
public:
/*
- * $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
/*
- * $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
#include "squid.h"
#include "Store.h"
+#include "HttpRequest.h"
+#include "HttpReply.h"
/* called when we "miss" on an internal object;
* generate known dynamic objects,
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);
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",
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);
/*
- * $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
#include "squid.h"
#include "comm.h"
+#include "fde.h"
static const char *hello_string = "hi there\n";
#define HELLO_BUF_SZ 32
/*
- * $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
/*
- * $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
/*
- * $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
#include "squid.h"
#include "authenticate.h"
+#include "fde.h"
static void logfileWriteWrapper(Logfile * lf, const void *buf, size_t len);
/*
- * $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
#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 *);
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;
}
#if USE_LEAKFINDER
leakInit();
#endif
- memInit();
+ Mem::Init();
cbdataInit();
eventInit(); /* eventInit() is required for config parsing */
storeFsInit(); /* required for config parsing */
/*
- * $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
*/
#include "squid.h"
+#include "Mem.h"
#include "memMeter.h"
#include "Store.h"
/* 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];
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);
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;
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;
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);
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 */
}
cachemgrRegister("mem",
"Memory Utilization",
- memStats, 0, 1);
+ Mem::Stats, 0, 1);
}
mem_type &operator++ (mem_type &aMem)
/* 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;
}
void
-memReport(StoreEntry * e)
+Mem::Report(StoreEntry * e)
{
static char buf[64];
static MemPoolStats mp_stats;
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++;
}
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));
--- /dev/null
+
+/*
+ * $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;
+}
--- /dev/null
+
+/*
+ * $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 */
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
/*
- * $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
struct stat sb;
LOCAL_ARRAY(char, path, MAXPATHLEN);
char *buf;
- HttpReply *reply;
http_version_t version;
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);
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);
#******************************************************************************
-# $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
#
/*
- * $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
/*
- * $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
#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
/*
- * $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
double hops;
char *p;
int j;
- HttpReply *rep;
+ HttpReply const *rep;
size_t hdr_sz;
int nused = 0;
int size;
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 */
/* 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) {
/* 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;
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);
}
}
void
netdbBinaryExchange(StoreEntry * s)
{
- http_reply *reply = s->mem_obj->reply;
+ http_reply *reply = httpReplyCreate();
http_version_t version;
#if USE_ICMP
netdbEntry *n;
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);
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
peer *p = (peer *)data;
char *uri;
netdbExchangeState *ex;
- StoreIOBuffer tempBuffer = EMPTYIOBUFFER;
+ StoreIOBuffer tempBuffer;
CBDATA_INIT_TYPE(netdbExchangeState);
ex = cbdataAlloc(netdbExchangeState);
ex->p = cbdataReference(p);
/*
- * $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
/*
- * $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 */
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;
}
assert(pd);
if (pd->cd)
cacheDigestDestroy(pd->cd);
- stringClean(&pd->host);
+ pd->host.clean();
}
CBDATA_TYPE(PeerDigest);
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;
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);
}
/*
{
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);
}
}
/* 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;
}
const cache_key *key;
request_t *req;
DigestFetchState *fetch = NULL;
- StoreIOBuffer tempBuffer = EMPTYIOBUFFER;
+ StoreIOBuffer tempBuffer;
pd->req_result = NULL;
pd->flags.requested = 1;
/* 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;
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() */
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);
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;
}
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)) {
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,
{
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);
}
{
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);
}
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;
/* 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;
{
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 */
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;
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);
/*
- * $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
#include "squid.h"
#include "Store.h"
#include "ICP.h"
+#include "HttpRequest.h"
const char *hier_strings[] =
{
/*
- * $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
/*
- * $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/
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);
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 */
/* 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);
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);
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);
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);
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);
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);
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);
/* 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);
SQUIDCEXTERN void urnStart(request_t *, StoreEntry *);
-SQUIDCEXTERN void redirectStart(clientHttpRequest *, RH *, void *);
SQUIDCEXTERN void redirectInit(void);
SQUIDCEXTERN void redirectShutdown(void);
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);
extern void start_announce(void *unused);
-extern void sslStart(clientHttpRequest *, size_t *, int *);
extern void waisStart(FwdState *);
/* ident.c */
/* mem */
-SQUIDCEXTERN void memInit(void);
SQUIDCEXTERN void memClean(void);
SQUIDCEXTERN void memInitModule(void);
SQUIDCEXTERN void memCleanModule(void);
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 */
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 *);
/*
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
*/
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);
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
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);
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
*/
/*
- * $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
/*
- * $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
#include "squid.h"
#include "authenticate.h"
#include "Store.h"
+#include "client_side_request.h"
typedef struct {
void *data;
/*
- * $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)
/*
- * $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
#include "squid.h"
#include "Store.h"
+#include "MemObject.h"
typedef enum {
rcHTTP,
#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) {
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 */
# 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
-# 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 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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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)
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@
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 \
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:
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"
/*
- * $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
#include "heap.h"
#include "store_heap_replacement.h"
#include "Store.h"
+#include "MemObject.h"
/*
* Key generation function to implement the LFU-DA policy (Least
/*
- * $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
#include "heap.h"
#include "store_heap_replacement.h"
#include "Store.h"
+#include "MemObject.h"
REMOVALPOLICYCREATE createRemovalPolicy_heap;
/*
- * $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
#include "squid.h"
#include "Store.h"
+#include "MemObject.h"
REMOVALPOLICYCREATE createRemovalPolicy_lru;
/*
- * $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
*/
#include "squid.h"
+#include "fde.h"
static IPH send_announce;
/*
- * $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
#include "squid.h"
#include "cache_snmp.h"
#include "Store.h"
+#include "mem_node.h"
/************************************************************************
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:
/*
- * $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
/*
- * $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
*
/*
- * $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;
/*
- * $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
*/
#include "squid.h"
+#include "fde.h"
extern int commUnsetNonBlocking(int fd);
extern int commSetNonBlocking(int fd);
/*
- * $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
*
/*
- * $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
#endif
static EVH statObjects;
static OBJH info_get;
-static OBJH statFiledescriptors;
static OBJH statCountersDump;
static OBJH statPeerSelect;
static OBJH statDigestBlob;
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));
(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");
}
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;
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;
}
}
#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)
{
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",
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",
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);
/*
- * $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;
+}
--- /dev/null
+
+/*
+ * $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 */
/*
- * $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)
/*
* 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 *);
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 *
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;
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;
/* get rid of memory copy of the object */
-/* Only call this if storeCheckPurgeMem(e) returns 1 */
static void
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);
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);
}
/* 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);
}
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);
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)
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
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;
}
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)) {
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,
* responses without content length would sometimes get released
* in client_side, thinking that the response is incomplete.
*/
- storeSwapOut(e);
- InvokeHandlers(e);
+ InvokeHandlers(this);
}
/*
void
storeAbort(StoreEntry * e)
{
+ statCounter.aborted_requests++;
MemObject *mem = e->mem_obj;
assert(e->store_status == STORE_PENDING);
assert(mem != NULL);
* 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",
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 */
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? */
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);
}
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,
PROF_stop(storeRelease);
return;
} else {
- destroy_StoreEntry(e);
+ destroyStoreEntry(e);
}
}
storeLog(STORE_LOG_RELEASE, e);
#endif
}
storeSetMemStatus(e, NOT_IN_MEMORY);
- destroy_StoreEntry(e);
+ destroyStoreEntry(e);
PROF_stop(storeRelease);
}
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;
}
void
storeFreeMemory(void)
{
- hashFreeItems(store_table, destroy_StoreEntry);
+ hashFreeItems(store_table, destroyStoreEntry);
hashFreeMemory(store_table);
store_table = NULL;
#if USE_CACHE_DIGESTS
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);
/*
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)
{
{
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 */
{
EBIT_CLR(e->flags, DELAY_SENDING);
InvokeHandlers(e);
- storeSwapOut(e);
}
ssize_t
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;
}
/*
* 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 */
}
#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;
{
return "N/A";
}
+
+char const *
+NullStoreEntry::getSerialisedMetaData()
+{
+ return NULL;
+}
+
+#ifndef _USE_INLINE_
+#include "Store.cci"
+#endif
/*
- * $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)
{
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)
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,
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);
}
/*
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
* 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;
}
/*
* 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;
}
/*
* 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
if (sc == NULL)
return 0;
#endif
- if (sc->callback == NULL)
+ if (!sc->callbackPending())
return 0;
return 1;
}
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);
#if STORE_CLIENT_LIST_DEBUG
cbdataReferenceDone(sc->owner);
#endif
- cbdataFree(sc);
+ delete sc;
assert(e->lock_count > 0);
if (mem->nclients == 0)
CheckQuickAbort(e);
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;
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;
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) {
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");
static void
CheckQuickAbort(StoreEntry * entry)
{
- if (entry == NULL)
- return;
+ assert (entry);
if (storePendingNClients(entry) > 0)
return;
if (entry->store_status != STORE_PENDING)
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) {}
/*
- * $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
*/
/* 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);
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)
*/
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);
/*
- * $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
#include "squid.h"
#include "Store.h"
+#include "MemObject.h"
#include "SwapDir.h"
#if HAVE_STATVFS
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",
#include "squid.h"
#include "Store.h"
+#include "MemObject.h"
#include "SwapDir.h"
static struct {
}
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);
}
/*
- * $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
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 *
/*
- * $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
#include "squid.h"
#include "Store.h"
+#include "MemObject.h"
static const char *storeLogTags[] =
{
storeLog(int tag, const StoreEntry * e)
{
MemObject *mem = e->mem_obj;
- HttpReply *reply;
+ HttpReply const *reply;
if (NULL == storelog)
return;
#if UNUSED_CODE
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
(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 {
echo "void storeFsSetup(void)"
echo "{"
for module in "$@"; do
- echo " storeFsAdd(\"$module\", storeFsSetup_${module});"
+ echo " StoreEntry::FsAdd(\"$module\", storeFsSetup_${module});"
done
echo "}"
/*
- * $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
/*
- * $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
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++;
}
/*
- * $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)
while ((t = n) != NULL) {
n = t->next;
xfree(t->value);
- memFree(t, MEM_TLV);
+ t->deleteSelf();
}
}
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;
}
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);
*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;
-}
/*
- * $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;
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
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
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
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? */
}
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) {
* 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);
}
}
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?
*/
/*
* 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;
}
/*
- * $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/
#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;
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;
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 */
* 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) */
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 */
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) */
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> */
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;
};
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 {
} 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 {
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
*/
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];
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 ..
#!/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
/*
- * $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
*
/*
- * $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
*/
#include "squid.h"
+#include "fde.h"
#define DEAD_MSG "\
The Squid Cache (version %s) died.\n\
/*
- * $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;
/*
- * $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/
*
*/
+#include "squid.h"
+
#ifndef SQUID_TYPEDEFS_H
#define SQUID_TYPEDEFS_H
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;
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;
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;
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;
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;
/* 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;
/*
- * $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);
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()
{
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++) {
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);
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 ? */
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)) {
*filn_p = fn;
return fd;
}
+
+#ifndef _USE_INLINE_
+#include "ufscommon.cci"
+#endif
--- /dev/null
+/*
+ * $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.
+ *
+ */
+
/*
- * $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/
* ----------------------------------------------------------
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:
public:
void *operator new(size_t);
void operator delete (void *);
- char *buf;
+ char const *buf;
size_t size;
off_t offset;
FREE *free_func;
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;
int getNextFile(sfileno *, int *size);
};
+#ifdef _USE_INLINE_
+#include "ufscommon.cci"
+#endif
#endif /* SQUID_UFSCOMMON_H */
--- /dev/null
+
+/*
+ * $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;
+ }
+}
/*
- * $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
#else /* UNLINK_DAEMON */
+#include "fde.h"
+
/* This code gets linked to Squid */
static int unlinkd_wfd = -1;
/*
- * $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
*/
#include "squid.h"
+#include "HttpRequest.h"
const char *RequestMethodStr[] =
{
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;
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:
*request->login ? "@" : null_string,
request->host,
portbuf,
- strBuf(request->urlpath));
+ request->urlpath.buf());
break;
}
}
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:
loginbuf,
request->host,
portbuf,
- strBuf(request->urlpath));
+ request->urlpath.buf());
/*
* strip arguments AFTER a question-mark
*/
/*
- * $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
#include "squid.h"
#include "StoreClient.h"
#include "Store.h"
+#include "HttpReply.h"
+#include "HttpRequest.h"
#define URN_REQBUF_SZ 4096
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;
}
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);
}
{
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);
UrnState::setUriResFromRequest(request_t *r)
{
if (RequestNeedsMenu(r)) {
- updateRequestURL(r, strBuf(r->urlpath) + 5);
+ updateRequestURL(r, r->urlpath.buf() + 5);
flags.force_menu = 1;
}
sc = storeClientListAdd(urlres_e, this);
}
reqofs = 0;
- StoreIOBuffer tempBuffer = EMPTYIOBUFFER;
+ StoreIOBuffer tempBuffer;
tempBuffer.offset = reqofs;
tempBuffer.length = URN_REQBUF_SZ;
tempBuffer.data = reqbuf;
return u1->rtt - u2->rtt;
}
+/* TODO: use the clientStream support for this */
static void
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);
"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);
}
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);
/*
- * $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>
/*
- * $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;
char url[MAX_URL];
request_t *request;
FwdState *fwd;
- char buf[BUFSIZ];
-} WaisStateData;
+ char buf[BUFSIZ];
+ bool dataWritten;
+};
static PF waisStateFree;
static PF waisTimeout;
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));
}
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;
fwdComplete(waisState->fwd);
comm_close(fd);
} else {
+ waisState->dataWritten = 1;
storeAppend(entry, buf, len);
comm_read(fd, waisState->buf, read_sz, waisReadReply, waisState);
}
} else {
/* Schedule read reply. */
comm_read(fd, waisState->buf, BUFSIZ, waisReadReply, waisState);
- commSetDefer(fd, fwdCheckDeferRead, entry);
+ commSetDefer(fd, StoreEntry::CheckDeferRead, entry);
}
}
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;
/*
- * $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
/*
- * $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;
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);
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 */
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) {
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 {
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
/*
- * $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 * * * * * * *
*
#
# 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
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
-# 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.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@
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@
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@
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@
MKDIR = @MKDIR@
MV = @MV@
NTLM_AUTH_HELPERS = @NTLM_AUTH_HELPERS@
-OBJEXT = @OBJEXT@
OPT_DEFAULT_HOSTS = @OPT_DEFAULT_HOSTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
STORE_MODULES = @STORE_MODULES@
STORE_MODULE_SUBDIRS = @STORE_MODULE_SUBDIRS@
STORE_OBJS = @STORE_OBJS@
+STRIP = @STRIP@
TRUE = @TRUE@
VERSION = @VERSION@
XTRA_LIBS = @XTRA_LIBS@
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)
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)
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
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)
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@
@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@
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
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 \
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:
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"
/*
- * $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
--- /dev/null
+
+/*
+ * $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;
+}
--- /dev/null
+
+/*
+ * $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;
+}
/*
- * $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
#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
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;
}
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) {