diff --git a/SOURCES/squid-CVE-2016-4051.patch b/SOURCES/squid-CVE-2016-4051.patch new file mode 100644 index 0000000..cb6e6de --- /dev/null +++ b/SOURCES/squid-CVE-2016-4051.patch @@ -0,0 +1,1700 @@ +------------------------------------------------------------ +revno: 12695 +revision-id: squid3@treenet.co.nz-20160420064259-k9dn77q0xna1doax +parent: squid3@treenet.co.nz-20160330141606-19rqzzip0grq9a77 +committer: Amos Jeffries +branch nick: 3.3 +timestamp: Wed 2016-04-20 18:42:59 +1200 +message: + cachemgr.cgi: use dynamic MemBuf for internal content generation + + Using a fixed size buffer limits how big content lines can be. Modern + HTTP is fast reaching the point where such limits are problematic. + Also fixes incorrect uses of snprintf() by removing them. +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20160420064259-k9dn77q0xna1doax +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.3 +# testament_sha1: 0c7cd2d0ababe794c0fd5b1dc94c647c064c122d +# timestamp: 2016-04-20 06:50:48 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.3 +# base_revision_id: squid3@treenet.co.nz-20160330141606-\ +# 19rqzzip0grq9a77 +# +# Begin patch +=== modified file 'src/tests/Stub.list' +--- src/tests/Stub.list 2014-10-08 15:31:39 +0000 ++++ src/tests/Stub.list 2016-04-20 06:42:59 +0000 +@@ -3,6 +3,7 @@ + tests/stub_acl.cc \ + tests/stub_cache_cf.cc \ + tests/stub_cache_manager.cc \ ++ tests/stub_cbdata.cc \ + tests/stub_client_db.cc \ + tests/stub_client_side_request.cc \ + tests/stub_comm.cc \ + +=== added file 'src/tests/stub_cbdata.cc' +--- src/tests/stub_cbdata.cc 1970-01-01 00:00:00 +0000 ++++ src/tests/stub_cbdata.cc 2016-04-20 06:42:59 +0000 +@@ -0,0 +1,30 @@ ++#include "squid.h" ++#include "cbdata.h" ++ ++#define STUB_API "cbdata.cc" ++#include "tests/STUB.h" ++ ++void cbdataRegisterWithCacheManager(void) STUB ++void *cbdataInternalAlloc(cbdata_type type, const char *, int sz) { ++ return xcalloc(1, sz); ++} ++void *cbdataInternalFree(void *p, const char *, int) { ++ xfree(p); ++ return nullptr; ++} ++#if USE_CBDATA_DEBUG ++void *cbdataInternalAllocDbg(cbdata_type type, const char *, int) STUB_RETVAL(NULL) ++void *cbdataInternalFreeDbg(void *p, const char *, int) STUB_RETVAL(NULL) ++void cbdataInternalLockDbg(const void *p, const char *, int) STUB ++void cbdataInternalUnlockDbg(const void *p, const char *, int) STUB ++int cbdataInternalReferenceDoneValidDbg(void **p, void **tp, const char *, int) STUB_RETVAL(0) ++#else ++void *cbdataInternalAlloc(cbdata_type type) STUB_RETVAL(NULL) ++void *cbdataInternalFree(void *p) STUB_RETVAL(NULL) ++void cbdataInternalLock(const void *p) STUB ++void cbdataInternalUnlock(const void *p) STUB ++int cbdataInternalReferenceDoneValid(void **p, void **tp) STUB_RETVAL(0) ++#endif ++ ++int cbdataReferenceValid(const void *p) STUB_RETVAL(0) ++cbdata_type cbdataInternalAddType(cbdata_type type, const char *label, int size, FREE * free_func) STUB_RETVAL(CBDATA_UNKNOWN) + +=== modified file 'src/tests/stub_mem.cc' +--- src/tests/stub_mem.cc 2012-08-29 07:29:35 +0000 ++++ src/tests/stub_mem.cc 2016-04-20 06:42:59 +0000 +@@ -5,7 +5,7 @@ + #include "squid.h" + + #define STUB_API "stub_mem.cc" +-#include "STUB.h" ++#include "tests/STUB.h" + #include "Mem.h" + + void + +=== modified file 'tools/Makefile.am' +--- tools/Makefile.am 2010-12-06 14:06:06 +0000 ++++ tools/Makefile.am 2016-04-20 06:42:59 +0000 +@@ -34,15 +34,24 @@ + stub_debug.cc: $(top_srcdir)/src/tests/stub_debug.cc + cp $(top_srcdir)/src/tests/stub_debug.cc . + ++MemBuf.cc: $(top_srcdir)/src/MemBuf.cc ++ cp $(top_srcdir)/src/MemBuf.cc $@ ++ + time.cc: $(top_srcdir)/src/time.cc + cp $(top_srcdir)/src/time.cc . + ++stub_cbdata.cc: $(top_srcdir)/src/tests/stub_cbdata.cc ++ cp $(top_srcdir)/src/tests/stub_cbdata.cc $@ ++ ++stub_mem.cc: $(top_srcdir)/src/tests/stub_mem.cc ++ cp $(top_srcdir)/src/tests/stub_mem.cc $@ ++ + # stock tools for unit tests - library independent versions of dlink_list + # etc. + # globals.cc is needed by test_tools.cc. + # Neither of these should be disted from here. + TESTSOURCES= test_tools.cc +-CLEANFILES += test_tools.cc stub_debug.cc time.cc ++CLEANFILES += test_tools.cc MemBuf.cc stub_debug.cc time.cc stub_cbdata.cc stub_mem.cc + + ## ##### helper-mux ##### + +@@ -73,7 +82,10 @@ + libexec_PROGRAMS = cachemgr$(CGIEXT) + + cachemgr__CGIEXT__SOURCES = cachemgr.cc \ ++ MemBuf.cc \ ++ stub_cbdata.cc \ + stub_debug.cc \ ++ stub_mem.cc \ + test_tools.cc \ + time.cc + + +=== modified file 'tools/cachemgr.cc' +--- tools/cachemgr.cc 2013-09-09 07:17:19 +0000 ++++ tools/cachemgr.cc 2016-04-20 06:42:59 +0000 +@@ -35,6 +35,7 @@ + #include "getfullhostname.h" + #include "html_quote.h" + #include "ip/Address.h" ++#include "MemBuf.h" + #include "rfc1123.h" + #include "rfc1738.h" + #include "util.h" +@@ -460,8 +461,8 @@ + return url; + } + +-static const char * +-munge_menu_line(const char *buf, cachemgr_request * req) ++static void ++munge_menu_line(MemBuf &out, const char *buf, cachemgr_request * req) + { + char *x; + const char *a; +@@ -469,15 +470,14 @@ + const char *p; + char *a_url; + char *buf_copy; +- static char html[2 * 1024]; +- +- if (strlen(buf) < 1) +- return buf; +- +- if (*buf != ' ') +- return buf; +- +- buf_copy = x = xstrdup(buf); ++ ++ const char bufLen = strlen(buf); ++ if (bufLen < 1 || *buf != ' ') { ++ out.append(buf, bufLen); ++ return; ++ } ++ ++ buf_copy = x = xstrndup(buf, bufLen); + + a = xstrtok(&x, '\t'); + +@@ -489,59 +489,56 @@ + + /* no reason to give a url for a disabled action */ + if (!strcmp(p, "disabled")) +- snprintf(html, sizeof(html), "
  • %s (disabled).\n", d, a_url); ++ out.Printf("
  • %s (disabled).\n", d, a_url); + else + /* disable a hidden action (requires a password, but password is not in squid.conf) */ + if (!strcmp(p, "hidden")) +- snprintf(html, sizeof(html), "
  • %s (hidden).\n", d, a_url); ++ out.Printf("
  • %s (hidden).\n", d, a_url); + else + /* disable link if authentication is required and we have no password */ + if (!strcmp(p, "protected") && !req->passwd) +- snprintf(html, sizeof(html), "
  • %s (requires authentication).\n", +- d, menu_url(req, "authenticate"), a_url); ++ out.Printf("
  • %s (requires authentication).\n", ++ d, menu_url(req, "authenticate"), a_url); + else + /* highlight protected but probably available entries */ + if (!strcmp(p, "protected")) +- snprintf(html, sizeof(html), "
  • %s\n", +- a_url, d); ++ out.Printf("
  • %s\n", ++ a_url, d); + + /* public entry or unknown type of protection */ + else +- snprintf(html, sizeof(html), "
  • %s\n", a_url, d); ++ out.Printf("
  • %s\n", a_url, d); + + xfree(a_url); + + xfree(buf_copy); +- +- return html; + } + +-static const char * +-munge_other_line(const char *buf, cachemgr_request * req) ++static void ++munge_other_line(MemBuf &out, const char *buf, cachemgr_request *) + { + static const char *ttags[] = {"td", "th"}; + +- static char html[4096]; + static int table_line_num = 0; + static int next_is_header = 0; + int is_header = 0; + const char *ttag; + char *buf_copy; + char *x, *p; +- int l = 0; + /* does it look like a table? */ + + if (!strchr(buf, '\t') || *buf == '\t') { + /* nope, just text */ +- snprintf(html, sizeof(html), "%s%s", +- table_line_num ? "\n
    " : "", html_quote(buf));
    ++        if (table_line_num)
    ++            out.append("\n
    ", 14);
    ++        out.Printf("%s", html_quote(buf));
    +         table_line_num = 0;
    +-        return html;
    ++        return;
    +     }
    + 
    +     /* start html table */
    +     if (!table_line_num) {
    +-        l += snprintf(html + l, sizeof(html) - l, "
    \n"); ++ out.append("
    \n", 46); + next_is_header = 0; + } + +@@ -551,7 +548,7 @@ + ttag = ttags[is_header]; + + /* record starts */ +- l += snprintf(html + l, sizeof(html) - l, ""); ++ out.append("", 4); + + /* substitute '\t' */ + buf_copy = x = xstrdup(buf); +@@ -568,18 +565,17 @@ + ++x; + } + +- l += snprintf(html + l, sizeof(html) - l, "<%s colspan=\"%d\" align=\"%s\">%s", +- ttag, column_span, +- is_header ? "center" : is_number(cell) ? "right" : "left", +- html_quote(cell), ttag); ++ out.Printf("<%s colspan=\"%d\" align=\"%s\">%s", ++ ttag, column_span, ++ is_header ? "center" : is_number(cell) ? "right" : "left", ++ html_quote(cell), ttag); + } + + xfree(buf_copy); + /* record ends */ +- snprintf(html + l, sizeof(html) - l, "\n"); ++ out.append("\n", 6); + next_is_header = is_header && strstr(buf, "\t\t"); + ++table_line_num; +- return html; + } + + static const char * +@@ -736,14 +732,18 @@ + /* yes, fall through, we do not want to loose the first line */ + + case isBody: ++ { + /* interpret [and reformat] cache response */ +- ++ MemBuf out; ++ out.init(); + if (parse_menu) +- fputs(munge_menu_line(buf, req), stdout); ++ munge_menu_line(out, buf, req); + else +- fputs(munge_other_line(buf, req), stdout); ++ munge_other_line(out, buf, req); + +- break; ++ fputs(out.buf, stdout); ++ } ++ break; + + case isForward: + /* forward: no modifications allowed */ + +------------------------------------------------------------ +revno: 12696 +revision-id: squid3@treenet.co.nz-20160420101500-nm50i4u3iftemzs6 +parent: squid3@treenet.co.nz-20160420064259-k9dn77q0xna1doax +committer: Amos Jeffries +branch nick: 3.3 +timestamp: Wed 2016-04-20 22:15:00 +1200 +message: + nullptr is a C++11 feature +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20160420101500-nm50i4u3iftemzs6 +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.3 +# testament_sha1: 091f2aa4b835390972c0f42e67128484d653c2ee +# timestamp: 2016-04-20 10:50:54 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.3 +# base_revision_id: squid3@treenet.co.nz-20160420064259-\ +# k9dn77q0xna1doax +# +# Begin patch +=== modified file 'src/tests/stub_cbdata.cc' +--- src/tests/stub_cbdata.cc 2016-04-20 06:42:59 +0000 ++++ src/tests/stub_cbdata.cc 2016-04-20 10:15:00 +0000 +@@ -10,7 +10,7 @@ + } + void *cbdataInternalFree(void *p, const char *, int) { + xfree(p); +- return nullptr; ++ return NULL; + } + #if USE_CBDATA_DEBUG + void *cbdataInternalAllocDbg(cbdata_type type, const char *, int) STUB_RETVAL(NULL) +diff --git tools/Makefile.in tools/Makefile.in +index 7380540..1c951fc 100644 +--- tools/Makefile.in ++++ tools/Makefile.in +@@ -1,9 +1,8 @@ +-# Makefile.in generated by automake 1.11.1 from Makefile.am. ++# Makefile.in generated by automake 1.15 from Makefile.am. + # @configure_input@ + +-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +-# Inc. ++# Copyright (C) 1994-2014 Free Software Foundation, Inc. ++ + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -23,6 +22,61 @@ + + + VPATH = @srcdir@ ++am__is_gnu_make = { \ ++ if test -z '$(MAKELEVEL)'; then \ ++ false; \ ++ elif test -n '$(MAKE_HOST)'; then \ ++ true; \ ++ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ ++ true; \ ++ else \ ++ false; \ ++ fi; \ ++} ++am__make_running_with_option = \ ++ case $${target_option-} in \ ++ ?) ;; \ ++ *) echo "am__make_running_with_option: internal error: invalid" \ ++ "target option '$${target_option-}' specified" >&2; \ ++ exit 1;; \ ++ esac; \ ++ has_opt=no; \ ++ sane_makeflags=$$MAKEFLAGS; \ ++ if $(am__is_gnu_make); then \ ++ sane_makeflags=$$MFLAGS; \ ++ else \ ++ case $$MAKEFLAGS in \ ++ *\\[\ \ ]*) \ ++ bs=\\; \ ++ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ ++ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ ++ esac; \ ++ fi; \ ++ skip_next=no; \ ++ strip_trailopt () \ ++ { \ ++ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ ++ }; \ ++ for flg in $$sane_makeflags; do \ ++ test $$skip_next = yes && { skip_next=no; continue; }; \ ++ case $$flg in \ ++ *=*|--*) continue;; \ ++ -*I) strip_trailopt 'I'; skip_next=yes;; \ ++ -*I?*) strip_trailopt 'I';; \ ++ -*O) strip_trailopt 'O'; skip_next=yes;; \ ++ -*O?*) strip_trailopt 'O';; \ ++ -*l) strip_trailopt 'l'; skip_next=yes;; \ ++ -*l?*) strip_trailopt 'l';; \ ++ -[dEDm]) skip_next=yes;; \ ++ -[JT]) skip_next=yes;; \ ++ esac; \ ++ case $$flg in \ ++ *$$target_option*) has_opt=yes; break;; \ ++ esac; \ ++ done; \ ++ test $$has_opt = yes ++am__make_dryrun = (target_option=n; $(am__make_running_with_option)) ++am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) + pkgdatadir = $(datadir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ +@@ -41,9 +95,6 @@ PRE_UNINSTALL = : + POST_UNINSTALL = : + build_triplet = @build@ + host_triplet = @host@ +-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ +- $(top_srcdir)/doc/manuals/Substitute.am \ +- $(top_srcdir)/src/Common.am + check_PROGRAMS = + TESTS = + @USE_LOADABLE_MODULES_TRUE@am__append_1 = $(INCLTDL) +@@ -63,6 +114,7 @@ am__aclocal_m4_deps = $(top_srcdir)/acinclude/init.m4 \ + $(top_srcdir)/configure.ac + am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) ++DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) + mkinstalldirs = $(install_sh) -d + CONFIG_HEADER = $(top_builddir)/include/autoconf.h + CONFIG_CLEAN_FILES = +@@ -72,7 +124,10 @@ am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libexecdir)" \ + "$(DESTDIR)$(man8dir)" + PROGRAMS = $(bin_PROGRAMS) $(libexec_PROGRAMS) + am_cachemgr__CGIEXT__OBJECTS = cachemgr__CGIEXT_-cachemgr.$(OBJEXT) \ ++ cachemgr__CGIEXT_-MemBuf.$(OBJEXT) \ ++ cachemgr__CGIEXT_-stub_cbdata.$(OBJEXT) \ + cachemgr__CGIEXT_-stub_debug.$(OBJEXT) \ ++ cachemgr__CGIEXT_-stub_mem.$(OBJEXT) \ + cachemgr__CGIEXT_-test_tools.$(OBJEXT) \ + cachemgr__CGIEXT_-time.$(OBJEXT) + cachemgr__CGIEXT__OBJECTS = $(am_cachemgr__CGIEXT__OBJECTS) +@@ -84,8 +139,12 @@ cachemgr__CGIEXT__DEPENDENCIES = $(top_builddir)/src/ip/libip.la \ + $(top_builddir)/lib/libmiscencoding.la \ + $(top_builddir)/lib/libmiscutil.la $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3) +-cachemgr__CGIEXT__LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ +- $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ ++AM_V_lt = $(am__v_lt_@AM_V@) ++am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) ++am__v_lt_0 = --silent ++am__v_lt_1 = ++cachemgr__CGIEXT__LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ ++ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ + $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ + am_squidclient_OBJECTS = squidclient.$(OBJEXT) stub_debug.$(OBJEXT) \ +@@ -117,43 +176,272 @@ am__nobase_list = $(am__nobase_strip_setup); \ + am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' ++am__uninstall_files_from_dir = { \ ++ test -z "$$files" \ ++ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ ++ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ ++ $(am__cd) "$$dir" && rm -f $$files; }; \ ++ } + SCRIPTS = $(libexec_SCRIPTS) ++AM_V_P = $(am__v_P_@AM_V@) ++am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) ++am__v_P_0 = false ++am__v_P_1 = : ++AM_V_GEN = $(am__v_GEN_@AM_V@) ++am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) ++am__v_GEN_0 = @echo " GEN " $@; ++am__v_GEN_1 = ++AM_V_at = $(am__v_at_@AM_V@) ++am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) ++am__v_at_0 = @ ++am__v_at_1 = + DEFAULT_INCLUDES = + depcomp = $(SHELL) $(top_srcdir)/cfgaux/depcomp + am__depfiles_maybe = depfiles + am__mv = mv -f + CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +-LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ +- --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ +- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) ++LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ ++ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ ++ $(AM_CXXFLAGS) $(CXXFLAGS) ++AM_V_CXX = $(am__v_CXX_@AM_V@) ++am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) ++am__v_CXX_0 = @echo " CXX " $@; ++am__v_CXX_1 = + CXXLD = $(CXX) +-CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ +- --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ +- $(LDFLAGS) -o $@ ++CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ ++ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) ++am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) ++am__v_CXXLD_0 = @echo " CXXLD " $@; ++am__v_CXXLD_1 = + SOURCES = $(cachemgr__CGIEXT__SOURCES) $(squidclient_SOURCES) + DIST_SOURCES = $(cachemgr__CGIEXT__SOURCES) $(squidclient_SOURCES) +-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ +- html-recursive info-recursive install-data-recursive \ +- install-dvi-recursive install-exec-recursive \ +- install-html-recursive install-info-recursive \ +- install-pdf-recursive install-ps-recursive install-recursive \ +- installcheck-recursive installdirs-recursive pdf-recursive \ +- ps-recursive uninstall-recursive ++RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ++ ctags-recursive dvi-recursive html-recursive info-recursive \ ++ install-data-recursive install-dvi-recursive \ ++ install-exec-recursive install-html-recursive \ ++ install-info-recursive install-pdf-recursive \ ++ install-ps-recursive install-recursive installcheck-recursive \ ++ installdirs-recursive pdf-recursive ps-recursive \ ++ tags-recursive uninstall-recursive ++am__can_run_installinfo = \ ++ case $$AM_UPDATE_INFO_DIR in \ ++ n|no|NO) false;; \ ++ *) (install-info --version) >/dev/null 2>&1;; \ ++ esac + man1dir = $(mandir)/man1 + man8dir = $(mandir)/man8 + NROFF = nroff + MANS = $(man_MANS) + RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ +- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ +- distdir ++am__recursive_targets = \ ++ $(RECURSIVE_TARGETS) \ ++ $(RECURSIVE_CLEAN_TARGETS) \ ++ $(am__extra_recursive_targets) ++AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ ++ check recheck distdir ++am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) ++# Read a list of newline-separated strings from the standard input, ++# and print each of them once, without duplicates. Input order is ++# *not* preserved. ++am__uniquify_input = $(AWK) '\ ++ BEGIN { nonempty = 0; } \ ++ { items[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in items) print i; }; } \ ++' ++# Make sure the list of sources is unique. This is necessary because, ++# e.g., the same source file might be shared among _SOURCES variables ++# for different programs/libraries. ++am__define_uniq_tagged_files = \ ++ list='$(am__tagged_files)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | $(am__uniquify_input)` + ETAGS = etags + CTAGS = ctags +-am__tty_colors = \ +-red=; grn=; lgn=; blu=; std= ++am__tty_colors_dummy = \ ++ mgn= red= grn= lgn= blu= brg= std=; \ ++ am__color_tests=no ++am__tty_colors = { \ ++ $(am__tty_colors_dummy); \ ++ if test "X$(AM_COLOR_TESTS)" = Xno; then \ ++ am__color_tests=no; \ ++ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ ++ am__color_tests=yes; \ ++ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ ++ am__color_tests=yes; \ ++ fi; \ ++ if test $$am__color_tests = yes; then \ ++ red=''; \ ++ grn=''; \ ++ lgn=''; \ ++ blu=''; \ ++ mgn=''; \ ++ brg=''; \ ++ std=''; \ ++ fi; \ ++} ++am__recheck_rx = ^[ ]*:recheck:[ ]* ++am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* ++am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* ++# A command that, given a newline-separated list of test names on the ++# standard input, print the name of the tests that are to be re-run ++# upon "make recheck". ++am__list_recheck_tests = $(AWK) '{ \ ++ recheck = 1; \ ++ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ ++ { \ ++ if (rc < 0) \ ++ { \ ++ if ((getline line2 < ($$0 ".log")) < 0) \ ++ recheck = 0; \ ++ break; \ ++ } \ ++ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ ++ { \ ++ recheck = 0; \ ++ break; \ ++ } \ ++ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ ++ { \ ++ break; \ ++ } \ ++ }; \ ++ if (recheck) \ ++ print $$0; \ ++ close ($$0 ".trs"); \ ++ close ($$0 ".log"); \ ++}' ++# A command that, given a newline-separated list of test names on the ++# standard input, create the global log from their .trs and .log files. ++am__create_global_log = $(AWK) ' \ ++function fatal(msg) \ ++{ \ ++ print "fatal: making $@: " msg | "cat >&2"; \ ++ exit 1; \ ++} \ ++function rst_section(header) \ ++{ \ ++ print header; \ ++ len = length(header); \ ++ for (i = 1; i <= len; i = i + 1) \ ++ printf "="; \ ++ printf "\n\n"; \ ++} \ ++{ \ ++ copy_in_global_log = 1; \ ++ global_test_result = "RUN"; \ ++ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ ++ { \ ++ if (rc < 0) \ ++ fatal("failed to read from " $$0 ".trs"); \ ++ if (line ~ /$(am__global_test_result_rx)/) \ ++ { \ ++ sub("$(am__global_test_result_rx)", "", line); \ ++ sub("[ ]*$$", "", line); \ ++ global_test_result = line; \ ++ } \ ++ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ ++ copy_in_global_log = 0; \ ++ }; \ ++ if (copy_in_global_log) \ ++ { \ ++ rst_section(global_test_result ": " $$0); \ ++ while ((rc = (getline line < ($$0 ".log"))) != 0) \ ++ { \ ++ if (rc < 0) \ ++ fatal("failed to read from " $$0 ".log"); \ ++ print line; \ ++ }; \ ++ printf "\n"; \ ++ }; \ ++ close ($$0 ".trs"); \ ++ close ($$0 ".log"); \ ++}' ++# Restructured Text title. ++am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } ++# Solaris 10 'make', and several other traditional 'make' implementations, ++# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it ++# by disabling -e (using the XSI extension "set +e") if it's set. ++am__sh_e_setup = case $$- in *e*) set +e;; esac ++# Default flags passed to test drivers. ++am__common_driver_flags = \ ++ --color-tests "$$am__color_tests" \ ++ --enable-hard-errors "$$am__enable_hard_errors" \ ++ --expect-failure "$$am__expect_failure" ++# To be inserted before the command running the test. Creates the ++# directory for the log if needed. Stores in $dir the directory ++# containing $f, in $tst the test, in $log the log. Executes the ++# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and ++# passes TESTS_ENVIRONMENT. Set up options for the wrapper that ++# will run the test scripts (or their associated LOG_COMPILER, if ++# thy have one). ++am__check_pre = \ ++$(am__sh_e_setup); \ ++$(am__vpath_adj_setup) $(am__vpath_adj) \ ++$(am__tty_colors); \ ++srcdir=$(srcdir); export srcdir; \ ++case "$@" in \ ++ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ ++ *) am__odir=.;; \ ++esac; \ ++test "x$$am__odir" = x"." || test -d "$$am__odir" \ ++ || $(MKDIR_P) "$$am__odir" || exit $$?; \ ++if test -f "./$$f"; then dir=./; \ ++elif test -f "$$f"; then dir=; \ ++else dir="$(srcdir)/"; fi; \ ++tst=$$dir$$f; log='$@'; \ ++if test -n '$(DISABLE_HARD_ERRORS)'; then \ ++ am__enable_hard_errors=no; \ ++else \ ++ am__enable_hard_errors=yes; \ ++fi; \ ++case " $(XFAIL_TESTS) " in \ ++ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ ++ am__expect_failure=yes;; \ ++ *) \ ++ am__expect_failure=no;; \ ++esac; \ ++$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) ++# A shell command to get the names of the tests scripts with any registered ++# extension removed (i.e., equivalently, the names of the test logs, with ++# the '.log' extension removed). The result is saved in the shell variable ++# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, ++# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", ++# since that might cause problem with VPATH rewrites for suffix-less tests. ++# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. ++am__set_TESTS_bases = \ ++ bases='$(TEST_LOGS)'; \ ++ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ ++ bases=`echo $$bases` ++RECHECK_LOGS = $(TEST_LOGS) ++TEST_SUITE_LOG = test-suite.log ++TEST_EXTENSIONS = @EXEEXT@ .test ++am__test_logs1 = $(TESTS:=.log) ++am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) ++TEST_LOGS = $(am__test_logs2:.test.log=.log) ++TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/cfgaux/test-driver ++TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ ++ $(TEST_LOG_FLAGS) ++am__set_b = \ ++ case '$@' in \ ++ */*) \ ++ case '$*' in \ ++ */*) b='$*';; \ ++ *) b=`echo '$@' | sed 's/\.log$$//'`; \ ++ esac;; \ ++ *) \ ++ b='$*';; \ ++ esac + DIST_SUBDIRS = $(SUBDIRS) ++am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/cfgaux/depcomp \ ++ $(top_srcdir)/cfgaux/test-driver \ ++ $(top_srcdir)/doc/manuals/Substitute.am \ ++ $(top_srcdir)/src/Common.am + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + am__relativize = \ + dir0=`pwd`; \ +@@ -184,8 +472,8 @@ ACLOCAL = @ACLOCAL@ + ADAPTATION_LIBS = @ADAPTATION_LIBS@ + ALLOCA = @ALLOCA@ + AMTAR = @AMTAR@ ++AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ + AR = @AR@ +-ARGZ_H = @ARGZ_H@ + AR_R = @AR_R@ + AUTH_LIBS_TO_BUILD = @AUTH_LIBS_TO_BUILD@ + AUTH_MODULES = @AUTH_MODULES@ +@@ -222,6 +510,7 @@ DISK_LINKOBJS = @DISK_LINKOBJS@ + DISK_MODULES = @DISK_MODULES@ + DISK_OS_LIBS = @DISK_OS_LIBS@ + DISK_PROGRAMS = @DISK_PROGRAMS@ ++DLLTOOL = @DLLTOOL@ + DSYMUTIL = @DSYMUTIL@ + DUMPBIN = @DUMPBIN@ + ECAP_LIBS = @ECAP_LIBS@ +@@ -271,11 +560,14 @@ LTDLDEPS = @LTDLDEPS@ + LTDLINCL = @LTDLINCL@ + LTDLOPEN = @LTDLOPEN@ + LTLIBOBJS = @LTLIBOBJS@ ++LT_ARGZ_H = @LT_ARGZ_H@ + LT_CONFIG_H = @LT_CONFIG_H@ + LT_DLLOADERS = @LT_DLLOADERS@ + LT_DLPREOPEN = @LT_DLPREOPEN@ ++LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ + MAINT = @MAINT@ + MAKEINFO = @MAKEINFO@ ++MANIFEST_TOOL = @MANIFEST_TOOL@ + MINGW_LIBS = @MINGW_LIBS@ + MKDIR = @MKDIR@ + MKDIR_P = @MKDIR_P@ +@@ -336,6 +628,7 @@ abs_builddir = @abs_builddir@ + abs_srcdir = @abs_srcdir@ + abs_top_builddir = @abs_top_builddir@ + abs_top_srcdir = @abs_top_srcdir@ ++ac_ct_AR = @ac_ct_AR@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ + ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +@@ -392,7 +685,8 @@ top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ + AM_CFLAGS = $(SQUID_CFLAGS) + AM_CXXFLAGS = $(SQUID_CXXFLAGS) +-CLEANFILES = test_tools.cc stub_debug.cc time.cc cachemgr.cgi.8 ++CLEANFILES = test_tools.cc MemBuf.cc stub_debug.cc time.cc \ ++ stub_cbdata.cc stub_mem.cc cachemgr.cgi.8 + INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/include -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src -I$(top_builddir)/include \ + $(SQUID_CPPUNIT_INC) $(KRB5INCS) $(am__append_1) -I$(srcdir) +@@ -436,7 +730,10 @@ squidclient_SOURCES = squidclient.cc \ + + DEFAULT_CACHEMGR_CONFIG = $(sysconfdir)/cachemgr.conf + cachemgr__CGIEXT__SOURCES = cachemgr.cc \ ++ MemBuf.cc \ ++ stub_cbdata.cc \ + stub_debug.cc \ ++ stub_mem.cc \ + test_tools.cc \ + time.cc + +@@ -444,7 +741,7 @@ cachemgr__CGIEXT__CXXFLAGS = -DDEFAULT_CACHEMGR_CONFIG=\"$(DEFAULT_CACHEMGR_CONF + all: all-recursive + + .SUFFIXES: +-.SUFFIXES: .cc .lo .o .obj ++.SUFFIXES: .cc .lo .log .o .obj .test .test$(EXEEXT) .trs + $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/src/Common.am $(top_srcdir)/doc/manuals/Substitute.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ +@@ -454,10 +751,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir + exit 1;; \ + esac; \ + done; \ +- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/Makefile'; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \ + $(am__cd) $(top_srcdir) && \ +- $(AUTOMAKE) --foreign tools/Makefile +-.PRECIOUS: Makefile ++ $(AUTOMAKE) --gnu tools/Makefile + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ +@@ -466,6 +762,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; ++$(top_srcdir)/src/Common.am $(top_srcdir)/doc/manuals/Substitute.am $(am__empty): + + $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +@@ -477,14 +774,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + $(am__aclocal_m4_deps): + install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) +- test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ ++ if test -n "$$list"; then \ ++ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ ++ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ ++ fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ +- while read p p1; do if test -f $$p || test -f $$p1; \ +- then echo "$$p"; echo "$$p"; else :; fi; \ ++ while read p p1; do if test -f $$p \ ++ || test -f $$p1 \ ++ ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ +- sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ ++ sed -e 'p;s,.*/,,;n;h' \ ++ -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ +@@ -505,7 +807,8 @@ uninstall-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ +- -e 's/$$/$(EXEEXT)/' `; \ ++ -e 's/$$/$(EXEEXT)/' \ ++ `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files +@@ -529,14 +832,19 @@ clean-checkPROGRAMS: + rm -f $$list + install-libexecPROGRAMS: $(libexec_PROGRAMS) + @$(NORMAL_INSTALL) +- test -z "$(libexecdir)" || $(MKDIR_P) "$(DESTDIR)$(libexecdir)" + @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ ++ if test -n "$$list"; then \ ++ echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \ ++ $(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \ ++ fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ +- while read p p1; do if test -f $$p || test -f $$p1; \ +- then echo "$$p"; echo "$$p"; else :; fi; \ ++ while read p p1; do if test -f $$p \ ++ || test -f $$p1 \ ++ ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ +- sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ ++ sed -e 'p;s,.*/,,;n;h' \ ++ -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ +@@ -557,7 +865,8 @@ uninstall-libexecPROGRAMS: + @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ +- -e 's/$$/$(EXEEXT)/' `; \ ++ -e 's/$$/$(EXEEXT)/' \ ++ `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(libexecdir)" && rm -f $$files +@@ -570,16 +879,21 @@ clean-libexecPROGRAMS: + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +-cachemgr$(CGIEXT)$(EXEEXT): $(cachemgr__CGIEXT__OBJECTS) $(cachemgr__CGIEXT__DEPENDENCIES) ++ ++cachemgr$(CGIEXT)$(EXEEXT): $(cachemgr__CGIEXT__OBJECTS) $(cachemgr__CGIEXT__DEPENDENCIES) $(EXTRA_cachemgr__CGIEXT__DEPENDENCIES) + @rm -f cachemgr$(CGIEXT)$(EXEEXT) +- $(cachemgr__CGIEXT__LINK) $(cachemgr__CGIEXT__OBJECTS) $(cachemgr__CGIEXT__LDADD) $(LIBS) +-squidclient$(EXEEXT): $(squidclient_OBJECTS) $(squidclient_DEPENDENCIES) ++ $(AM_V_CXXLD)$(cachemgr__CGIEXT__LINK) $(cachemgr__CGIEXT__OBJECTS) $(cachemgr__CGIEXT__LDADD) $(LIBS) ++ ++squidclient$(EXEEXT): $(squidclient_OBJECTS) $(squidclient_DEPENDENCIES) $(EXTRA_squidclient_DEPENDENCIES) + @rm -f squidclient$(EXEEXT) +- $(CXXLINK) $(squidclient_OBJECTS) $(squidclient_LDADD) $(LIBS) ++ $(AM_V_CXXLD)$(CXXLINK) $(squidclient_OBJECTS) $(squidclient_LDADD) $(LIBS) + install-libexecSCRIPTS: $(libexec_SCRIPTS) + @$(NORMAL_INSTALL) +- test -z "$(libexecdir)" || $(MKDIR_P) "$(DESTDIR)$(libexecdir)" + @list='$(libexec_SCRIPTS)'; test -n "$(libexecdir)" || list=; \ ++ if test -n "$$list"; then \ ++ echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \ ++ $(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \ ++ fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ +@@ -607,9 +921,7 @@ uninstall-libexecSCRIPTS: + @list='$(libexec_SCRIPTS)'; test -n "$(libexecdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ +- test -n "$$list" || exit 0; \ +- echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \ +- cd "$(DESTDIR)$(libexecdir)" && rm -f $$files ++ dir='$(DESTDIR)$(libexecdir)'; $(am__uninstall_files_from_dir) + + mostlyclean-compile: + -rm -f *.$(OBJEXT) +@@ -617,8 +929,11 @@ mostlyclean-compile: + distclean-compile: + -rm -f *.tab.c + ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-test_tools.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cachemgr__CGIEXT_-time.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/squidclient.Po@am__quote@ +@@ -627,84 +942,126 @@ distclean-compile: + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time.Po@am__quote@ + + .cc.o: +-@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ ++@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ + @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< ++@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< + + .cc.obj: +-@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ ++@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ + @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ + @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + + .cc.lo: +-@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ ++@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ + @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< ++@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< + + cachemgr__CGIEXT_-cachemgr.o: cachemgr.cc +-@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-cachemgr.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo -c -o cachemgr__CGIEXT_-cachemgr.o `test -f 'cachemgr.cc' || echo '$(srcdir)/'`cachemgr.cc +-@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Po +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='cachemgr.cc' object='cachemgr__CGIEXT_-cachemgr.o' libtool=no @AMDEPBACKSLASH@ ++@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-cachemgr.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo -c -o cachemgr__CGIEXT_-cachemgr.o `test -f 'cachemgr.cc' || echo '$(srcdir)/'`cachemgr.cc ++@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='cachemgr.cc' object='cachemgr__CGIEXT_-cachemgr.o' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-cachemgr.o `test -f 'cachemgr.cc' || echo '$(srcdir)/'`cachemgr.cc ++@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-cachemgr.o `test -f 'cachemgr.cc' || echo '$(srcdir)/'`cachemgr.cc + + cachemgr__CGIEXT_-cachemgr.obj: cachemgr.cc +-@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-cachemgr.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo -c -o cachemgr__CGIEXT_-cachemgr.obj `if test -f 'cachemgr.cc'; then $(CYGPATH_W) 'cachemgr.cc'; else $(CYGPATH_W) '$(srcdir)/cachemgr.cc'; fi` +-@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Po +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='cachemgr.cc' object='cachemgr__CGIEXT_-cachemgr.obj' libtool=no @AMDEPBACKSLASH@ ++@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-cachemgr.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo -c -o cachemgr__CGIEXT_-cachemgr.obj `if test -f 'cachemgr.cc'; then $(CYGPATH_W) 'cachemgr.cc'; else $(CYGPATH_W) '$(srcdir)/cachemgr.cc'; fi` ++@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Tpo $(DEPDIR)/cachemgr__CGIEXT_-cachemgr.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='cachemgr.cc' object='cachemgr__CGIEXT_-cachemgr.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-cachemgr.obj `if test -f 'cachemgr.cc'; then $(CYGPATH_W) 'cachemgr.cc'; else $(CYGPATH_W) '$(srcdir)/cachemgr.cc'; fi` ++ ++cachemgr__CGIEXT_-MemBuf.o: MemBuf.cc ++@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-MemBuf.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Tpo -c -o cachemgr__CGIEXT_-MemBuf.o `test -f 'MemBuf.cc' || echo '$(srcdir)/'`MemBuf.cc ++@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Tpo $(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='MemBuf.cc' object='cachemgr__CGIEXT_-MemBuf.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-MemBuf.o `test -f 'MemBuf.cc' || echo '$(srcdir)/'`MemBuf.cc ++ ++cachemgr__CGIEXT_-MemBuf.obj: MemBuf.cc ++@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-MemBuf.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Tpo -c -o cachemgr__CGIEXT_-MemBuf.obj `if test -f 'MemBuf.cc'; then $(CYGPATH_W) 'MemBuf.cc'; else $(CYGPATH_W) '$(srcdir)/MemBuf.cc'; fi` ++@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Tpo $(DEPDIR)/cachemgr__CGIEXT_-MemBuf.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='MemBuf.cc' object='cachemgr__CGIEXT_-MemBuf.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-MemBuf.obj `if test -f 'MemBuf.cc'; then $(CYGPATH_W) 'MemBuf.cc'; else $(CYGPATH_W) '$(srcdir)/MemBuf.cc'; fi` ++ ++cachemgr__CGIEXT_-stub_cbdata.o: stub_cbdata.cc ++@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_cbdata.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Tpo -c -o cachemgr__CGIEXT_-stub_cbdata.o `test -f 'stub_cbdata.cc' || echo '$(srcdir)/'`stub_cbdata.cc ++@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stub_cbdata.cc' object='cachemgr__CGIEXT_-stub_cbdata.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_cbdata.o `test -f 'stub_cbdata.cc' || echo '$(srcdir)/'`stub_cbdata.cc ++ ++cachemgr__CGIEXT_-stub_cbdata.obj: stub_cbdata.cc ++@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_cbdata.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Tpo -c -o cachemgr__CGIEXT_-stub_cbdata.obj `if test -f 'stub_cbdata.cc'; then $(CYGPATH_W) 'stub_cbdata.cc'; else $(CYGPATH_W) '$(srcdir)/stub_cbdata.cc'; fi` ++@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_cbdata.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stub_cbdata.cc' object='cachemgr__CGIEXT_-stub_cbdata.obj' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-cachemgr.obj `if test -f 'cachemgr.cc'; then $(CYGPATH_W) 'cachemgr.cc'; else $(CYGPATH_W) '$(srcdir)/cachemgr.cc'; fi` ++@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_cbdata.obj `if test -f 'stub_cbdata.cc'; then $(CYGPATH_W) 'stub_cbdata.cc'; else $(CYGPATH_W) '$(srcdir)/stub_cbdata.cc'; fi` + + cachemgr__CGIEXT_-stub_debug.o: stub_debug.cc +-@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_debug.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo -c -o cachemgr__CGIEXT_-stub_debug.o `test -f 'stub_debug.cc' || echo '$(srcdir)/'`stub_debug.cc +-@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Po +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='stub_debug.cc' object='cachemgr__CGIEXT_-stub_debug.o' libtool=no @AMDEPBACKSLASH@ ++@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_debug.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo -c -o cachemgr__CGIEXT_-stub_debug.o `test -f 'stub_debug.cc' || echo '$(srcdir)/'`stub_debug.cc ++@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stub_debug.cc' object='cachemgr__CGIEXT_-stub_debug.o' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_debug.o `test -f 'stub_debug.cc' || echo '$(srcdir)/'`stub_debug.cc ++@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_debug.o `test -f 'stub_debug.cc' || echo '$(srcdir)/'`stub_debug.cc + + cachemgr__CGIEXT_-stub_debug.obj: stub_debug.cc +-@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_debug.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo -c -o cachemgr__CGIEXT_-stub_debug.obj `if test -f 'stub_debug.cc'; then $(CYGPATH_W) 'stub_debug.cc'; else $(CYGPATH_W) '$(srcdir)/stub_debug.cc'; fi` +-@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Po +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='stub_debug.cc' object='cachemgr__CGIEXT_-stub_debug.obj' libtool=no @AMDEPBACKSLASH@ ++@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_debug.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo -c -o cachemgr__CGIEXT_-stub_debug.obj `if test -f 'stub_debug.cc'; then $(CYGPATH_W) 'stub_debug.cc'; else $(CYGPATH_W) '$(srcdir)/stub_debug.cc'; fi` ++@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_debug.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stub_debug.cc' object='cachemgr__CGIEXT_-stub_debug.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_debug.obj `if test -f 'stub_debug.cc'; then $(CYGPATH_W) 'stub_debug.cc'; else $(CYGPATH_W) '$(srcdir)/stub_debug.cc'; fi` ++ ++cachemgr__CGIEXT_-stub_mem.o: stub_mem.cc ++@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_mem.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Tpo -c -o cachemgr__CGIEXT_-stub_mem.o `test -f 'stub_mem.cc' || echo '$(srcdir)/'`stub_mem.cc ++@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stub_mem.cc' object='cachemgr__CGIEXT_-stub_mem.o' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_debug.obj `if test -f 'stub_debug.cc'; then $(CYGPATH_W) 'stub_debug.cc'; else $(CYGPATH_W) '$(srcdir)/stub_debug.cc'; fi` ++@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_mem.o `test -f 'stub_mem.cc' || echo '$(srcdir)/'`stub_mem.cc ++ ++cachemgr__CGIEXT_-stub_mem.obj: stub_mem.cc ++@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-stub_mem.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Tpo -c -o cachemgr__CGIEXT_-stub_mem.obj `if test -f 'stub_mem.cc'; then $(CYGPATH_W) 'stub_mem.cc'; else $(CYGPATH_W) '$(srcdir)/stub_mem.cc'; fi` ++@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Tpo $(DEPDIR)/cachemgr__CGIEXT_-stub_mem.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='stub_mem.cc' object='cachemgr__CGIEXT_-stub_mem.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-stub_mem.obj `if test -f 'stub_mem.cc'; then $(CYGPATH_W) 'stub_mem.cc'; else $(CYGPATH_W) '$(srcdir)/stub_mem.cc'; fi` + + cachemgr__CGIEXT_-test_tools.o: test_tools.cc +-@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-test_tools.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo -c -o cachemgr__CGIEXT_-test_tools.o `test -f 'test_tools.cc' || echo '$(srcdir)/'`test_tools.cc +-@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Po +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='test_tools.cc' object='cachemgr__CGIEXT_-test_tools.o' libtool=no @AMDEPBACKSLASH@ ++@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-test_tools.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo -c -o cachemgr__CGIEXT_-test_tools.o `test -f 'test_tools.cc' || echo '$(srcdir)/'`test_tools.cc ++@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='test_tools.cc' object='cachemgr__CGIEXT_-test_tools.o' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-test_tools.o `test -f 'test_tools.cc' || echo '$(srcdir)/'`test_tools.cc ++@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-test_tools.o `test -f 'test_tools.cc' || echo '$(srcdir)/'`test_tools.cc + + cachemgr__CGIEXT_-test_tools.obj: test_tools.cc +-@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-test_tools.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo -c -o cachemgr__CGIEXT_-test_tools.obj `if test -f 'test_tools.cc'; then $(CYGPATH_W) 'test_tools.cc'; else $(CYGPATH_W) '$(srcdir)/test_tools.cc'; fi` +-@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Po +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='test_tools.cc' object='cachemgr__CGIEXT_-test_tools.obj' libtool=no @AMDEPBACKSLASH@ ++@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-test_tools.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo -c -o cachemgr__CGIEXT_-test_tools.obj `if test -f 'test_tools.cc'; then $(CYGPATH_W) 'test_tools.cc'; else $(CYGPATH_W) '$(srcdir)/test_tools.cc'; fi` ++@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Tpo $(DEPDIR)/cachemgr__CGIEXT_-test_tools.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='test_tools.cc' object='cachemgr__CGIEXT_-test_tools.obj' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-test_tools.obj `if test -f 'test_tools.cc'; then $(CYGPATH_W) 'test_tools.cc'; else $(CYGPATH_W) '$(srcdir)/test_tools.cc'; fi` ++@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-test_tools.obj `if test -f 'test_tools.cc'; then $(CYGPATH_W) 'test_tools.cc'; else $(CYGPATH_W) '$(srcdir)/test_tools.cc'; fi` + + cachemgr__CGIEXT_-time.o: time.cc +-@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-time.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo -c -o cachemgr__CGIEXT_-time.o `test -f 'time.cc' || echo '$(srcdir)/'`time.cc +-@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo $(DEPDIR)/cachemgr__CGIEXT_-time.Po +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='time.cc' object='cachemgr__CGIEXT_-time.o' libtool=no @AMDEPBACKSLASH@ ++@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-time.o -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo -c -o cachemgr__CGIEXT_-time.o `test -f 'time.cc' || echo '$(srcdir)/'`time.cc ++@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo $(DEPDIR)/cachemgr__CGIEXT_-time.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='time.cc' object='cachemgr__CGIEXT_-time.o' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-time.o `test -f 'time.cc' || echo '$(srcdir)/'`time.cc ++@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-time.o `test -f 'time.cc' || echo '$(srcdir)/'`time.cc + + cachemgr__CGIEXT_-time.obj: time.cc +-@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-time.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo -c -o cachemgr__CGIEXT_-time.obj `if test -f 'time.cc'; then $(CYGPATH_W) 'time.cc'; else $(CYGPATH_W) '$(srcdir)/time.cc'; fi` +-@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo $(DEPDIR)/cachemgr__CGIEXT_-time.Po +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='time.cc' object='cachemgr__CGIEXT_-time.obj' libtool=no @AMDEPBACKSLASH@ ++@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -MT cachemgr__CGIEXT_-time.obj -MD -MP -MF $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo -c -o cachemgr__CGIEXT_-time.obj `if test -f 'time.cc'; then $(CYGPATH_W) 'time.cc'; else $(CYGPATH_W) '$(srcdir)/time.cc'; fi` ++@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cachemgr__CGIEXT_-time.Tpo $(DEPDIR)/cachemgr__CGIEXT_-time.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='time.cc' object='cachemgr__CGIEXT_-time.obj' libtool=no @AMDEPBACKSLASH@ + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-time.obj `if test -f 'time.cc'; then $(CYGPATH_W) 'time.cc'; else $(CYGPATH_W) '$(srcdir)/time.cc'; fi` ++@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cachemgr__CGIEXT__CXXFLAGS) $(CXXFLAGS) -c -o cachemgr__CGIEXT_-time.obj `if test -f 'time.cc'; then $(CYGPATH_W) 'time.cc'; else $(CYGPATH_W) '$(srcdir)/time.cc'; fi` + + mostlyclean-libtool: + -rm -f *.lo +@@ -713,11 +1070,18 @@ clean-libtool: + -rm -rf .libs _libs + install-man1: $(man_MANS) + @$(NORMAL_INSTALL) +- test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" +- @list=''; test -n "$(man1dir)" || exit 0; \ +- { for i in $$list; do echo "$$i"; done; \ +- l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ +- sed -n '/\.1[a-z]*$$/p'; \ ++ @list1=''; \ ++ list2='$(man_MANS)'; \ ++ test -n "$(man1dir)" \ ++ && test -n "`echo $$list1$$list2`" \ ++ || exit 0; \ ++ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ ++ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ ++ { for i in $$list1; do echo "$$i"; done; \ ++ if test -n "$$list2"; then \ ++ for i in $$list2; do echo "$$i"; done \ ++ | sed -n '/\.1[a-z]*$$/p'; \ ++ fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ +@@ -746,16 +1110,21 @@ uninstall-man1: + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ +- test -z "$$files" || { \ +- echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \ +- cd "$(DESTDIR)$(man1dir)" && rm -f $$files; } ++ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) + install-man8: $(man_MANS) + @$(NORMAL_INSTALL) +- test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)" +- @list=''; test -n "$(man8dir)" || exit 0; \ +- { for i in $$list; do echo "$$i"; done; \ +- l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ +- sed -n '/\.8[a-z]*$$/p'; \ ++ @list1=''; \ ++ list2='$(man_MANS)'; \ ++ test -n "$(man8dir)" \ ++ && test -n "`echo $$list1$$list2`" \ ++ || exit 0; \ ++ echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \ ++ $(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \ ++ { for i in $$list1; do echo "$$i"; done; \ ++ if test -n "$$list2"; then \ ++ for i in $$list2; do echo "$$i"; done \ ++ | sed -n '/\.8[a-z]*$$/p'; \ ++ fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ +@@ -784,27 +1153,28 @@ uninstall-man8: + sed -n '/\.8[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ +- test -z "$$files" || { \ +- echo " ( cd '$(DESTDIR)$(man8dir)' && rm -f" $$files ")"; \ +- cd "$(DESTDIR)$(man8dir)" && rm -f $$files; } ++ dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir) + + # This directory's subdirectories are mostly independent; you can cd +-# into them and run `make' without going through this Makefile. +-# To change the values of `make' variables: instead of editing Makefiles, +-# (1) if the variable is set in `config.status', edit `config.status' +-# (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): +- @fail= failcom='exit 1'; \ +- for f in x $$MAKEFLAGS; do \ +- case $$f in \ +- *=* | --[!k]*);; \ +- *k*) failcom='fail=yes';; \ +- esac; \ +- done; \ ++# into them and run 'make' without going through this Makefile. ++# To change the values of 'make' variables: instead of editing Makefiles, ++# (1) if the variable is set in 'config.status', edit 'config.status' ++# (which will cause the Makefiles to be regenerated when you run 'make'); ++# (2) otherwise, pass the desired values on the 'make' command line. ++$(am__recursive_targets): ++ @fail=; \ ++ if $(am__make_keepgoing); then \ ++ failcom='fail=yes'; \ ++ else \ ++ failcom='exit 1'; \ ++ fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ +- list='$(SUBDIRS)'; for subdir in $$list; do \ ++ case "$@" in \ ++ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ ++ *) list='$(SUBDIRS)' ;; \ ++ esac; \ ++ for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ +@@ -819,57 +1189,12 @@ $(RECURSIVE_TARGETS): + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +-$(RECURSIVE_CLEAN_TARGETS): +- @fail= failcom='exit 1'; \ +- for f in x $$MAKEFLAGS; do \ +- case $$f in \ +- *=* | --[!k]*);; \ +- *k*) failcom='fail=yes';; \ +- esac; \ +- done; \ +- dot_seen=no; \ +- case "$@" in \ +- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ +- *) list='$(SUBDIRS)' ;; \ +- esac; \ +- rev=''; for subdir in $$list; do \ +- if test "$$subdir" = "."; then :; else \ +- rev="$$subdir $$rev"; \ +- fi; \ +- done; \ +- rev="$$rev ."; \ +- target=`echo $@ | sed s/-recursive//`; \ +- for subdir in $$rev; do \ +- echo "Making $$target in $$subdir"; \ +- if test "$$subdir" = "."; then \ +- local_target="$$target-am"; \ +- else \ +- local_target="$$target"; \ +- fi; \ +- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ +- || eval $$failcom; \ +- done && test -z "$$fail" +-tags-recursive: +- list='$(SUBDIRS)'; for subdir in $$list; do \ +- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ +- done +-ctags-recursive: +- list='$(SUBDIRS)'; for subdir in $$list; do \ +- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ +- done ++ID: $(am__tagged_files) ++ $(am__define_uniq_tagged_files); mkid -fID $$unique ++tags: tags-recursive ++TAGS: tags + +-ID: $(HEADERS) $(SOURCES) $(LISP) $(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; nonempty = 1; } \ +- END { if (nonempty) { for (i in files) print i; }; }'`; \ +- mkid -fID $$unique +-tags: TAGS +- +-TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) ++tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ +@@ -885,12 +1210,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ +- 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; nonempty = 1; } \ +- END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ +@@ -902,15 +1222,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $$unique; \ + fi; \ + fi +-ctags: CTAGS +-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) +- 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; nonempty = 1; } \ +- END { if (nonempty) { for (i in files) print i; }; }'`; \ ++ctags: ctags-recursive ++ ++CTAGS: ctags ++ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) ++ $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique +@@ -919,116 +1235,182 @@ GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" ++cscopelist: cscopelist-recursive ++ ++cscopelist-am: $(am__tagged_files) ++ list='$(am__tagged_files)'; \ ++ case "$(srcdir)" in \ ++ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ ++ *) sdir=$(subdir)/$(srcdir) ;; \ ++ esac; \ ++ for i in $$list; do \ ++ if test -f "$$i"; then \ ++ echo "$(subdir)/$$i"; \ ++ else \ ++ echo "$$sdir/$$i"; \ ++ fi; \ ++ done >> $(top_builddir)/cscope.files + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +-check-TESTS: $(TESTS) +- @failed=0; all=0; xfail=0; xpass=0; skip=0; \ +- srcdir=$(srcdir); export srcdir; \ +- list=' $(TESTS) '; \ +- $(am__tty_colors); \ +- if test -n "$$list"; then \ +- for tst in $$list; do \ +- if test -f ./$$tst; then dir=./; \ +- elif test -f $$tst; then dir=; \ +- else dir="$(srcdir)/"; fi; \ +- if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ +- all=`expr $$all + 1`; \ +- case " $(XFAIL_TESTS) " in \ +- *[\ \ ]$$tst[\ \ ]*) \ +- xpass=`expr $$xpass + 1`; \ +- failed=`expr $$failed + 1`; \ +- col=$$red; res=XPASS; \ +- ;; \ +- *) \ +- col=$$grn; res=PASS; \ +- ;; \ +- esac; \ +- elif test $$? -ne 77; then \ +- all=`expr $$all + 1`; \ +- case " $(XFAIL_TESTS) " in \ +- *[\ \ ]$$tst[\ \ ]*) \ +- xfail=`expr $$xfail + 1`; \ +- col=$$lgn; res=XFAIL; \ +- ;; \ +- *) \ +- failed=`expr $$failed + 1`; \ +- col=$$red; res=FAIL; \ +- ;; \ +- esac; \ +- else \ +- skip=`expr $$skip + 1`; \ +- col=$$blu; res=SKIP; \ +- fi; \ +- echo "$${col}$$res$${std}: $$tst"; \ +- done; \ +- if test "$$all" -eq 1; then \ +- tests="test"; \ +- All=""; \ +- else \ +- tests="tests"; \ +- All="All "; \ ++# Recover from deleted '.trs' file; this should ensure that ++# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create ++# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells ++# to avoid problems with "make -n". ++.log.trs: ++ rm -f $< $@ ++ $(MAKE) $(AM_MAKEFLAGS) $< ++ ++# Leading 'am--fnord' is there to ensure the list of targets does not ++# expand to empty, as could happen e.g. with make check TESTS=''. ++am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) ++am--force-recheck: ++ @: ++ ++$(TEST_SUITE_LOG): $(TEST_LOGS) ++ @$(am__set_TESTS_bases); \ ++ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ ++ redo_bases=`for i in $$bases; do \ ++ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ ++ done`; \ ++ if test -n "$$redo_bases"; then \ ++ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ ++ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ ++ if $(am__make_dryrun); then :; else \ ++ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ +- if test "$$failed" -eq 0; then \ +- if test "$$xfail" -eq 0; then \ +- banner="$$All$$all $$tests passed"; \ +- else \ +- if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ +- banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ +- fi; \ +- else \ +- if test "$$xpass" -eq 0; then \ +- banner="$$failed of $$all $$tests failed"; \ ++ fi; \ ++ if test -n "$$am__remaking_logs"; then \ ++ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ ++ "recursion detected" >&2; \ ++ elif test -n "$$redo_logs"; then \ ++ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ ++ fi; \ ++ if $(am__make_dryrun); then :; else \ ++ st=0; \ ++ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ ++ for i in $$redo_bases; do \ ++ test -f $$i.trs && test -r $$i.trs \ ++ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ ++ test -f $$i.log && test -r $$i.log \ ++ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ ++ done; \ ++ test $$st -eq 0 || exit 1; \ ++ fi ++ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ++ ws='[ ]'; \ ++ results=`for b in $$bases; do echo $$b.trs; done`; \ ++ test -n "$$results" || results=/dev/null; \ ++ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ ++ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ ++ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ ++ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ ++ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ ++ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ ++ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ ++ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ ++ success=true; \ ++ else \ ++ success=false; \ ++ fi; \ ++ br='==================='; br=$$br$$br$$br$$br; \ ++ result_count () \ ++ { \ ++ if test x"$$1" = x"--maybe-color"; then \ ++ maybe_colorize=yes; \ ++ elif test x"$$1" = x"--no-color"; then \ ++ maybe_colorize=no; \ + else \ +- if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ +- banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ ++ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ +- fi; \ +- dashes="$$banner"; \ +- skipped=""; \ +- if test "$$skip" -ne 0; then \ +- if test "$$skip" -eq 1; then \ +- skipped="($$skip test was not run)"; \ ++ shift; \ ++ desc=$$1 count=$$2; \ ++ if test $$maybe_colorize = yes && test $$count -gt 0; then \ ++ color_start=$$3 color_end=$$std; \ + else \ +- skipped="($$skip tests were not run)"; \ ++ color_start= color_end=; \ + fi; \ +- test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ +- dashes="$$skipped"; \ +- fi; \ +- report=""; \ +- if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ +- report="Please report to $(PACKAGE_BUGREPORT)"; \ +- test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ +- dashes="$$report"; \ +- fi; \ +- dashes=`echo "$$dashes" | sed s/./=/g`; \ +- if test "$$failed" -eq 0; then \ +- echo "$$grn$$dashes"; \ +- else \ +- echo "$$red$$dashes"; \ +- fi; \ +- echo "$$banner"; \ +- test -z "$$skipped" || echo "$$skipped"; \ +- test -z "$$report" || echo "$$report"; \ +- echo "$$dashes$$std"; \ +- test "$$failed" -eq 0; \ +- else :; fi ++ echo "$${color_start}# $$desc $$count$${color_end}"; \ ++ }; \ ++ create_testsuite_report () \ ++ { \ ++ result_count $$1 "TOTAL:" $$all "$$brg"; \ ++ result_count $$1 "PASS: " $$pass "$$grn"; \ ++ result_count $$1 "SKIP: " $$skip "$$blu"; \ ++ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ ++ result_count $$1 "FAIL: " $$fail "$$red"; \ ++ result_count $$1 "XPASS:" $$xpass "$$red"; \ ++ result_count $$1 "ERROR:" $$error "$$mgn"; \ ++ }; \ ++ { \ ++ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ ++ $(am__rst_title); \ ++ create_testsuite_report --no-color; \ ++ echo; \ ++ echo ".. contents:: :depth: 2"; \ ++ echo; \ ++ for b in $$bases; do echo $$b; done \ ++ | $(am__create_global_log); \ ++ } >$(TEST_SUITE_LOG).tmp || exit 1; \ ++ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ ++ if $$success; then \ ++ col="$$grn"; \ ++ else \ ++ col="$$red"; \ ++ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ ++ fi; \ ++ echo "$${col}$$br$${std}"; \ ++ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ ++ echo "$${col}$$br$${std}"; \ ++ create_testsuite_report --maybe-color; \ ++ echo "$$col$$br$$std"; \ ++ if $$success; then :; else \ ++ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ ++ if test -n "$(PACKAGE_BUGREPORT)"; then \ ++ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ ++ fi; \ ++ echo "$$col$$br$$std"; \ ++ fi; \ ++ $$success || exit 1 ++ ++check-TESTS: ++ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list ++ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list ++ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) ++ @set +e; $(am__set_TESTS_bases); \ ++ log_list=`for i in $$bases; do echo $$i.log; done`; \ ++ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ ++ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ ++ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ ++ exit $$?; ++recheck: all $(check_PROGRAMS) ++ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) ++ @set +e; $(am__set_TESTS_bases); \ ++ bases=`for i in $$bases; do echo $$i; done \ ++ | $(am__list_recheck_tests)` || exit 1; \ ++ log_list=`for i in $$bases; do echo $$i.log; done`; \ ++ log_list=`echo $$log_list`; \ ++ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ ++ am__force_recheck=am--force-recheck \ ++ TEST_LOGS="$$log_list"; \ ++ exit $$? ++.test.log: ++ @p='$<'; \ ++ $(am__set_b); \ ++ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ ++ --log-file $$b.log --trs-file $$b.trs \ ++ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ ++ "$$tst" $(AM_TESTS_FD_REDIRECT) ++@am__EXEEXT_TRUE@.test$(EXEEXT).log: ++@am__EXEEXT_TRUE@ @p='$<'; \ ++@am__EXEEXT_TRUE@ $(am__set_b); \ ++@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ ++@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ ++@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ ++@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + + distdir: $(DISTFILES) +- @list='$(MANS)'; if test -n "$$list"; then \ +- list=`for p in $$list; do \ +- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ +- if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ +- if test -n "$$list" && \ +- grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ +- echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ +- grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ +- echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ +- echo " typically \`make maintainer-clean' will remove them" >&2; \ +- exit 1; \ +- else :; fi; \ +- else :; fi + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ +@@ -1060,13 +1442,10 @@ distdir: $(DISTFILES) + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ +- test -d "$(distdir)/$$subdir" \ +- || $(MKDIR_P) "$(distdir)/$$subdir" \ +- || exit 1; \ +- fi; \ +- done +- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ +- if test "$$subdir" = .; then :; else \ ++ $(am__make_dryrun) \ ++ || test -d "$(distdir)/$$subdir" \ ++ || $(MKDIR_P) "$(distdir)/$$subdir" \ ++ || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ +@@ -1106,11 +1485,19 @@ install-am: all-am + + installcheck: installcheck-recursive + install-strip: +- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +- `test -z '$(STRIP)' || \ +- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install ++ if test -z '$(STRIP)'; then \ ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ install; \ ++ else \ ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ ++ fi + mostlyclean-generic: ++ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) ++ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) ++ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + + clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) +@@ -1198,13 +1585,12 @@ uninstall-am: uninstall-binPROGRAMS uninstall-libexecPROGRAMS \ + + uninstall-man: uninstall-man1 uninstall-man8 + +-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \ +- ctags-recursive install-am install-strip tags-recursive ++.MAKE: $(am__recursive_targets) check-am install-am install-strip + +-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ +- all all-am check check-TESTS check-am clean clean-binPROGRAMS \ ++.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ ++ check-TESTS check-am clean clean-binPROGRAMS \ + clean-checkPROGRAMS clean-generic clean-libexecPROGRAMS \ +- clean-libtool ctags ctags-recursive distclean \ ++ clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-binPROGRAMS install-data \ +@@ -1216,11 +1602,13 @@ uninstall-man: uninstall-man1 uninstall-man8 + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ +- mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ ++ mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \ + uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-libexecPROGRAMS uninstall-libexecSCRIPTS \ + uninstall-local uninstall-man uninstall-man1 uninstall-man8 + ++.PRECIOUS: Makefile ++ + + $(OBJS): $(top_srcdir)/include/version.h $(top_builddir)/include/autoconf.h + +@@ -1230,9 +1618,18 @@ test_tools.cc: $(top_srcdir)/test-suite/test_tools.cc + stub_debug.cc: $(top_srcdir)/src/tests/stub_debug.cc + cp $(top_srcdir)/src/tests/stub_debug.cc . + ++MemBuf.cc: $(top_srcdir)/src/MemBuf.cc ++ cp $(top_srcdir)/src/MemBuf.cc $@ ++ + time.cc: $(top_srcdir)/src/time.cc + cp $(top_srcdir)/src/time.cc . + ++stub_cbdata.cc: $(top_srcdir)/src/tests/stub_cbdata.cc ++ cp $(top_srcdir)/src/tests/stub_cbdata.cc $@ ++ ++stub_mem.cc: $(top_srcdir)/src/tests/stub_mem.cc ++ cp $(top_srcdir)/src/tests/stub_mem.cc $@ ++ + cachemgr.cgi.8: $(srcdir)/cachemgr.cgi.8.in Makefile + $(SUBSTITUTE) < $(srcdir)/cachemgr.cgi.8.in > $@ + diff --git a/SOURCES/squid-CVE-2016-4052.patch b/SOURCES/squid-CVE-2016-4052.patch new file mode 100644 index 0000000..16288eb --- /dev/null +++ b/SOURCES/squid-CVE-2016-4052.patch @@ -0,0 +1,83 @@ +diff --git a/src/esi/Assign.cc b/src/esi/Assign.cc +index eb68e84..08ce5a5 100644 +--- a/src/esi/Assign.cc ++++ b/src/esi/Assign.cc +@@ -41,6 +41,7 @@ + #include "esi/Assign.h" + #include "esi/Context.h" + #include "esi/Sequence.h" ++#include "HttpReply.h" + + ESIAssign::~ESIAssign() + { +diff --git a/src/esi/Esi.cc b/src/esi/Esi.cc +index 60c2344..ef236a9 100644 +--- a/src/esi/Esi.cc ++++ b/src/esi/Esi.cc +@@ -1007,7 +1006,7 @@ ESIContext::start(const char *el, const char **attr, size_t attrCount) + ESIElement::Pointer element; + int specifiedattcount = attrCount * 2; + char *position; +- assert (ellen < sizeof (localbuf)); /* prevent unexpected overruns. */ ++ Must(ellen < sizeof(localbuf)); /* prevent unexpected overruns. */ + + debugs(86, 5, "ESIContext::Start: element '" << el << "' with " << specifiedattcount << " tags"); + +@@ -1021,15 +1020,17 @@ ESIContext::start(const char *el, const char **attr, size_t attrCount) + /* Spit out elements we aren't interested in */ + localbuf[0] = '<'; + localbuf[1] = '\0'; +- assert (xstrncpy (&localbuf[1], el, sizeof(localbuf) - 2)); ++ xstrncpy(&localbuf[1], el, sizeof(localbuf) - 2); + position = localbuf + strlen (localbuf); + + for (i = 0; i < specifiedattcount && attr[i]; i += 2) { ++ Must(static_cast(position - localbuf) < sizeof(localbuf) - 1); + *position = ' '; + ++position; + /* TODO: handle thisNode gracefully */ +- assert (xstrncpy (position, attr[i], sizeof(localbuf) + (position - localbuf))); ++ xstrncpy(position, attr[i], sizeof(localbuf) - (position - localbuf)); + position += strlen (position); ++ Must(static_cast(position - localbuf) < sizeof(localbuf) - 2); + *position = '='; + ++position; + *position = '\"'; +@@ -1038,18 +1039,21 @@ ESIContext::start(const char *el, const char **attr, size_t attrCount) + char ch; + while ((ch = *chPtr++) != '\0') { + if (ch == '\"') { +- assert( xstrncpy(position, """, sizeof(localbuf) + (position-localbuf)) ); ++ Must(static_cast(position - localbuf) < sizeof(localbuf) - 6); ++ xstrncpy(position, """, sizeof(localbuf) - (position-localbuf)); + position += 6; + } else { ++ Must(static_cast(position - localbuf) < sizeof(localbuf) - 1); + *position = ch; + ++position; + } + } +- position += strlen (position); ++ Must(static_cast(position - localbuf) < sizeof(localbuf) - 1); + *position = '\"'; + ++position; + } + ++ Must(static_cast(position - localbuf) < sizeof(localbuf) - 2); + *position = '>'; + ++position; + *position = '\0'; +@@ -1135,11 +1139,11 @@ ESIContext::end(const char *el) + switch (ESIElement::IdentifyElement (el)) { + + case ESIElement::ESI_ELEMENT_NONE: +- assert (ellen < sizeof (localbuf)); /* prevent unexpected overruns. */ ++ Must(ellen < sizeof(localbuf) - 3); /* prevent unexpected overruns. */ + /* Add elements we aren't interested in */ + localbuf[0] = '<'; + localbuf[1] = '/'; +- assert (xstrncpy (&localbuf[2], el, sizeof(localbuf) - 3)); ++ xstrncpy(&localbuf[2], el, sizeof(localbuf) - 3); + position = localbuf + strlen (localbuf); + *position = '>'; + ++position; diff --git a/SOURCES/squid-CVE-2016-4553.patch b/SOURCES/squid-CVE-2016-4553.patch new file mode 100644 index 0000000..5242e63 --- /dev/null +++ b/SOURCES/squid-CVE-2016-4553.patch @@ -0,0 +1,49 @@ +------------------------------------------------------------ +revno: 13240 +revision-id: squid3@treenet.co.nz-20160509131121-4saxl1wj54n20lgf +parent: squid3@treenet.co.nz-20160508124218-6vhq4icj0fwu5aof +fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4501 +committer: Amos Jeffries +branch nick: 3.4 +timestamp: Tue 2016-05-10 01:11:21 +1200 +message: + Bug 4501: HTTP/1.1: normalize Host header +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20160509131121-4saxl1wj54n20lgf +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.4 +# testament_sha1: 017af15dae3e77239e9b2449dc2f2711707447d9 +# timestamp: 2016-05-09 13:13:52 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.4 +# base_revision_id: squid3@treenet.co.nz-20160508124218-\ +# 6vhq4icj0fwu5aof +# +# Begin patch +=== modified file 'src/client_side.cc' +--- src/client_side.cc 2015-08-28 13:23:34 +0000 ++++ src/client_side.cc 2016-05-09 13:11:21 +0000 +@@ -2740,6 +2740,23 @@ + goto finish; + } + ++ // when absolute-URI is provided Host header should be ignored. However ++ // some code still uses Host directly so normalize it. ++ // For now preserve the case where Host is completely absent. ++ if (request->header.has(HDR_HOST)) { ++ const char *host = request->header.getStr(HDR_HOST); ++ MemBuf authority; ++ authority.init(); ++ if (request->port != urlDefaultPort(request->protocol)) ++ authority.Printf("%s:%d", request->GetHost(), request->port); ++ else ++ authority.Printf("%s", request->GetHost()); ++ debugs(33, 5, "URL domain " << authority.buf << " overrides header Host: " << host); ++ // URL authority overrides Host header ++ request->header.delById(HDR_HOST); ++ request->header.putStr(HDR_HOST, authority.buf); ++ } ++ + request->clientConnectionManager = conn; + + request->flags.accelerated = http->flags.accel; + diff --git a/SOURCES/squid-CVE-2016-4554.patch b/SOURCES/squid-CVE-2016-4554.patch new file mode 100644 index 0000000..eb7d079 --- /dev/null +++ b/SOURCES/squid-CVE-2016-4554.patch @@ -0,0 +1,75 @@ +------------------------------------------------------------ +revno: 12698 +revision-id: squid3@treenet.co.nz-20160502034346-fhtahpk2lfblo2b1 +parent: squid3@treenet.co.nz-20160420111636-ft1dbd1iuktj8ift +committer: Amos Jeffries +branch nick: 3.3 +timestamp: Mon 2016-05-02 15:43:46 +1200 +message: + Require exact match in Host header name lookup +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20160502034346-fhtahpk2lfblo2b1 +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.3 +# testament_sha1: 6e285b375879d79c870bff268c99ef2597f1b725 +# timestamp: 2016-05-02 03:50:49 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.3 +# base_revision_id: squid3@treenet.co.nz-20160420111636-\ +# ft1dbd1iuktj8ift +# +# Begin patch +=== modified file 'src/mime_header.cc' +--- src/mime_header.cc 2012-08-29 12:36:10 +0000 ++++ src/mime_header.cc 2016-05-02 03:43:46 +0000 +@@ -62,9 +62,6 @@ + if (strcmp(p, "\r\n\r\n") == 0 || strcmp(p, "\n\n") == 0) + return NULL; + +- while (xisspace(*p)) +- ++p; +- + if (strncasecmp(p, name, namelen)) + continue; + + +------------------------------------------------------------ +revno: 12700 +revision-id: squid3@treenet.co.nz-20160508124255-w1vb9ifv5affhgai +parent: squid3@treenet.co.nz-20160506091321-tza59kjh2g6goob0 +fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4515 +committer: Amos Jeffries +branch nick: 3.3 +timestamp: Mon 2016-05-09 00:42:55 +1200 +message: + Bug 4515: regression after CVE-2016-4554 patch +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20160508124255-w1vb9ifv5affhgai +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.3 +# testament_sha1: 5ff66676035dc7841f6eb610dee8739dc015f29c +# timestamp: 2016-05-08 12:50:57 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.3 +# base_revision_id: squid3@treenet.co.nz-20160506091321-\ +# tza59kjh2g6goob0 +# +# Begin patch +=== modified file 'src/mime_header.cc' +--- src/mime_header.cc 2016-05-02 03:43:46 +0000 ++++ src/mime_header.cc 2016-05-08 12:42:55 +0000 +@@ -58,10 +58,13 @@ + + debugs(25, 5, "mime_get_header: looking for '" << name << "'"); + +- for (p = mime; *p; p += strcspn(p, "\n\r")) { +- if (strcmp(p, "\r\n\r\n") == 0 || strcmp(p, "\n\n") == 0) ++ for (p = mime; *p; p += strcspn(p, "\n")) { ++ if (strcmp(p, "\n\r\n") == 0 || strcmp(p, "\n\n") == 0) + return NULL; + ++ if (*p == '\n') ++ ++p; ++ + if (strncasecmp(p, name, namelen)) + continue; + + diff --git a/SOURCES/squid-CVE-2016-4555.patch b/SOURCES/squid-CVE-2016-4555.patch new file mode 100644 index 0000000..2757cb6 --- /dev/null +++ b/SOURCES/squid-CVE-2016-4555.patch @@ -0,0 +1,46 @@ +------------------------------------------------------------ +revno: 13237 +revision-id: squid3@treenet.co.nz-20160506091244-3td2be9qbzsajxg8 +parent: squid3@treenet.co.nz-20160502034253-axee4hqa4wuhlpkg +fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4455 +committer: Amos Jeffries +branch nick: 3.4 +timestamp: Fri 2016-05-06 21:12:44 +1200 +message: + Bug 4455: SegFault from ESIInclude::Start +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20160506091244-3td2be9qbzsajxg8 +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.4 +# testament_sha1: b9714bc153e5fd6e8fe505a6c1d8a54c88e03a77 +# timestamp: 2016-05-06 09:48:43 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.4 +# base_revision_id: squid3@treenet.co.nz-20160502034253-\ +# axee4hqa4wuhlpkg +# +# Begin patch +=== modified file 'src/client_side_request.cc' +--- src/client_side_request.cc 2014-04-09 16:53:05 +0000 ++++ src/client_side_request.cc 2016-05-06 09:12:44 +0000 +@@ -163,13 +163,15 @@ + start_time = current_time; + setConn(aConn); + al = new AccessLogEntry; +- al->tcpClient = clientConnection = aConn->clientConnection; ++ if (aConn) { ++ al->tcpClient = clientConnection = aConn->clientConnection; + #if USE_SSL +- if (aConn->clientConnection != NULL && aConn->clientConnection->isOpen()) { +- if (SSL *ssl = fd_table[aConn->clientConnection->fd].ssl) +- al->cache.sslClientCert.reset(SSL_get_peer_certificate(ssl)); ++ if (aConn->clientConnection != NULL && aConn->clientConnection->isOpen()) { ++ if (SSL *ssl = fd_table[aConn->clientConnection->fd].ssl) ++ al->cache.sslClientCert.reset(SSL_get_peer_certificate(ssl)); ++ } ++#endif + } +-#endif + dlinkAdd(this, &active, &ClientActiveRequests); + #if USE_ADAPTATION + request_satisfaction_mode = false; + diff --git a/SOURCES/squid-CVE-2016-4556.patch b/SOURCES/squid-CVE-2016-4556.patch new file mode 100644 index 0000000..da1006c --- /dev/null +++ b/SOURCES/squid-CVE-2016-4556.patch @@ -0,0 +1,99 @@ +------------------------------------------------------------ +revno: 13238 +revision-id: squid3@treenet.co.nz-20160506094614-zyjq1i8ym2gcvwbu +parent: squid3@treenet.co.nz-20160506091244-3td2be9qbzsajxg8 +committer: Amos Jeffries +branch nick: 3.4 +timestamp: Fri 2016-05-06 21:46:14 +1200 +message: + Fix SIGSEGV in ESIContext response handling + + HttpReply pointer was being unlocked without heving been locked. + Resulting in a double-free. Make it use RefCount instead of + manual locking to ensure locked/unlock is always symmetrical. +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20160506094614-zyjq1i8ym2gcvwbu +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.4 +# testament_sha1: 4ff01cd3aaffb8c9b20b8595d2ee0ccfcf434b3f +# timestamp: 2016-05-06 09:48:45 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.4 +# base_revision_id: squid3@treenet.co.nz-20160506091244-\ +# 3td2be9qbzsajxg8 +# +# Begin patch +=== modified file 'src/esi/Esi.cc' +--- src/esi/Esi.cc 2016-04-20 11:15:14 +0000 ++++ src/esi/Esi.cc 2016-05-06 09:46:14 +0000 +@@ -598,7 +598,7 @@ + + #endif + +- if (!(rep || (outbound.getRaw() && ++ if (!(rep != NULL || (outbound.getRaw() && + outbound->len && (outbound_offset <= outbound->len)))) { + debugs(86, 5, "ESIContext::send: Nothing to send."); + return 0; +@@ -643,18 +643,18 @@ + flags.clientwantsdata = 0; + debugs(86, 5, "ESIContext::send: this=" << this << " Client no longer wants data "); + /* Deal with re-entrancy */ +- HttpReply *temprep = rep; ++ HttpReply::Pointer temprep = rep; + rep = NULL; /* freed downstream */ + +- if (temprep && varState) +- varState->buildVary (temprep); ++ if (temprep != NULL && varState) ++ varState->buildVary(temprep.raw()); + + { + StoreIOBuffer tempBuffer; + tempBuffer.length = len; + tempBuffer.offset = pos - len; + tempBuffer.data = next->readBuffer.data; +- clientStreamCallback (thisNode, http, temprep, tempBuffer); ++ clientStreamCallback (thisNode, http, temprep.raw(), tempBuffer); + } + + if (len == 0) +@@ -1284,7 +1284,7 @@ + ++parserState.stackdepth; + } + +- if (rep && !parserState.inited()) ++ if (rep != NULL && !parserState.inited()) + parserState.init(this); + + /* we have data */ +@@ -1423,7 +1423,7 @@ + { + debugs(86, 5, HERE << "Freeing for this=" << this); + +- HTTPMSGUNLOCK(rep); ++ rep = NULL; // refcounted + + finishChildren (); + + +diff --git src/esi/Context.h src/esi/Context.h +index baae3fd..dcdcf05 100644 +--- src/esi/Context.h ++++ src/esi/Context.h +@@ -36,6 +36,7 @@ + #include "esi/Element.h" + #include "clientStream.h" + #include "err_type.h" ++#include "HttpReply.h" + #include "HttpStatusCode.h" + + class ESIVarState; +@@ -116,7 +117,7 @@ public: + err_type errorpage; /* if we error what page to use */ + http_status errorstatus; /* if we error, what code to return */ + char *errormessage; /* error to pass to error page */ +- HttpReply *rep; /* buffered until we pass data downstream */ ++ HttpReply::Pointer rep; /* buffered until we pass data downstream */ + ESISegment::Pointer buffered; /* unprocessed data - for whatever reason */ + ESISegment::Pointer incoming; + /* processed data we are waiting to send, or for diff --git a/SPECS/squid.spec b/SPECS/squid.spec index 0b16931..703bc6f 100644 --- a/SPECS/squid.spec +++ b/SPECS/squid.spec @@ -4,7 +4,7 @@ Name: squid Version: 3.3.8 -Release: 26%{?dist} +Release: 26%{?dist}.3 Summary: The Squid proxy caching server Epoch: 7 # See CREDITS for breakdown of non GPLv2+ code @@ -52,6 +52,12 @@ Patch213: squid-3.3.8-vary-headers.patch Patch214: squid-3.3.8-incorrect-cert.patch Patch215: squid-3.3.8-segfault-reboot.patch Patch216: squid-3.3.8-le-looping.patch +Patch217: squid-CVE-2016-4051.patch +Patch218: squid-CVE-2016-4052.patch +Patch219: squid-CVE-2016-4553.patch +Patch220: squid-CVE-2016-4554.patch +Patch221: squid-CVE-2016-4555.patch +Patch222: squid-CVE-2016-4556.patch Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Requires: bash >= 2.0 @@ -130,6 +136,12 @@ The squid-sysvinit contains SysV initscritps support. %patch214 -p1 -b .incorrect-cert %patch215 -p1 -b .segfault-reboot %patch216 -p0 -b .le-looping +%patch217 -p0 -b .CVE-2016-4051 +%patch218 -p1 -b .CVE-2016-4052 +%patch219 -p0 -b .CVE-2016-4053 +%patch220 -p0 -b .CVE-2016-4054 +%patch221 -p0 -b .CVE-2016-4055 +%patch222 -p0 -b .CVE-2016-4056 %build %ifarch sparcv9 sparc64 s390 s390x @@ -352,6 +364,20 @@ fi /sbin/chkconfig --add squid >/dev/null 2>&1 || : %changelog +* Mon May 09 2016 Luboš Uhliarik - 7:3.3.8-26.3 +- Related: #1330576 - CVE-2016-4553 squid: Cache poisoning issue in + HTTP Request handling +- Related: #1334491 - CVE-2016-4554 CVE-2016-4555 CVE-2016-4556 + squid: various flaws + +* Tue May 03 2016 Luboš Uhliarik - 7:3.3.8-26.2 +- Related: #1330576 - CVE-2016-4051 CVE-2016-4052 CVE-2016-4053 CVE-2016-4054 + squid: various flaws + +* Thu Apr 28 2016 Luboš Uhliarik - 7:3.3.8-26.1 +- Resolves: #1330576 - CVE-2016-4051 CVE-2016-4052 CVE-2016-4053 CVE-2016-4054 + squid: various flaws + * Wed Oct 14 2015 Luboš Uhliarik - 7:3.3.8-26 - Related: #1186768 - removing patch, because of missing tests and incorrent patch