[MERGE] compat round 3

From: Amos Jeffries <squid3_at_treenet.co.nz>
Date: Sun, 15 Feb 2009 18:09:35 +1300

Alex has managed to convince me that its okay to use just compat/*
So here is another round.

# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: squid3_at_treenet.co.nz-20090214131907-zc30qvv3kojokxc1
# target_branch: file:///src/squid/bzr/trunk/
# testament_sha1: c0bef01d44271587045d56b4863d23410d5d298c
# timestamp: 2009-02-15 15:33:30 +1300
# base_revision_id: squid3_at_treenet.co.nz-20090213112313-\
# oxpmtgy69n46b3fh
#
# Begin patch
=== modified file 'Makefile.am'
--- Makefile.am 2009-01-09 13:12:24 +0000
+++ Makefile.am 2009-02-14 13:18:34 +0000
@@ -2,8 +2,8 @@
 #
 
 AUTOMAKE_OPTIONS = dist-bzip2 subdir-objects 1.5 foreign
-DIST_SUBDIRS = lib snmplib scripts src icons errors contrib doc helpers test-suite tools
-SUBDIRS = lib @makesnmplib@ scripts src/ip src icons errors doc helpers test-suite tools
+DIST_SUBDIRS = compat lib snmplib scripts src icons errors contrib doc helpers test-suite tools
+SUBDIRS = compat lib @makesnmplib@ scripts src/ip src icons errors doc helpers test-suite tools
 
 DISTCLEANFILES = include/stamp-h include/stamp-h[0-9]*
 DEFAULT_PINGER = $(libexecdir)/`echo pinger | sed '$(transform);s/$$/$(EXEEXT)/'`

=== added directory 'compat'
=== renamed file 'lib/GNUregex.c' => 'compat/GnuRegex.c'
--- lib/GNUregex.c 2009-01-21 03:47:47 +0000
+++ compat/GnuRegex.c 2009-01-21 08:13:42 +0000
@@ -34,6 +34,8 @@
 
 #include "config.h"
 
+#if USE_GNUREGEX /* only if squid needs it. Usually not */
+
 #if !HAVE_ALLOCA
 #define REGEX_MALLOC 1
 #endif
@@ -104,7 +106,7 @@
 
 
 /* Get the interface, including the syntax bits. */
-#include "GNUregex.h"
+#include "GnuRegex.h"
 
 /* Compile a fastmap for the compiled pattern in BUFFER; used to
  * accelerate searches. Return 0 if successful and -2 if was an
@@ -2362,10 +2364,14 @@
  * the pattern buffer.
  *
  * Returns 0 if we succeed, -2 if an internal error. */
-
+#ifdef STDC_HEADERS
+int
+re_compile_fastmap(struct re_pattern_buffer *bufp)
+#else
 int
 re_compile_fastmap(bufp)
 struct re_pattern_buffer *bufp;
+#endif
 {
     int j, k;
     fail_stack_type fail_stack;
@@ -4401,6 +4407,7 @@
         free(preg->translate);
     preg->translate = NULL;
 }
+#endif /* USE_GNUREGEX */
 
 /*
  * Local variables:

=== renamed file 'include/GNUregex.h' => 'compat/GnuRegex.h'
--- include/GNUregex.h 2009-01-21 03:47:47 +0000
+++ compat/GnuRegex.h 2009-01-21 08:13:42 +0000
@@ -1,10 +1,31 @@
 /*
  * $Id$
  */
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
 #ifndef SQUID_REGEXP_LIBRARY_H
 #define SQUID_REGEXP_LIBRARY_H
 
-#include "config.h"
+#if !USE_GNUREGEX /* try the system one by default */
+
+/* POSIX says that <sys/types.h> must be included (by the caller) before
+ * <regex.h>. */
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_REGEX_H
+#include <regex.h>
+#endif
+
+
+#else /* USE_GNUREGEX */
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
 
 /* Definitions for data structures and routines for the regular
  * expression library, version 0.12.
@@ -405,6 +426,11 @@
               size_t errbuf_size));
 extern void regfree _RE_ARGS((regex_t * preg));
 
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* USE_GNUREGEX */
 #endif /* SQUID_REGEXP_LIBRARY_H */
 
 /*

=== added file 'compat/Makefile.am'
--- compat/Makefile.am 1970-01-01 00:00:00 +0000
+++ compat/Makefile.am 2009-02-14 13:18:34 +0000
@@ -0,0 +1,65 @@
+#
+# Makefile for the Squid Portability Library
+#
+
+# Housekeeping, shared by all Squid Makefiles.
+# TODO: make this set by configure?
+AM_CFLAGS = @SQUID_CFLAGS@
+AM_CXXFLAGS = @SQUID_CXXFLAGS@
+DEFS = @DEFS@
+CLEANFILES =
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/src \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/lib \
+ @SQUID_CPPUNIT_INC@
+
+$(OBJS): $(top_srcdir)/include/version.h $(top_srcdir)/include/autoconf.h
+
+# Ideally this would be 100% inline functions and macro wrappers.
+
+# Port Specific Configurations
+
+noinst_LTLIBRARIES = libcompat.la
+
+libcompat_la_SOURCES = \
+ compat.h \
+ osdetect.h \
+ compat_shared.h \
+ fdsetsize.h \
+ gnuregex.h \
+ stdvarargs.h \
+ valgrind.h \
+ \
+ os/aix.h \
+ os/freebsd.h \
+ os/hpux.h \
+ os/linux.h \
+ os/mswin.h \
+ os/next.h \
+ os/openbsd.h \
+ os/qnx.h \
+ os/sgi.h \
+ os/solaris.h \
+ os/sunos.h \
+ os/windows.h \
+ \
+ compat.cc \
+ GnuRegex.c
+
+
+check_PROGRAMS= testHeaders
+TESTS= $(check_PROGRAMS)
+
+## Special Universal .h dependency test script
+## aborts if error encountered
+testHeaders: $(top_srcdir)/compat/*.h $(top_srcdir)/compat/os/*.h
+ $(SHELL) $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "$(top_srcdir)/compat/" || exit 1
+ $(SHELL) $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "$(top_srcdir)/compat/os/" || exit 1
+
+## No such file...
+testHeaders.c:
+ touch testHeaders.c
+CLEANFILES += testHeaders.c

=== added file 'compat/assert.h'
--- compat/assert.h 1970-01-01 00:00:00 +0000
+++ compat/assert.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,56 @@
+/*
+ * $Id$
+ *
+ * AUTHOR: Duane Wessels
+ *
+ * SQUID Web Proxy Cache http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ * Squid is the result of efforts by numerous individuals from
+ * the Internet community; see the CONTRIBUTORS file for full
+ * details. Many organizations have provided support for Squid's
+ * development; see the SPONSORS file for full details. Squid is
+ * Copyrighted (C) 2001 by the Regents of the University of
+ * California; see the COPYRIGHT file for full details. Squid
+ * incorporates software developed and/or copyrighted by other
+ * sources; see the CREDITS file for full details.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_ASSERT_H
+#define SQUID_ASSERT_H
+
+#if defined(NODEBUG)
+#define assert(EX) ((void)0)
+#elif STDC_HEADERS
+#define assert(EX) ((EX)?((void)0):xassert( # EX , __FILE__, __LINE__))
+#else
+#define assert(EX) ((EX)?((void)0):xassert("EX", __FILE__, __LINE__))
+#endif
+
+#ifdef __cplusplus
+extern "C" void
+#else
+extern void
+#endif
+xassert(const char *, const char *, int);
+
+#endif /* SQUID_ASSERT_H */

=== added file 'compat/compat.cc'
=== added file 'compat/compat.h'
--- compat/compat.h 1970-01-01 00:00:00 +0000
+++ compat/compat.h 2009-02-14 13:18:34 +0000
@@ -0,0 +1,95 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef _SQUID_COMPAT_H
+#define _SQUID_COMPAT_H
+
+/*
+ * From discussions it was chosen to push compat code as far down as possible.
+ * That means we can have a seperate compat for most
+ * compatability and portability hacks and resolutions.
+ *
+ * This file is meant to collate all those hacks files together and
+ * provide a simple include for them in the core squid headers
+ * (presently squid.h and config.h)
+ *
+ * It should not be included directly in any of the squid sources.
+ * If your code requires any symbols from here you should be importing
+ * config.h/squid.h at the top line of your .cc or .h file.
+ */
+
+
+/******************************************************/
+/* Define the _SQUID_TYPE_ based on a guess of the OS */
+/* NP: this MUST come first within compat.h */
+/******************************************************/
+#include "compat/osdetect.h"
+
+
+/*****************************************************/
+/* FDSETSIZE is messy and needs to be done before */
+/* sys/types.h are defined. */
+/*****************************************************/
+#include "compat/fdsetsize.h"
+
+
+/*****************************************************/
+/* Global type re-definitions */
+/* this also takes care of the basic system includes */
+/*****************************************************/
+
+/** On linux this must be defined to get PRId64 and friends */
+#define __STDC_FORMAT_MACROS
+
+#include "squid_types.h"
+
+/*****************************************************/
+/* per-OS hacks. One file per OS. */
+/* OS-macro wrapping should be done inside the OS .h */
+/*****************************************************/
+
+#include "compat/os/aix.h"
+#include "compat/os/dragonfly.h"
+#include "compat/os/freebsd.h"
+#include "compat/os/hpux.h"
+#include "compat/os/linux.h"
+#include "compat/os/mswin.h"
+#include "compat/os/next.h"
+#include "compat/os/openbsd.h"
+#include "compat/os/os2.h"
+#include "compat/os/qnx.h"
+#include "compat/os/sgi.h"
+#include "compat/os/solaris.h"
+#include "compat/os/sunos.h"
+#include "compat/os/windows.h"
+
+
+/*****************************************************/
+/* portabilities shared between all platforms and */
+/* components as found to be needed */
+/*****************************************************/
+
+#include "compat/compat_shared.h"
+#include "compat/stdvarargs.h"
+#include "compat/assert.h"
+
+/*****************************************************/
+/* component-specific portabilities */
+/*****************************************************/
+
+/* Valgrind API macros changed between two versions squid supports */
+#include "compat/valgrind.h"
+
+/* Endian functions are usualy handled by the OS but not always. */
+#include "squid_endian.h"
+
+/**
+ * A Regular Expression library is bundled with Squid.
+ * Default is to use a system provided one, but the bundle
+ * may be used instead with explicit configuration.
+ */
+#include "compat/GnuRegex.h"
+
+
+#endif /* _SQUID_COMPAT_H */

=== added file 'compat/compat_shared.h'
--- compat/compat_shared.h 1970-01-01 00:00:00 +0000
+++ compat/compat_shared.h 2009-01-21 08:05:22 +0000
@@ -0,0 +1,211 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef _SQUID_COMPAT_SHARED_H
+#define _SQUID_COMPAT_SHARED_H
+
+/*
+ * This file contains all the compatibility and portability hacks
+ * Which are general-case and shared between all OS and support programs.
+ *
+ * If an OS-specific hack is needed there are per-OS files for that in
+ * the os/ sub-directory here.
+ *
+ * These hacks should be platform and location agnostic.
+ * A quick look-over of the code already here should give you an idea
+ * of the requirements for wrapping your hack for safe portability.
+ */
+
+
+/*
+ * sys/resource.h and sys/time.h are apparently order-dependant.
+ */
+#if HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#if HAVE_SYS_RESOURCE_H
+#include <sys/resource.h> /* needs sys/time.h above it */
+#endif
+
+/*
+ * DIRENT functionality can apparently come from many places.
+ * I believe these should really be done by OS-specific compat
+ * files, but for now its left here.
+ */
+#if HAVE_DIRENT_H
+#include <dirent.h>
+#define NAMLEN(dirent) strlen((dirent)->d_name)
+
+#else /* if not HAVE_DIRENT_H */
+#define dirent direct
+#define NAMLEN(dirent) (dirent)->d_namlen
+#if HAVE_SYS_NDIR_H
+#include <sys/ndir.h>
+#endif /* HAVE_SYS_NDIR_H */
+#if HAVE_SYS_DIR_H
+#include <sys/dir.h>
+#endif /* HAVE_SYS_DIR_H */
+#if HAVE_NDIR_H
+#include <ndir.h>
+#endif /* HAVE_NDIR_H */
+#endif /* HAVE_DIRENT_H */
+
+
+/*
+ * Filedescriptor limits in the different select loops
+ *
+ * NP: FreeBSD 7 defines FD_SETSIZE as unsigned but Squid needs
+ * it to be signed to compare it with signed values.
+ * Linux and others including FreeBSD <7, define it as signed.
+ * If this causes any issues please contact squid-dev_at_squid-cache.org
+ */
+#if defined(USE_SELECT) || defined(USE_SELECT_WIN32)
+/* Limited by design */
+# define SQUID_MAXFD_LIMIT ((signed int)FD_SETSIZE)
+
+#elif defined(USE_POLL)
+/* Limited due to delay pools */
+# define SQUID_MAXFD_LIMIT ((signed int)FD_SETSIZE)
+
+#elif defined(USE_KQUEUE) || defined(USE_EPOLL)
+# define SQUID_FDSET_NOUSE 1
+
+#else
+# error Unknown select loop model!
+#endif
+
+
+
+#if !HAVE_STRUCT_RUSAGE
+/**
+ * If we don't have getrusage() then we create a fake structure
+ * with only the fields Squid cares about. This just makes the
+ * source code cleaner, so we don't need lots of #ifdefs in other
+ * places
+ */
+struct rusage
+{
+ struct timeval ru_stime;
+ struct timeval ru_utime;
+ int ru_maxrss;
+ int ru_majflt;
+};
+#endif /* !HAVE_STRUCT_RUSAGE */
+
+
+/* templates require C++ */
+#ifdef __cplusplus
+
+#ifndef min
+/**
+ * min() comparison may not always be provided.
+ * Squid bundles this template for when its needed.
+ * May be used on any type which provides operator '<'
+ */
+template<class A>
+inline A const &
+min(A const & lhs, A const & rhs)
+{
+ if (rhs < lhs)
+ return rhs;
+ return lhs;
+}
+#endif
+#define XMIN(x,y) (min (x,y))
+
+#ifndef max
+/**
+ * max() comparison may not always be provided.
+ * Squid bundles this template for when its needed.
+ * May be used on any type which provides operator '>'
+ */
+template<class A>
+inline A const &
+max(A const & lhs, A const & rhs)
+{
+ if (rhs > lhs)
+ return rhs;
+ return lhs;
+}
+#endif
+#define XMAX(a,b) (max (a,b))
+
+#endif /* __cplusplus */
+
+/**
+ * tempnam() not provided by all systems
+ * TODO: detect WHICH systems and move to their OS-specific compat files
+ */
+#if !HAVE_TEMPNAM
+#include "tempnam.h"
+#endif
+
+/**
+ * strsep() not provided by all systems
+ * TODO: detect WHICH systems and move to their OS-specific compat files
+ */
+#if !HAVE_STRSEP
+#include "strsep.h"
+#endif
+
+/**
+ * strtoll() not provided by all systems
+ * TODO: detect WHICH systems and move to their OS-specific compat files
+ */
+#if !HAVE_STRTOLL
+#include "strtoll.h"
+#endif
+
+/**
+ * Common shared definition of what whitespace consists of for string tests
+ */
+#define w_space " \t\n\r"
+
+/**
+ * initgroups() not provided by all systems
+ * TODO: detect WHICH systems and move to their OS-specific compat files
+ */
+#if !HAVE_INITGROUPS
+#include "initgroups.h"
+#endif
+
+
+/* REQUIRED for the below logics. If they move this needs to as well */
+#if HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#if defined(O_NONBLOCK)
+/**
+ * We used to assume O_NONBLOCK was broken on Solaris, but evidence
+ * now indicates that its fine on Solaris 8, and in fact required for
+ * properly detecting EOF on FIFOs. So now we assume that if
+ * its defined, it works correctly on all operating systems.
+ */
+#define SQUID_NONBLOCK O_NONBLOCK
+#else
+/** O_NDELAY is our fallback. */
+#define SQUID_NONBLOCK O_NDELAY
+#endif
+
+
+/**
+ * Signalling flags are apparently not always provided.
+ * TODO find out if these can be moved into specific OS portability files.
+ */
+#ifndef SA_RESTART
+#define SA_RESTART 0
+#endif
+#ifndef SA_NODEFER
+#define SA_NODEFER 0
+#endif
+#ifndef SA_RESETHAND
+#define SA_RESETHAND 0
+#endif
+#if SA_RESETHAND == 0 && defined(SA_ONESHOT)
+#undef SA_RESETHAND
+#define SA_RESETHAND SA_ONESHOT
+#endif
+
+
+#endif /* _SQUID_COMPAT_SHARED_H */

=== added file 'compat/fdsetsize.h'
--- compat/fdsetsize.h 1970-01-01 00:00:00 +0000
+++ compat/fdsetsize.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,90 @@
+#ifndef SQUID_FDSETSIZE_H
+#define SQUID_FDSETSIZE_H
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+/* FD_SETSIZE must be redefined before including sys/types.h */
+#if 0
+/* AYJ: would dearly like to use this to enforce include order
+ but at present some helpers don't follow the squid include methodology.
+ that will need fixing later.
+*/
+#ifdef _SYS_TYPES_H
+#error squid_fdsetsize.h for FDSETSIZE must be included before sys/types.h
+#error Make sure that squid.h or config.h is the first file included by your .cc
+#endif
+#endif /* 0 */
+/*
+ * On some systems, FD_SETSIZE is set to something lower than the
+ * actual number of files which can be opened. IRIX is one case,
+ * NetBSD is another. So here we increase FD_SETSIZE to our
+ * configure-discovered maximum *before* any system includes.
+ */
+#define CHANGE_FD_SETSIZE 1
+
+/*
+ * Cannot increase FD_SETSIZE on Linux, but we can increase __FD_SETSIZE
+ * with glibc 2.2 (or later? remains to be seen). We do this by including
+ * bits/types.h which defines __FD_SETSIZE first, then we redefine
+ * __FD_SETSIZE. Ofcourse a user program may NEVER include bits/whatever.h
+ * directly, so this is a dirty hack!
+ */
+#if defined(_SQUID_LINUX_)
+#undef CHANGE_FD_SETSIZE
+#define CHANGE_FD_SETSIZE 0
+#include <features.h>
+#if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
+#if SQUID_MAXFD > DEFAULT_FD_SETSIZE
+#include <bits/types.h>
+#undef __FD_SETSIZE
+#define __FD_SETSIZE SQUID_MAXFD
+#endif
+#endif
+#endif
+
+/*
+ * Cannot increase FD_SETSIZE on FreeBSD before 2.2.0, causes select(2)
+ * to return EINVAL.
+ * --Marian Durkovic <marian_at_svf.stuba.sk>
+ * --Peter Wemm <peter_at_spinner.DIALix.COM>
+ */
+#if defined(_SQUID_FREEBSD_)
+#include <osreldate.h>
+#if __FreeBSD_version < 220000
+#undef CHANGE_FD_SETSIZE
+#define CHANGE_FD_SETSIZE 0
+#endif
+#endif
+
+/*
+ * Trying to redefine CHANGE_FD_SETSIZE causes a slew of warnings
+ * on Mac OS X Server.
+ */
+#if defined(_SQUID_APPLE_)
+#undef CHANGE_FD_SETSIZE
+#define CHANGE_FD_SETSIZE 0
+#endif
+
+/* Increase FD_SETSIZE if SQUID_MAXFD is bigger */
+#if CHANGE_FD_SETSIZE && SQUID_MAXFD > DEFAULT_FD_SETSIZE
+#define FD_SETSIZE SQUID_MAXFD
+#endif
+
+
+/*
+ * Trap unintentional use of fd_set. Must not be used outside the
+ * select code as it only supports FD_SETSIZE number of filedescriptors
+ * and Squid may be running with a lot more..
+ * But only for code linked into Squid, not the helpers.. (unlinkd, pinger)
+ */
+#ifdef SQUID_FDSET_NOUSE
+# ifndef SQUID_HELPER
+# define fd_set ERROR_FD_SET_USED
+# endif
+#endif
+
+#endif /* SQUID_FDSETSIZE_H */

=== added directory 'compat/os'
=== added file 'compat/os/aix.h'
--- compat/os/aix.h 1970-01-01 00:00:00 +0000
+++ compat/os/aix.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,27 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_AIX_H
+#define SQUID_OS_AIX_H
+
+#ifdef _SQUID_AIX_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+
+/*
+ * Syslog facility on AIX requires some portability wrappers
+ */
+#ifdef HAVE_SYSLOG_H
+#define _XOPEN_EXTENDED_SOURCE
+#define _XOPEN_SOURCE_EXTENDED 1
+#endif
+
+
+#endif /* _SQUID_AIX_ */
+#endif /* SQUID_OS_AIX_H */

=== added file 'compat/os/dragonfly.h'
--- compat/os/dragonfly.h 1970-01-01 00:00:00 +0000
+++ compat/os/dragonfly.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,25 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_DRAGONFLY_H
+#define SQUID_OS_DRAGONFLY_H
+
+#ifdef _SQUID_DRAGONFLY_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+/*
+ * Don't allow inclusion of malloc.h
+ */
+#if defined(HAVE_MALLOC_H)
+#undef HAVE_MALLOC_H
+#endif
+
+
+#endif /* _SQUID_DRAGONFLY_ */
+#endif /* SQUID_OS_DRAGONFLY_H */

=== added file 'compat/os/freebsd.h'
--- compat/os/freebsd.h 1970-01-01 00:00:00 +0000
+++ compat/os/freebsd.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,31 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_FREEBSD_H
+#define SQUID_OS_FREEBSD_H
+
+#ifdef _SQUID_FREEBSD_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+
+#if USE_ASYNC_IO && defined(LINUXTHREADS)
+#define _SQUID_LINUX_THREADS_
+#endif
+
+/*
+ * Don't allow inclusion of malloc.h
+ */
+#if defined(HAVE_MALLOC_H)
+#undef HAVE_MALLOC_H
+#endif
+
+#define _etext etext
+
+#endif /* _SQUID_FREEBSD_ */
+#endif /* SQUID_OS_FREEBSD_H */

=== added file 'compat/os/hpux.h'
--- compat/os/hpux.h 1970-01-01 00:00:00 +0000
+++ compat/os/hpux.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,32 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_HPUX_H
+#define SQUID_OS_PHUX_H
+
+#ifdef _SQUID_HPUX_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+
+#if !defined(HAVE_GETPAGESIZE)
+#define HAVE_GETPAGESIZE
+#define getpagesize( ) sysconf(_SC_PAGE_SIZE)
+#endif
+
+/*
+ * getrusage(...) not available on some HPUX
+ */
+#if !HAVE_GETRUSAGE
+#define HAVE_GETRUSAGE 1
+#define getrusage(a, b) syscall(SYS_GETRUSAGE, a, b)
+#endif
+
+
+#endif /* _SQUID_HPUX_ */
+#endif /* SQUID_OS_HPUX_H */

=== added file 'compat/os/linux.h'
--- compat/os/linux.h 1970-01-01 00:00:00 +0000
+++ compat/os/linux.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,31 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_LINUX_H
+#define SQUID_OS_LINUX_H
+
+#ifdef _SQUID_LINUX_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+
+#if USE_ASYNC_IO
+#define _SQUID_LINUX_THREADS_
+#endif
+
+/*
+ * res_init() is just a macro re-definition of __res_init on Linux (Debian/Ubuntu)
+ */
+#if !defined(HAVE_RES_INIT) && defined(HAVE___RES_INIT) && !defined(res_init)
+#define res_init __res_init
+#define HAVE_RES_INIT HAVE___RES_INIT
+#endif
+
+
+#endif /* _SQUID_LINUX_ */
+#endif /* SQUID_OS_LINUX_H */

=== added file 'compat/os/mswin.h'
--- compat/os/mswin.h 1970-01-01 00:00:00 +0000
+++ compat/os/mswin.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,768 @@
+/*
+ * $Id$
+ *
+ * AUTHOR: Andrey Shorin <tolsty_at_tushino.com>
+ * AUTHOR: Guido Serassio <serassio_at_squid-cache.org>
+ *
+ * SQUID Web Proxy Cache http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ * Squid is the result of efforts by numerous individuals from
+ * the Internet community; see the CONTRIBUTORS file for full
+ * details. Many organizations have provided support for Squid's
+ * development; see the SPONSORS file for full details. Squid is
+ * Copyrighted (C) 2001 by the Regents of the University of
+ * California; see the COPYRIGHT file for full details. Squid
+ * incorporates software developed and/or copyrighted by other
+ * sources; see the CREDITS file for full details.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_MSWIN_H
+#define SQUID_OS_MSWIN_H
+
+#ifdef _SQUID_WIN32_
+
+#define ACL WindowsACL
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+#if _MSC_VER == 1400
+#define _CRT_SECURE_NO_DEPRECATE
+#pragma warning( disable : 4290 )
+#pragma warning( disable : 4996 )
+#endif
+#endif
+
+#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64
+# define __USE_FILE_OFFSET64 1
+#endif
+
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+
+typedef unsigned char uint8_t;
+typedef unsigned short uint16_t;
+typedef unsigned int uint32_t;
+typedef unsigned __int64 uint64_t;
+
+typedef long pid_t;
+
+#if defined __USE_FILE_OFFSET64
+typedef int64_t off_t;
+typedef uint64_t ino_t;
+
+#else
+typedef long off_t;
+typedef unsigned long ino_t;
+
+#endif
+
+#define INT64_MAX _I64_MAX
+#define INT64_MIN _I64_MIN
+
+#include "default_config_file.h"
+/* Some tricks for MS Compilers */
+#define __STDC__ 1
+#define THREADLOCAL __declspec(thread)
+
+#elif defined(__GNUC__) /* gcc environment */
+
+#define THREADLOCAL __attribute__((section(".tls")))
+
+#endif
+
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+#define alloca _alloca
+#endif
+#define chdir _chdir
+#define dup _dup
+#define dup2 _dup2
+#define fdopen _fdopen
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+#define fileno _fileno
+#define fstat _fstati64
+#endif
+#define ftruncate WIN32_ftruncate
+#define getcwd _getcwd
+#define getpid _getpid
+#define getrusage WIN32_getrusage
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+#define lseek _lseeki64
+#define memccpy _memccpy
+#define mkdir(p) _mkdir(p)
+#define mktemp _mktemp
+#endif
+#define pclose _pclose
+#define pipe WIN32_pipe
+#define popen _popen
+#define putenv _putenv
+#define setmode _setmode
+#define sleep(t) Sleep((t)*1000)
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+#define snprintf _snprintf
+#define stat _stati64
+#define strcasecmp _stricmp
+#define strdup _strdup
+#define strlwr _strlwr
+#define strncasecmp _strnicmp
+#define tempnam _tempnam
+#endif
+#define truncate WIN32_truncate
+#define umask _umask
+#define unlink _unlink
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+#define vsnprintf _vsnprintf
+#endif
+
+#define O_RDONLY _O_RDONLY
+#define O_WRONLY _O_WRONLY
+#define O_RDWR _O_RDWR
+#define O_APPEND _O_APPEND
+
+#define O_CREAT _O_CREAT
+#define O_TRUNC _O_TRUNC
+#define O_EXCL _O_EXCL
+
+#define O_TEXT _O_TEXT
+#define O_BINARY _O_BINARY
+#define O_RAW _O_BINARY
+#define O_TEMPORARY _O_TEMPORARY
+#define O_NOINHERIT _O_NOINHERIT
+#define O_SEQUENTIAL _O_SEQUENTIAL
+#define O_RANDOM _O_RANDOM
+#define O_NDELAY 0
+
+#define S_IFMT _S_IFMT
+#define S_IFDIR _S_IFDIR
+#define S_IFCHR _S_IFCHR
+#define S_IFREG _S_IFREG
+#define S_IREAD _S_IREAD
+#define S_IWRITE _S_IWRITE
+#define S_IEXEC _S_IEXEC
+
+#define S_IRWXO 007
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+#define S_ISDIR(m) (((m) & _S_IFDIR) == _S_IFDIR)
+#endif
+
+#define SIGHUP 1 /* hangup */
+#define SIGKILL 9 /* kill (cannot be caught or ignored) */
+#define SIGBUS 10 /* bus error */
+#define SIGPIPE 13 /* write on a pipe with no one to read it */
+#define SIGCHLD 20 /* to parent on child stop or exit */
+#define SIGUSR1 30 /* user defined signal 1 */
+#define SIGUSR2 31 /* user defined signal 2 */
+
+typedef unsigned short int ushort;
+typedef int uid_t;
+typedef int gid_t;
+
+struct passwd {
+ char *pw_name; /* user name */
+ char *pw_passwd; /* user password */
+ uid_t pw_uid; /* user id */
+ gid_t pw_gid; /* group id */
+ char *pw_gecos; /* real name */
+ char *pw_dir; /* home directory */
+ char *pw_shell; /* shell program */
+};
+
+struct group {
+ char *gr_name; /* group name */
+ char *gr_passwd; /* group password */
+ gid_t gr_gid; /* group id */
+ char **gr_mem; /* group members */
+};
+
+struct statfs {
+ long f_type; /* type of filesystem (see below) */
+ long f_bsize; /* optimal transfer block size */
+ long f_blocks; /* total data blocks in file system */
+ long f_bfree; /* free blocks in fs */
+ long f_bavail; /* free blocks avail to non-superuser */
+ long f_files; /* total file nodes in file system */
+ long f_ffree; /* free file nodes in fs */
+ long f_fsid; /* file system id */
+ long f_namelen; /* maximum length of filenames */
+ long f_spare[6]; /* spare for later */
+};
+
+#ifndef HAVE_GETTIMEOFDAY
+struct timezone {
+ int tz_minuteswest; /* minutes west of Greenwich */
+ int tz_dsttime; /* type of dst correction */
+};
+#endif
+
+#define CHANGE_FD_SETSIZE 1
+#if CHANGE_FD_SETSIZE && SQUID_MAXFD > DEFAULT_FD_SETSIZE
+#define FD_SETSIZE SQUID_MAXFD
+#endif
+
+#include <stddef.h>
+#include <process.h>
+#include <errno.h>
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+#include <winsock2.h>
+#endif
+#include <ws2tcpip.h>
+#if (EAI_NODATA == EAI_NONAME)
+#undef EAI_NODATA
+#define EAI_NODATA WSANO_DATA
+#endif
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+/* Hack to suppress compiler warnings on FD_SET() & FD_CLR() */
+#pragma warning (push)
+#pragma warning (disable:4142)
+#endif
+/* prevent inclusion of wingdi.h */
+#define NOGDI
+#include <ws2spi.h>
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+#pragma warning (pop)
+#endif
+#include <io.h>
+#include <stdlib.h>
+
+typedef char * caddr_t;
+
+#undef FD_CLOSE
+#undef FD_OPEN
+#undef FD_READ
+#undef FD_WRITE
+#define EISCONN WSAEISCONN
+#define EINPROGRESS WSAEINPROGRESS
+#define EWOULDBLOCK WSAEWOULDBLOCK
+#define EALREADY WSAEALREADY
+#define ETIMEDOUT WSAETIMEDOUT
+#define ECONNREFUSED WSAECONNREFUSED
+#define ECONNRESET WSAECONNRESET
+#define ENOTCONN WSAENOTCONN
+#define ERESTART WSATRY_AGAIN
+#define EAFNOSUPPORT WSAEAFNOSUPPORT
+
+#undef h_errno
+#define h_errno errno /* we'll set it ourselves */
+
+#undef FD_CLR
+#define FD_CLR(fd, set) do { \
+ u_int __i; \
+ SOCKET __sock = _get_osfhandle(fd); \
+ for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count ; __i++) { \
+ if (((fd_set FAR *)(set))->fd_array[__i] == __sock) { \
+ while (__i < ((fd_set FAR *)(set))->fd_count-1) { \
+ ((fd_set FAR *)(set))->fd_array[__i] = \
+ ((fd_set FAR *)(set))->fd_array[__i+1]; \
+ __i++; \
+ } \
+ ((fd_set FAR *)(set))->fd_count--; \
+ break; \
+ } \
+ } \
+} while(0)
+
+#undef FD_SET
+#define FD_SET(fd, set) do { \
+ u_int __i; \
+ SOCKET __sock = _get_osfhandle(fd); \
+ for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count; __i++) { \
+ if (((fd_set FAR *)(set))->fd_array[__i] == (__sock)) { \
+ break; \
+ } \
+ } \
+ if (__i == ((fd_set FAR *)(set))->fd_count) { \
+ if (((fd_set FAR *)(set))->fd_count < FD_SETSIZE) { \
+ ((fd_set FAR *)(set))->fd_array[__i] = (__sock); \
+ ((fd_set FAR *)(set))->fd_count++; \
+ } \
+ } \
+} while(0)
+
+#undef FD_ISSET
+#define FD_ISSET(fd, set) Win32__WSAFDIsSet(fd, (fd_set FAR *)(set))
+
+/* internal to Microsoft CRTLIB */
+typedef struct {
+ long osfhnd; /* underlying OS file HANDLE */
+ char osfile; /* attributes of file (e.g., open in text mode?) */
+ char pipech; /* one char buffer for handles opened on pipes */
+#ifdef _MT
+ int lockinitflag;
+ CRITICAL_SECTION lock;
+#endif /* _MT */
+} ioinfo;
+#define IOINFO_L2E 5
+#define IOINFO_ARRAY_ELTS (1 << IOINFO_L2E)
+#define _pioinfo(i) ( __pioinfo[(i) >> IOINFO_L2E] + ((i) & (IOINFO_ARRAY_ELTS - 1)) )
+#define _osfile(i) ( _pioinfo(i)->osfile )
+#define _osfhnd(i) ( _pioinfo(i)->osfhnd )
+#define FOPEN 0x01 /* file handle open */
+
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+
+SQUIDCEXTERN _CRTIMP ioinfo * __pioinfo[];
+SQUIDCEXTERN int __cdecl _free_osfhnd(int);
+
+#elif defined(__MINGW32__) /* MinGW environment */
+
+__MINGW_IMPORT ioinfo * __pioinfo[];
+SQUIDCEXTERN int _free_osfhnd(int);
+
+#endif
+
+SQUIDCEXTERN THREADLOCAL int ws32_result;
+
+#define strerror(e) WIN32_strerror(e)
+
+#ifdef __cplusplus
+
+inline
+int close(int fd)
+{
+ char l_so_type[sizeof(int)];
+ int l_so_type_siz = sizeof(l_so_type);
+ SOCKET sock = _get_osfhandle(fd);
+
+ if (::getsockopt(sock, SOL_SOCKET, SO_TYPE, l_so_type, &l_so_type_siz) == 0) {
+ int result = 0;
+ if (closesocket(sock) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ result = 1;
+ }
+ _free_osfhnd(fd);
+ _osfile(fd) = 0;
+ return result;
+ } else
+ return _close(fd);
+}
+
+#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
+
+#ifndef _S_IREAD
+#define _S_IREAD 0x0100
+#endif
+
+#ifndef _S_IWRITE
+#define _S_IWRITE 0x0080
+#endif
+
+inline
+int open(const char *filename, int oflag, int pmode = 0)
+{
+ return _open(filename, oflag, pmode & (_S_IREAD | _S_IWRITE));
+}
+#endif
+
+inline
+int read(int fd, void * buf, size_t siz)
+{
+ char l_so_type[sizeof(int)];
+ int l_so_type_siz = sizeof(l_so_type);
+ SOCKET sock = _get_osfhandle(fd);
+
+ if (::getsockopt(sock, SOL_SOCKET, SO_TYPE, l_so_type, &l_so_type_siz) == 0)
+ return ::recv(sock, (char FAR *) buf, (int)siz, 0);
+ else
+ return _read(fd, buf, (unsigned int)siz);
+}
+
+inline
+int write(int fd, const void * buf, size_t siz)
+{
+ char l_so_type[sizeof(int)];
+ int l_so_type_siz = sizeof(l_so_type);
+ SOCKET sock = _get_osfhandle(fd);
+
+ if (::getsockopt(sock, SOL_SOCKET, SO_TYPE, l_so_type, &l_so_type_siz) == 0)
+ return ::send(sock, (char FAR *) buf, siz, 0);
+ else
+ return _write(fd, buf, siz);
+}
+
+inline
+char *index(const char *s, int c)
+{
+ return (char *)strchr(s,c);
+}
+
+/** \cond AUTODOCS-IGNORE */
+namespace Squid
+{
+/** \endcond */
+
+inline
+int accept(int s, struct sockaddr * a, size_t * l)
+{
+ SOCKET result;
+ if ((result = ::accept(_get_osfhandle(s), a, (int *)l)) == INVALID_SOCKET) {
+ if (WSAEMFILE == (errno = WSAGetLastError()))
+ errno = EMFILE;
+ return -1;
+ } else
+ return _open_osfhandle(result, 0);
+}
+
+inline
+int bind(int s, struct sockaddr * n, int l)
+{
+ if (::bind(_get_osfhandle(s),n,l) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
+}
+
+inline
+int connect(int s, const struct sockaddr * n, int l)
+{
+ if (::connect(_get_osfhandle(s),n,l) == SOCKET_ERROR) {
+ if (WSAEMFILE == (errno = WSAGetLastError()))
+ errno = EMFILE;
+ return -1;
+ } else
+ return 0;
+}
+
+inline
+struct hostent * gethostbyname (const char *n) {
+ HOSTENT FAR * result;
+ if ((result = ::gethostbyname(n)) == NULL)
+ errno = WSAGetLastError();
+ return result;
+}
+#define gethostbyname(n) Squid::gethostbyname(n)
+
+inline
+SERVENT FAR* getservbyname (const char * n, const char * p)
+{
+ SERVENT FAR * result;
+ if ((result = ::getservbyname(n, p)) == NULL)
+ errno = WSAGetLastError();
+ return result;
+}
+#define getservbyname(n,p) Squid::getservbyname(n,p)
+
+inline
+HOSTENT FAR * gethostbyaddr(const char * a, int l, int t)
+{
+ HOSTENT FAR * result;
+ if ((result = ::gethostbyaddr(a, l, t)) == NULL)
+ errno = WSAGetLastError();
+ return result;
+}
+#define gethostbyaddr(a,l,t) Squid::gethostbyaddr(a,l,t)
+
+inline
+int getsockname(int s, struct sockaddr * n, size_t * l)
+{
+ if ((::getsockname(_get_osfhandle(s), n, (int *)l)) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
+}
+
+inline
+int gethostname(char * n, size_t l)
+{
+ if ((::gethostname(n, l)) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
+}
+#define gethostname(n,l) Squid::gethostname(n,l)
+
+inline
+int getsockopt(int s, int l, int o, void * v, int * n)
+{
+ Sleep(1);
+ if ((::getsockopt(_get_osfhandle(s), l, o,(char *) v, n)) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
+}
+
+/* Simple ioctl() emulation */
+inline
+int ioctl(int s, int c, void * a)
+{
+ if ((::ioctlsocket(_get_osfhandle(s), c, (u_long FAR *)a)) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
+}
+
+inline
+int ioctlsocket(int s, long c, u_long FAR * a)
+{
+ if ((::ioctlsocket(_get_osfhandle(s), c, a)) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
+}
+
+inline
+int listen(int s, int b)
+{
+ if (::listen(_get_osfhandle(s), b) == SOCKET_ERROR) {
+ if (WSAEMFILE == (errno = WSAGetLastError()))
+ errno = EMFILE;
+ return -1;
+ } else
+ return 0;
+}
+#define listen(s,b) Squid::listen(s,b)
+
+inline
+int recv(int s, void * b, size_t l, int f)
+{
+ int result;
+ if ((result = ::recv(_get_osfhandle(s), (char *)b, l, f)) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return result;
+}
+
+inline
+int recvfrom(int s, void * b, size_t l, int f, struct sockaddr * fr, size_t * fl)
+{
+ int result;
+ if ((result = ::recvfrom(_get_osfhandle(s), (char *)b, l, f, fr, (int *)fl)) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return result;
+}
+
+inline
+int select(int n, fd_set * r, fd_set * w, fd_set * e, struct timeval * t)
+{
+ int result;
+ if ((result = ::select(n,r,w,e,t)) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return result;
+}
+#define select(n,r,w,e,t) Squid::select(n,r,w,e,t)
+
+inline
+int send(int s, const void * b, size_t l, int f)
+{
+ int result;
+ if ((result = ::send(_get_osfhandle(s), (char *)b, l, f)) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return result;
+}
+
+inline
+int sendto(int s, const void * b, size_t l, int f, const struct sockaddr * t, int tl)
+{
+ int result;
+ if ((result = ::sendto(_get_osfhandle(s), (char *)b, l, f, t, tl)) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return result;
+}
+
+inline
+int setsockopt(SOCKET s, int l, int o, const char * v, int n)
+{
+ SOCKET socket;
+
+ socket = ((s == INVALID_SOCKET) ? s : (SOCKET)_get_osfhandle((int)s));
+
+ if (::setsockopt(socket, l, o, v, n) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
+}
+#define setsockopt(s,l,o,v,n) Squid::setsockopt(s,l,o,v,n)
+
+inline
+int shutdown(int s, int h)
+{
+ if (::shutdown(_get_osfhandle(s),h) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
+}
+
+inline
+int socket(int f, int t, int p)
+{
+ SOCKET result;
+ if ((result = ::socket(f, t, p)) == INVALID_SOCKET) {
+ if (WSAEMFILE == (errno = WSAGetLastError()))
+ errno = EMFILE;
+ return -1;
+ } else
+ return _open_osfhandle(result, 0);
+}
+#define socket(f,t,p) Squid::socket(f,t,p)
+
+inline
+int WSAAsyncSelect(int s, HWND h, unsigned int w, long e)
+{
+ if (::WSAAsyncSelect(_get_osfhandle(s), h, w, e) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
+}
+
+#undef WSADuplicateSocket
+inline
+int WSADuplicateSocket(int s, DWORD n, LPWSAPROTOCOL_INFO l)
+{
+#ifdef UNICODE
+ if (::WSADuplicateSocketW(_get_osfhandle(s), n, l) == SOCKET_ERROR) {
+#else
+ if (::WSADuplicateSocketA(_get_osfhandle(s), n, l) == SOCKET_ERROR) {
+#endif
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
+}
+
+#undef WSASocket
+inline
+int WSASocket(int a, int t, int p, LPWSAPROTOCOL_INFO i, GROUP g, DWORD f) {
+ SOCKET result;
+#ifdef UNICODE
+ if ((result = ::WSASocketW(a, t, p, i, g, f)) == INVALID_SOCKET) {
+#else
+ if ((result = ::WSASocketA(a, t, p, i, g, f)) == INVALID_SOCKET) {
+#endif
+ if (WSAEMFILE == (errno = WSAGetLastError()))
+ errno = EMFILE;
+ return -1;
+ } else
+ return _open_osfhandle(result, 0);
+}
+
+} /* namespace Squid */
+
+#else /* #ifdef __cplusplus */
+#define connect(s,n,l) \
+ (SOCKET_ERROR == connect(_get_osfhandle(s),n,l) ? \
+ (WSAEMFILE == (errno = WSAGetLastError()) ? errno = EMFILE : -1, -1) : 0)
+#define gethostbyname(n) \
+ (NULL == ((HOSTENT FAR*)(ws32_result = (int)gethostbyname(n))) ? \
+ (errno = WSAGetLastError()), (HOSTENT FAR*)NULL : (HOSTENT FAR*)ws32_result)
+#define gethostname(n,l) \
+ (SOCKET_ERROR == gethostname(n,l) ? \
+ (errno = WSAGetLastError()), -1 : 0)
+#define recv(s,b,l,f) \
+ (SOCKET_ERROR == (ws32_result = recv(_get_osfhandle(s),b,l,f)) ? \
+ (errno = WSAGetLastError()), -1 : ws32_result)
+#define sendto(s,b,l,f,t,tl) \
+ (SOCKET_ERROR == (ws32_result = sendto(_get_osfhandle(s),b,l,f,t,tl)) ? \
+ (errno = WSAGetLastError()), -1 : ws32_result)
+#define select(n,r,w,e,t) \
+ (SOCKET_ERROR == (ws32_result = select(n,r,w,e,t)) ? \
+ (errno = WSAGetLastError()), -1 : ws32_result)
+#define socket(f,t,p) \
+ (INVALID_SOCKET == ((SOCKET)(ws32_result = (int)socket(f,t,p))) ? \
+ ((WSAEMFILE == (errno = WSAGetLastError()) ? errno = EMFILE : -1), -1) : \
+ (SOCKET)_open_osfhandle(ws32_result,0))
+#define write _write /* Needed in util.c */
+#define open _open /* Needed in win32lib.c */
+#endif /* #ifdef __cplusplus */
+
+#define RUSAGE_SELF 0 /* calling process */
+#define RUSAGE_CHILDREN -1 /* terminated child processes */
+
+struct rusage {
+ struct timeval ru_utime; /* user time used */
+ struct timeval ru_stime; /* system time used */
+ long ru_maxrss; /* integral max resident set size */
+ long ru_ixrss; /* integral shared text memory size */
+ long ru_idrss; /* integral unshared data size */
+ long ru_isrss; /* integral unshared stack size */
+ long ru_minflt; /* page reclaims */
+ long ru_majflt; /* page faults */
+ long ru_nswap; /* swaps */
+ long ru_inblock; /* block input operations */
+ long ru_oublock; /* block output operations */
+ long ru_msgsnd; /* messages sent */
+ long ru_msgrcv; /* messages received */
+ long ru_nsignals; /* signals received */
+ long ru_nvcsw; /* voluntary context switches */
+ long ru_nivcsw; /* involuntary context switches */
+};
+
+#undef ACL
+
+
+/** \cond AUTODOCS-IGNORE */
+using namespace Squid;
+/** \endcond */
+
+
+/* win32lib.c */
+SQUIDCEXTERN int chroot (const char *);
+SQUIDCEXTERN int ftruncate(int, off_t);
+#ifndef HAVE_GETTIMEOFDAY
+SQUIDCEXTERN int gettimeofday(struct timeval * ,void *);
+#endif
+SQUIDCEXTERN int kill(pid_t, int);
+SQUIDCEXTERN int statfs(const char *, struct statfs *);
+SQUIDCEXTERN int truncate(const char *, off_t);
+SQUIDCEXTERN const char * wsastrerror(int);
+SQUIDCEXTERN struct passwd *getpwnam(char *);
+SQUIDCEXTERN struct group *getgrnam(char *);
+SQUIDCEXTERN uid_t geteuid(void);
+SQUIDCEXTERN uid_t getuid(void);
+SQUIDCEXTERN int setuid(uid_t);
+SQUIDCEXTERN int seteuid(uid_t);
+SQUIDCEXTERN gid_t getgid(void);
+SQUIDCEXTERN gid_t getegid(void);
+SQUIDCEXTERN int setgid(gid_t);
+SQUIDCEXTERN int setegid(gid_t);
+SQUIDCEXTERN const char *WIN32_strerror(int);
+SQUIDCEXTERN void WIN32_maperror(unsigned long);
+
+// Moved in from squid.h and other duplicates.
+// BUT was already included up the top there with a wrapped conditional.
+// that may need checking....
+//#include <io.h>
+
+/* Windows may lack getpagesize() prototype */
+// Moved in from squid.h
+// NP: there may be a header include needed before this to prevent duplicate-definitions
+// if that is true it will need including here as part of the hack.
+// if not then this comment can be dropped.
+#if !defined(getpagesize)
+SQUIDCEXTERN size_t getpagesize(void);
+#endif
+
+
+#endif /* _SQUID_WIN32_ */
+#endif /* SQUID_OS_MSWIN_H */

=== added file 'compat/os/next.h'
--- compat/os/next.h 1970-01-01 00:00:00 +0000
+++ compat/os/next.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,53 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_NEXT_H
+#define SQUID_OS_NEXT_H
+
+#ifdef _SQUID_NEXT_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+
+/*
+ * Don't allow inclusion of malloc.h
+ */
+#if defined(HAVE_MALLOC_H)
+#undef HAVE_MALLOC_H
+#endif
+
+/*
+ * S_ISDIR() may not be defined on Next
+ */
+#if HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#if !defined(S_ISDIR)
+#define S_ISDIR(mode) (((mode) & (_S_IFMT)) == (_S_IFDIR))
+#endif
+
+/*
+ * WAS: lots of special wrappers labeled only 'protect NEXTSTEP'
+ * I'm assuming its an incomplete definition problem on that OS.
+ * Or a missing safety wrapper by the looks of the _SQUID_NETDB_H_
+ *
+ * Anyway, this file is included before all general non-type headers.
+ * doing the include here for Next and undefining HAVE_NETDB_H will
+ * save us from including it again in general.
+ */
+// All the hacks included this first without safety wrapping, then netdb.h.
+#include <netinet/in_systm.h>
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#undef HAVE_NETDB_H
+#define HAVE_NETDB_H 0
+
+
+#endif /* _SQUID_NEXT_ */
+#endif /* SQUID_OS_NEXT_H */

=== added file 'compat/os/openbsd.h'
--- compat/os/openbsd.h 1970-01-01 00:00:00 +0000
+++ compat/os/openbsd.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,25 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_OPENBSD_H
+#define SQUID_OS_OPENBSD_H
+
+#ifdef _SQUID_OPENBSD_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+/*
+ * Don't allow inclusion of malloc.h
+ */
+#ifdef HAVE_MALLOC_H
+#undef HAVE_MALLOC_H
+#endif
+
+
+#endif /* _SQUID_OPENBSD_ */
+#endif /* SQUID_OS_OPENBSD_H */

=== added file 'compat/os/os2.h'
--- compat/os/os2.h 1970-01-01 00:00:00 +0000
+++ compat/os/os2.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,24 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_OS2_H
+#define SQUID_OS_OS2_H
+
+#ifdef _SQUID_OS2_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+/*
+* FIXME: the os2 port of bash seems to have problems checking
+* the return codes of programs in if statements. These options
+* need to be overridden.
+*/
+
+
+#endif /* _SQUID_OS2_ */
+#endif /* SQUID_OS_OS2_H */

=== added file 'compat/os/qnx.h'
--- compat/os/qnx.h 1970-01-01 00:00:00 +0000
+++ compat/os/qnx.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,23 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_QNX_H
+#define SQUID_OS_QNX_H
+
+#ifdef _SQUID_QNX_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+/*
+ * Requires unix.h header file
+ */
+#include <unix.h>
+
+
+#endif /* _SQUID_QNX_ */
+#endif /* SQUID_OS_QNX_H */

=== added file 'compat/os/sgi.h'
--- compat/os/sgi.h 1970-01-01 00:00:00 +0000
+++ compat/os/sgi.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,26 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_SGI_H
+#define SQUID_OS_SGI_H
+
+#if _SQUID_SGI_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+#if !defined(_SVR4_SOURCE)
+#define _SVR4_SOURCE /* for tempnam(3) */
+#endif
+
+#if USE_ASYNC_IO
+#define _ABI_SOURCE
+#endif /* USE_ASYNC_IO */
+
+
+#endif /* _SQUID_SGI_ */
+#endif /* SQUID_OS_SGI_H */

=== added file 'compat/os/solaris.h'
--- compat/os/solaris.h 1970-01-01 00:00:00 +0000
+++ compat/os/solaris.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,49 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_SOLARIS_H
+#define SQUID_OS_SOLARIS_H
+
+#ifdef _SQUID_SOLARIS_
+
+/*
+ * On Solaris 9 x86, gcc may includes a "fixed" set of old system
+ * include files that is incompatible with the updated Solaris
+ * header files.
+ */
+#if defined(i386) || defined(__i386)
+#ifndef HAVE_PAD128_T
+typedef union {
+ long double _q;
+ int32_t _l[4];
+} pad128_t;
+#endif
+#ifndef HAVE_UPAD128_T
+typedef union {
+ long double _q;
+ uint32_t _l[4];
+} upad128_t;
+#endif
+#endif
+
+/**
+ * prototypes for system function missing from system includes
+ */
+SQUIDCEXTERN int getrusage(int, struct rusage *);
+
+
+/**
+ * prototypes for system function missing from system includes
+ * on some Solaris systems.
+ */
+SQUIDCEXTERN int getpagesize(void);
+#if !defined(_XPG4_2) && !(defined(__EXTENSIONS__) || \
+ (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)))
+SQUIDCEXTERN int gethostname(char *, int);
+#endif
+
+
+
+#endif /* _SQUID_SOLARIS_ */
+#endif /* SQUID_OS_SOALRIS_H */

=== added file 'compat/os/sunos.h'
--- compat/os/sunos.h 1970-01-01 00:00:00 +0000
+++ compat/os/sunos.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,25 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_SUNOS_H
+#define SQUID_OS_SUNOS_H
+
+#ifdef _SQUID_SUNOS_
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+
+/*
+ * We assume O_NONBLOCK is broken, or does not exist, on SunOS.
+ */
+#define SQUID_NONBLOCK O_NDELAY
+
+
+
+#endif /* _SQUID_SUNOS_ */
+#endif /* SQUID_OS_SUNOS_H */

=== added file 'compat/os/windows.h'
--- compat/os/windows.h 1970-01-01 00:00:00 +0000
+++ compat/os/windows.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,53 @@
+/*
+ * $Id$
+ *
+ * AUTHOR: Guido Serassio <serassio_at_squid-cache.org>
+ *
+ * SQUID Web Proxy Cache http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ * Squid is the result of efforts by numerous individuals from
+ * the Internet community; see the CONTRIBUTORS file for full
+ * details. Many organizations have provided support for Squid's
+ * development; see the SPONSORS file for full details. Squid is
+ * Copyrighted (C) 2001 by the Regents of the University of
+ * California; see the COPYRIGHT file for full details. Squid
+ * incorporates software developed and/or copyrighted by other
+ * sources; see the CREDITS file for full details.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_OS_WINDOWS_H
+#define SQUID_OS_WINDOWS_H
+
+#ifdef _SQUID_WIN32_
+
+#ifndef ACL
+#define ACL WindowsACL
+#define _MSWIN_ACL_WAS_NOT_DEFINED 1
+#endif
+#include <windows.h>
+#if _MSWIN_ACL_WAS_NOT_DEFINED
+#undef ACL
+#undef _MSWIN_ACL_WAS_NOT_DEFINED
+#endif
+
+#endif /* _SQUID_WIN32_ */
+#endif /* SQUID_OS_WINDOWS_H */

=== added file 'compat/osdetect.h'
--- compat/osdetect.h 1970-01-01 00:00:00 +0000
+++ compat/osdetect.h 2009-01-21 09:46:54 +0000
@@ -0,0 +1,87 @@
+#ifndef SQUID_COMPAT_OSDETECT_H
+#define SQUID_COMPAT_OSDETECT_H
+
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+/*
+ * Define the _SQUID_TYPE_ based on a guess of the OS.
+ *
+ * NP: This MUST come first in compat.h with no OS-specific includes
+ * or other definitions within this if-else structure.
+ */
+
+#if defined(__sun__) || defined(__sun) /* SUN */
+# define _SQUID_SUN_
+# if defined(__SVR4) /* SOLARIS */
+# define _SQUID_SOLARIS_
+# else /* SUNOS */
+# define _SQUID_SUNOS_
+# endif
+
+#elif defined(__hpux) /* HP-UX - SysV-like? */
+#define _SQUID_HPUX_
+#define _SQUID_SYSV_
+
+#elif defined(__osf__) /* OSF/1 */
+#define _SQUID_OSF_
+
+#elif defined(__ultrix) /* Ultrix */
+#define _SQUID_ULTRIX_
+
+#elif defined(_AIX) /* AIX */
+#define _SQUID_AIX_
+
+#elif defined(__linux__) /* Linux */
+#define _SQUID_LINUX_
+
+#elif defined(__FreeBSD__) /* FreeBSD */
+#define _SQUID_FREEBSD_
+
+#elif defined(__sgi__) || defined(sgi) || defined(__sgi) /* SGI */
+#define _SQUID_SGI_
+
+#elif defined(__NeXT__)
+#define _SQUID_NEXT_
+
+#elif defined(__bsdi__)
+#define _SQUID_BSDI_ /* BSD/OS */
+
+#elif defined(__NetBSD__)
+#define _SQUID_NETBSD_
+
+#elif defined(__OpenBSD__)
+#define _SQUID_OPENBSD_
+
+#elif defined(__DragonFly__)
+#define _SQUID_DRAGONFLY_
+
+#elif defined(__CYGWIN32__) || defined(__CYGWIN__)
+#define _SQUID_CYGWIN_
+#define _SQUID_WIN32_
+
+#elif defined(WIN32) || defined(WINNT) || defined(__WIN32__) || defined(__WIN32)
+#define _SQUID_MSWIN_
+#define _SQUID_WIN32_
+
+#elif defined(__APPLE__)
+#define _SQUID_APPLE_
+
+#elif defined(sony_news) && defined(__svr4)
+#define _SQUID_NEWSOS6_
+
+#elif defined(__QNX__)
+#define _SQUID_QNX_
+
+#elif defined(__EMX__) || defined(OS2) || defined(__OS2__)
+#define _SQUID_OS2_
+
+#endif /* OS automatic detection */
+
+
+
+#endif /* SQUID_COMPAT_OSDETECT_H */

=== added file 'compat/stdvarargs.h'
--- compat/stdvarargs.h 1970-01-01 00:00:00 +0000
+++ compat/stdvarargs.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,38 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef _SQUID_STDVARARGS_H
+#define _SQUID_STDVARARGS_H
+
+/*
+ * va_* variables come from various places on different platforms.
+ * We provide a clean set of wrappers for the variosu operations
+ * Depending on what is available and needed.
+ */
+#if defined(HAVE_STDARG_H)
+#include <stdarg.h>
+#define HAVE_STDARGS /* let's hope that works everywhere (mj) */
+#define VA_LOCAL_DECL va_list ap;
+#define VA_START(f) va_start(ap, f)
+#define VA_SHIFT(v,t) ; /* no-op for ANSI */
+#define VA_END va_end(ap)
+#else
+#if defined(HAVE_VARARGS_H)
+#include <varargs.h>
+#undef HAVE_STDARGS
+#define VA_LOCAL_DECL va_list ap;
+#define VA_START(f) va_start(ap) /* f is ignored! */
+#define VA_SHIFT(v,t) v = va_arg(ap,t)
+#define VA_END va_end(ap)
+#else
+#error XX **NO VARARGS ** XX
+#endif
+#endif
+
+/* Make sure syslog goes after stdarg/varargs */
+#ifdef HAVE_SYSLOG_H
+#include <syslog.h>
+#endif
+
+#endif /* _SQUID_STDVARARGS_H */

=== added file 'compat/valgrind.h'
--- compat/valgrind.h 1970-01-01 00:00:00 +0000
+++ compat/valgrind.h 2009-02-07 13:59:04 +0000
@@ -0,0 +1,41 @@
+#ifndef SQUID_CONFIG_H
+#include "config.h"
+#endif
+
+#ifndef SQUID_VALGRIND_H
+#define SQUID_VALGRIND_H
+
+/****************************************************************************
+ *--------------------------------------------------------------------------*
+ * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
+ *--------------------------------------------------------------------------*
+ ****************************************************************************/
+
+/*
+ * valgrind debug support
+ */
+#if WITH_VALGRIND
+# include <valgrind/memcheck.h>
+/* A little glue for older valgrind version prior to 3.2.0 */
+# ifndef VALGRIND_MAKE_MEM_NOACCESS
+# define VALGRIND_MAKE_MEM_NOACCESS VALGRIND_MAKE_NOACCESS
+# define VALGRIND_MAKE_MEM_UNDEFINED VALGRIND_MAKE_WRITABLE
+# define VALGRIND_MAKE_MEM_DEFINED VALGRIND_MAKE_READABLE
+# define VALGRIND_CHECK_MEM_IS_ADDRESSABLE VALGRIND_CHECK_WRITABLE
+# else
+# undef VALGRIND_MAKE_NOACCESS
+# undef VALGRIND_MAKE_WRITABLE
+# undef VALGRIND_MAKE_READABLE
+# endif
+#else
+# define VALGRIND_MAKE_MEM_NOACCESS(a,b) (0)
+# define VALGRIND_MAKE_MEM_UNDEFINED(a,b) (0)
+# define VALGRIND_MAKE_MEM_DEFINED(a,b) (0)
+# define VALGRIND_CHECK_MEM_IS_ADDRESSABLE(a,b) (0)
+# define VALGRIND_CHECK_MEM_IS_DEFINED(a,b) (0)
+# define VALGRIND_MALLOCLIKE_BLOCK(a,b,c,d)
+# define VALGRIND_FREELIKE_BLOCK(a,b)
+# define RUNNING_ON_VALGRIND 0
+#endif /* WITH_VALGRIND */
+
+#endif /* SQUID_CONFIG_H */

=== modified file 'configure.in'
--- configure.in 2009-02-13 11:23:13 +0000
+++ configure.in 2009-02-14 13:19:07 +0000
@@ -87,7 +87,7 @@
 
 CRYPTLIB=''
 REGEXLIB='' # -lregex
-LIBREGEX='' # libregex.a
+# LIBREGEX='' # libregex.a
 
 dnl find out the exe extension for this platform. If it's not empty, use it for CGI's as well.
 AC_EXEEXT
@@ -284,15 +284,6 @@
     fi
 fi
 
-AC_ARG_ENABLE(gnuregex,
- AC_HELP_STRING([--enable-gnuregex],
- [Compile GNUregex. Unless you have reason to use
- this option, you should not enable it.
- This library file is usually only required on Windows and
- very old Unix boxes which do not have their own regex
- library built in.]),
-[USE_GNUREGEX=$enableval])
-
 SquidInline="yes"
 
 AC_ARG_ENABLE(optimizations,
@@ -3203,6 +3194,14 @@
     fi
 fi
 
+AC_ARG_ENABLE(gnuregex,
+ AC_HELP_STRING([--enable-gnuregex],
+ [Compile GNUregex. Unless you have reason to use
+ this option, you should not enable it.
+ This library file is usually only required on Windows and
+ very old Unix boxes which do not have their own regex
+ library built in.]),
+[USE_GNUREGEX=$enableval])
 if test -z "$USE_GNUREGEX" ; then
     case "$host" in
     *-sun-solaris2.[[0-4]])
@@ -3226,12 +3225,12 @@
 fi
 AC_MSG_RESULT($USE_GNUREGEX)
 if test "$USE_GNUREGEX" = "yes"; then
- REGEXLIB="-lregex"
- LIBREGEX="libregex.a"
+ # override system regex with ours. Not good. But what was asked for.
+ REGEXLIB=""
         AC_DEFINE(USE_GNUREGEX,1,[Define if we should use GNU regex])
 fi
 AC_SUBST(REGEXLIB)
-AC_SUBST(LIBREGEX)
+#AC_SUBST(LIBREGEX)
 
 dnl Not cached since people are likely to tune this
 AC_MSG_CHECKING(Default FD_SETSIZE value)
@@ -3792,6 +3791,7 @@
 
 AC_CONFIG_FILES([\
         Makefile \
+ compat/Makefile \
         lib/Makefile \
         scripts/Makefile \
         scripts/RunCache \

=== modified file 'helpers/basic_auth/LDAP/Makefile.am'
--- helpers/basic_auth/LDAP/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/basic_auth/LDAP/Makefile.am 2009-02-14 13:18:34 +0000
@@ -11,5 +11,13 @@
 EXTRA_DIST = squid_ldap_auth.8
 squid_ldap_auth_SOURCES = squid_ldap_auth.c
 
-LDADD = -L$(top_builddir)/lib -lmiscutil $(LIB_LDAP) $(LIB_LBER) $(XTRA_LIBS)
-INCLUDES = -I$(top_srcdir)/include
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(LIB_LDAP) \
+ $(LIB_LBER) \
+ $(XTRA_LIBS)
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include

=== modified file 'helpers/basic_auth/MSNT/Makefile.am'
--- helpers/basic_auth/MSNT/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/basic_auth/MSNT/Makefile.am 2009-02-14 13:18:34 +0000
@@ -27,9 +27,12 @@
 sysconf_DATA = \
         msntauth.conf.default
 
-LDADD = -L$(top_builddir)/lib -lmiscutil $(XTRA_LIBS)
+LDADD = -L$(top_builddir)/lib -lmiscutil $(XTRA_LIBS) -L$(top_builddir)/compat/libcompat.la
 
-INCLUDES = -I$(top_srcdir)/include
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/src
 
 confload.o: confload.c
         $(COMPILE) -DSYSCONFDIR=\"$(sysconfdir)\" -c $(srcdir)/confload.c -o $@
@@ -41,5 +44,3 @@
                 echo "$(INSTALL_DATA) $(srcdir)/msntauth.conf.default $(DESTDIR)$(sysconfdir)/msntauth.conf" ; \
                 $(INSTALL_DATA) $(srcdir)/msntauth.conf.default $(DESTDIR)$(sysconfdir)/msntauth.conf ; \
         fi
-
-

=== modified file 'helpers/basic_auth/NCSA/Makefile.am'
--- helpers/basic_auth/NCSA/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/basic_auth/NCSA/Makefile.am 2009-02-14 13:18:34 +0000
@@ -10,5 +10,14 @@
 ncsa_auth_SOURCES = ncsa_auth.c crypt_md5.c crypt_md5.h
 man_MANS = ncsa_auth.8
 EXTRA_DIST = ncsa_auth.8
-LDADD = -L$(top_builddir)/lib -lmiscutil $(CRYPTLIB) $(XTRA_LIBS) $(SSLLIB)
-INCLUDES = -I$(top_srcdir)/include
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(CRYPTLIB) \
+ $(XTRA_LIBS) \
+ $(SSLLIB)
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/src

=== modified file 'helpers/basic_auth/PAM/Makefile.am'
--- helpers/basic_auth/PAM/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/basic_auth/PAM/Makefile.am 2009-02-14 13:18:34 +0000
@@ -6,9 +6,16 @@
 # Uncomment and customize the following to suit your needs:
 #
 
-INCLUDES = -I$(top_srcdir)/include
-
 man_MANS = pam_auth.8
 EXTRA_DIST = pam_auth.8
 libexec_PROGRAMS = pam_auth
-LDADD = -L$(top_builddir)/lib -lmiscutil -lpam $(XTRA_LIBS)
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ -lpam \
+ $(XTRA_LIBS)

=== modified file 'helpers/basic_auth/SASL/Makefile.am'
--- helpers/basic_auth/SASL/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/basic_auth/SASL/Makefile.am 2009-02-14 13:18:34 +0000
@@ -6,8 +6,16 @@
 # Uncomment and customize the following to suit your needs:
 #
 
-INCLUDES = -I$(top_srcdir)/include
-
 libexec_PROGRAMS = sasl_auth
-LDADD = -L$(top_builddir)/lib -lmiscutil $(LIBSASL) $(XTRA_LIBS)
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(LIBSASL) \
+ $(XTRA_LIBS)
+
 EXTRA_DIST = squid_sasl_auth squid_sasl_auth.conf

=== modified file 'helpers/basic_auth/SMB/Makefile.am'
--- helpers/basic_auth/SMB/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/basic_auth/SMB/Makefile.am 2009-02-14 13:18:34 +0000
@@ -22,6 +22,11 @@
 smb_auth_CFLAGS = -DSAMBAPREFIX=\"$(SAMBAPREFIX)\" -DHELPERSCRIPT=\"$(SMB_AUTH_HELPER_PATH)\"
 EXTRA_DIST = smb_auth.sh COPYING-2.0
 
-LDADD = -L$(top_builddir)/lib -lmiscutil $(XTRA_LIBS)
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include
 
-INCLUDES = -I$(top_srcdir)/include
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(XTRA_LIBS)

=== modified file 'helpers/basic_auth/YP/Makefile.am'
--- helpers/basic_auth/YP/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/basic_auth/YP/Makefile.am 2009-02-14 13:18:34 +0000
@@ -7,5 +7,13 @@
 
 libexec_PROGRAMS = yp_auth
 yp_auth_SOURCES = yp_auth.c nis_support.h nis_support.c
-LDADD = -L$(top_builddir)/lib -lmiscutil $(CRYPTLIB) $(XTRA_LIBS)
-INCLUDES = -I$(top_srcdir)/include
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(CRYPTLIB) \
+ $(XTRA_LIBS)

=== modified file 'helpers/basic_auth/getpwnam/Makefile.am'
--- helpers/basic_auth/getpwnam/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/basic_auth/getpwnam/Makefile.am 2009-02-14 13:18:34 +0000
@@ -11,5 +11,13 @@
 
 getpwname_auth_SOURCES = getpwnam_auth.c
 
-INCLUDES = -I$(top_srcdir)/include
-LDADD = -L$(top_builddir)/lib -lmiscutil $(CRYPTLIB) $(XTRA_LIBS)
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/src
+
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(CRYPTLIB) \
+ $(XTRA_LIBS)

=== modified file 'helpers/basic_auth/mswin_sspi/Makefile.am'
--- helpers/basic_auth/mswin_sspi/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/basic_auth/mswin_sspi/Makefile.am 2009-02-14 13:18:34 +0000
@@ -11,9 +11,15 @@
 
 mswin_auth_SOURCES = mswin_auth.c valid.c valid.h
 
-LDADD = -L$(top_builddir)/lib -lnetapi32 -ladvapi32 -lsspwin32 \
- -lmiscutil $(XTRA_LIBS)
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ -lnetapi32 -ladvapi32 -lsspwin32 \
+ $(XTRA_LIBS)
 
-INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)/src
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
 
 EXTRA_DIST = readme.txt

=== modified file 'helpers/basic_auth/squid_radius_auth/Makefile.am'
--- helpers/basic_auth/squid_radius_auth/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/basic_auth/squid_radius_auth/Makefile.am 2009-02-14 13:18:34 +0000
@@ -15,5 +15,12 @@
                         radius-util.c \
                         radius-util.h
 
-LDADD = -L$(top_builddir)/lib -lmiscutil $(SSLLIB) $(XTRA_LIBS)
-INCLUDES = -I$(top_srcdir)/include
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(SSLLIB) \
+ $(XTRA_LIBS)

=== modified file 'helpers/digest_auth/eDirectory/Makefile.am'
--- helpers/digest_auth/eDirectory/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/digest_auth/eDirectory/Makefile.am 2009-02-14 13:18:34 +0000
@@ -13,7 +13,18 @@
         ldap_backend.h \
         edir_ldapext.c \
         edir_ldapext.h
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include \
- -I$(top_srcdir)/src/
-
-LDADD = -L$(top_builddir)/lib -lmiscutil $(LIB_LDAP) $(LIB_LBER) $(CRYPTLIB) $(XTRA_LIBS) $(SSLLIB)
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(LIB_LDAP) \
+ $(LIB_LBER) \
+ $(CRYPTLIB) \
+ $(XTRA_LIBS) \
+ $(SSLLIB)

=== modified file 'helpers/digest_auth/ldap/Makefile.am'
--- helpers/digest_auth/ldap/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/digest_auth/ldap/Makefile.am 2009-02-14 13:18:34 +0000
@@ -11,7 +11,18 @@
         digest_common.h \
         ldap_backend.c \
         ldap_backend.h
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include \
- -I$(top_srcdir)/src/
-
-LDADD = -L$(top_builddir)/lib -lmiscutil $(LIB_LDAP) $(LIB_LBER) $(CRYPTLIB) $(XTRA_LIBS) $(SSLLIB)
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(LIB_LDAP) \
+ $(LIB_LBER) \
+ $(CRYPTLIB) \
+ $(XTRA_LIBS) \
+ $(SSLLIB)

=== modified file 'helpers/digest_auth/password/Makefile.am'
--- helpers/digest_auth/password/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/digest_auth/password/Makefile.am 2009-02-14 13:18:34 +0000
@@ -11,7 +11,16 @@
         digest_common.h \
         text_backend.c \
         text_backend.h
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include \
- -I$(top_srcdir)/src/
-
-LDADD = -L$(top_builddir)/lib -lmiscutil $(CRYPTLIB) $(XTRA_LIBS) $(SSLLIB)
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(CRYPTLIB) \
+ $(XTRA_LIBS) \
+ $(SSLLIB)

=== modified file 'helpers/external_acl/ip_user/Makefile.am'
--- helpers/external_acl/ip_user/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/external_acl/ip_user/Makefile.am 2009-02-14 13:18:34 +0000
@@ -15,7 +15,6 @@
         main.c \
         match.c
 
-
 EXTRA_DIST = \
         example.conf \
         example-deny_all_but.conf \
@@ -24,5 +23,13 @@
 
 # sysconf_DATA =
 
-LDADD = -L$(top_builddir)/lib -lmiscutil @XTRA_LIBS@
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ @XTRA_LIBS@

=== modified file 'helpers/external_acl/ldap_group/Makefile.am'
--- helpers/external_acl/ldap_group/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/external_acl/ldap_group/Makefile.am 2009-02-14 13:18:34 +0000
@@ -11,5 +11,15 @@
 EXTRA_DIST = squid_ldap_group.8
 squid_ldap_group_SOURCES = squid_ldap_group.c
 
-LDADD = -L$(top_builddir)/lib -lmiscutil $(LIB_LDAP) $(LIB_LBER) @XTRA_LIBS@
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(LIB_LDAP) \
+ $(LIB_LBER) \
+ @XTRA_LIBS@

=== modified file 'helpers/external_acl/mswin_ad_group/Makefile.am'
--- helpers/external_acl/mswin_ad_group/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/external_acl/mswin_ad_group/Makefile.am 2009-02-14 13:18:34 +0000
@@ -11,9 +11,16 @@
 
 mswin_check_ad_group_SOURCES = mswin_check_ad_group.c mswin_check_ad_group.h
 
-INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/src
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include
 
-LDADD = -L$(top_builddir)/lib -lmiscutil -lnetapi32 -ladvapi32 \
- -lntdll $(XTRA_LIBS)
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ -lnetapi32 \
+ -ladvapi32 \
+ -lntdll \
+ $(XTRA_LIBS)
 
 EXTRA_DIST = readme.txt

=== modified file 'helpers/external_acl/mswin_lm_group/Makefile.am'
--- helpers/external_acl/mswin_lm_group/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/external_acl/mswin_lm_group/Makefile.am 2009-02-14 13:18:34 +0000
@@ -11,9 +11,17 @@
 
 mswin_check_lm_group_SOURCES = win32_check_group.c win32_check_group.h
 
-INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)/src
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
 
-LDADD = -L$(top_builddir)/lib -lmiscutil -lnetapi32 -ladvapi32 \
- -lntdll $(XTRA_LIBS)
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ -lnetapi32 \
+ -ladvapi32 \
+ -lntdll \
+ $(XTRA_LIBS)
 
 EXTRA_DIST = readme.txt

=== modified file 'helpers/external_acl/session/Makefile.am'
--- helpers/external_acl/session/Makefile.am 2009-01-26 13:37:30 +0000
+++ helpers/external_acl/session/Makefile.am 2009-02-14 13:18:34 +0000
@@ -11,6 +11,12 @@
 EXTRA_DIST = squid_session.8
 squid_session_SOURCES = squid_session.c
 
-LDADD = @LIB_DB@
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
 
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ @LIB_DB@

=== modified file 'helpers/external_acl/unix_group/Makefile.am'
--- helpers/external_acl/unix_group/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/external_acl/unix_group/Makefile.am 2009-02-14 13:18:34 +0000
@@ -11,5 +11,13 @@
 EXTRA_DIST = squid_unix_group.8
 squid_unix_group_SOURCES = check_group.c
 
-LDADD = -L$(top_builddir)/lib -lmiscutil @XTRA_LIBS@
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ @XTRA_LIBS@

=== modified file 'helpers/ntlm_auth/fakeauth/Makefile.am'
--- helpers/ntlm_auth/fakeauth/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/ntlm_auth/fakeauth/Makefile.am 2009-02-14 13:18:34 +0000
@@ -8,6 +8,15 @@
 
 libexec_PROGRAMS = fakeauth_auth
 fakeauth_auth_SOURCES = fakeauth_auth.c ntlm.h
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include \
- -I$(top_srcdir)/src/
-LDADD = -L$(top_builddir)/lib -lmiscutil $(CRYPTLIB) $(XTRA_LIBS)
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
+
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(CRYPTLIB) \
+ $(XTRA_LIBS)

=== modified file 'helpers/ntlm_auth/mswin_sspi/Makefile.am'
--- helpers/ntlm_auth/mswin_sspi/Makefile.am 2009-01-21 03:47:47 +0000
+++ helpers/ntlm_auth/mswin_sspi/Makefile.am 2009-02-14 13:18:34 +0000
@@ -8,9 +8,18 @@
 
 mswin_ntlm_auth_SOURCES = libntlmssp.c ntlm_auth.c ntlm.h
 
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)/src
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
 
-LDADD = -L$(top_builddir)/lib -lntlmauth -lsspwin32 -lnetapi32 \
- -ladvapi32 -lmiscutil $(XTRA_LIBS)
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil -lntlmauth \
+ -lsspwin32 \
+ -lnetapi32 \
+ -ladvapi32 \
+ $(XTRA_LIBS)
 
 EXTRA_DIST = readme.txt

=== modified file 'helpers/ntlm_auth/smb_lm/Makefile.am'
--- helpers/ntlm_auth/smb_lm/Makefile.am 2008-10-26 14:49:41 +0000
+++ helpers/ntlm_auth/smb_lm/Makefile.am 2009-02-14 13:18:34 +0000
@@ -6,7 +6,18 @@
 
 libexec_PROGRAMS = ntlm_smb_lm_auth
 ntlm_smb_lm_auth_SOURCES = libntlmssp.c ntlm_smb_lm_auth.c ntlm_smb_lm_auth.h
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include \
- -I$(top_srcdir)/src/ -I$(srcdir)/smbval
-LDADD = smbval/libsmbvalid.a -L$(top_builddir)/lib -lntlmauth \
- -lmiscutil $(CRYPTLIB) $(XTRA_LIBS)
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/src \
+ -I$(srcdir)/smbval
+
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lntlmauth -lmiscutil \
+ smbval/libsmbvalid.a \
+ $(CRYPTLIB) \
+ $(XTRA_LIBS)

=== modified file 'helpers/ntlm_auth/smb_lm/smbval/Makefile.am'
--- helpers/ntlm_auth/smb_lm/smbval/Makefile.am 2001-08-31 17:19:04 +0000
+++ helpers/ntlm_auth/smb_lm/smbval/Makefile.am 2009-02-07 03:14:20 +0000
@@ -1,9 +1,13 @@
 # makefile for smblib
 
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include \
- -I$(top_srcdir)/src/
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
 
 noinst_LIBRARIES = libsmbvalid.a
+
 libsmbvalid_a_SOURCES = valid.c session.c rfcnb-util.c rfcnb-io.c \
         smblib-util.c smblib.c smbencrypt.c smbdes.c md4.c byteorder.h \
         rfcnb-error.h rfcnb-util.h smbencrypt.h smblib.h valid.h \

=== modified file 'include/config.h'
--- include/config.h 2009-01-21 03:47:47 +0000
+++ include/config.h 2009-02-14 13:18:34 +0000
@@ -55,156 +55,17 @@
  *--------------------------------------------------------------------------*
  ****************************************************************************/
 
+#include "compat/compat.h"
+
 #ifdef USE_POSIX_REGEX
 #ifndef USE_RE_SYNTAX
 #define USE_RE_SYNTAX REG_EXTENDED /* default Syntax */
 #endif
 #endif
 
-/* define the _SQUID_TYPE_ based on a guess of the OS */
-#if defined(__sun__) || defined(__sun) /* SUN */
-#define _SQUID_SUN_
-#if defined(__SVR4) /* SOLARIS */
-#define _SQUID_SOLARIS_
-#else /* SUNOS */
-#define _SQUID_SUNOS_
-#endif
-
-#elif defined(__hpux) /* HP-UX - SysV-like? */
-#define _SQUID_HPUX_
-#define _SQUID_SYSV_
-
-#elif defined(__osf__) /* OSF/1 */
-#define _SQUID_OSF_
-
-#elif defined(__ultrix) /* Ultrix */
-#define _SQUID_ULTRIX_
-
-#elif defined(_AIX) /* AIX */
-#define _SQUID_AIX_
-
-#elif defined(__linux__) /* Linux */
-#define _SQUID_LINUX_
-#if USE_ASYNC_IO
-#define _SQUID_LINUX_THREADS_
-#endif
-
-#elif defined(__FreeBSD__) /* FreeBSD */
-#define _SQUID_FREEBSD_
-#if USE_ASYNC_IO && defined(LINUXTHREADS)
-#define _SQUID_LINUX_THREADS_
-#endif
-
-#elif defined(__sgi__) || defined(sgi) || defined(__sgi) /* SGI */
-#define _SQUID_SGI_
-#if !defined(_SVR4_SOURCE)
-#define _SVR4_SOURCE /* for tempnam(3) */
-#endif
-#if USE_ASYNC_IO
-#define _ABI_SOURCE
-#endif /* USE_ASYNC_IO */
-
-#elif defined(__NeXT__)
-#define _SQUID_NEXT_
-
-#elif defined(__bsdi__)
-#define _SQUID_BSDI_ /* BSD/OS */
-
-#elif defined(__NetBSD__)
-#define _SQUID_NETBSD_
-
-#elif defined(__OpenBSD__)
-#define _SQUID_OPENBSD_
-
-#elif defined(__DragonFly__)
-#define _SQUID_DRAGONFLY_
-
-#elif defined(__CYGWIN32__) || defined(__CYGWIN__)
-#define _SQUID_CYGWIN_
-#define _SQUID_WIN32_
-
-#elif defined(WIN32) || defined(WINNT) || defined(__WIN32__) || defined(__WIN32)
-#define _SQUID_MSWIN_
-#define _SQUID_WIN32_
-#include "squid_mswin.h"
-
-#elif defined(__APPLE__)
-#define _SQUID_APPLE_
-
-#elif defined(sony_news) && defined(__svr4)
-#define _SQUID_NEWSOS6_
-
-#elif defined(__EMX__) || defined(OS2) || defined(__OS2__)
-#define _SQUID_OS2_
-/*
-* FIXME: the os2 port of bash seems to have problems checking
-* the return codes of programs in if statements. These options
-* need to be overridden.
-*/
-#endif
-
-/* FD_SETSIZE must be redefined before including sys/types.h */
-
-/*
- * On some systems, FD_SETSIZE is set to something lower than the
- * actual number of files which can be opened. IRIX is one case,
- * NetBSD is another. So here we increase FD_SETSIZE to our
- * configure-discovered maximum *before* any system includes.
- */
-#define CHANGE_FD_SETSIZE 1
-
-/*
- * Cannot increase FD_SETSIZE on Linux, but we can increase __FD_SETSIZE
- * with glibc 2.2 (or later? remains to be seen). We do this by including
- * bits/types.h which defines __FD_SETSIZE first, then we redefine
- * __FD_SETSIZE. Ofcourse a user program may NEVER include bits/whatever.h
- * directly, so this is a dirty hack!
- */
-#if defined(_SQUID_LINUX_)
-#undef CHANGE_FD_SETSIZE
-#define CHANGE_FD_SETSIZE 0
-#include <features.h>
-#if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
-#if SQUID_MAXFD > DEFAULT_FD_SETSIZE
-#include <bits/types.h>
-#undef __FD_SETSIZE
-#define __FD_SETSIZE SQUID_MAXFD
-#endif
-#endif
-#endif
-
-/*
- * Cannot increase FD_SETSIZE on FreeBSD before 2.2.0, causes select(2)
- * to return EINVAL.
- * --Marian Durkovic <marian_at_svf.stuba.sk>
- * --Peter Wemm <peter_at_spinner.DIALix.COM>
- */
-#if defined(_SQUID_FREEBSD_)
-#include <osreldate.h>
-#if __FreeBSD_version < 220000
-#undef CHANGE_FD_SETSIZE
-#define CHANGE_FD_SETSIZE 0
-#endif
-#endif
-
-/*
- * Trying to redefine CHANGE_FD_SETSIZE causes a slew of warnings
- * on Mac OS X Server.
- */
-#if defined(_SQUID_APPLE_)
-#undef CHANGE_FD_SETSIZE
-#define CHANGE_FD_SETSIZE 0
-#endif
-
-/* Increase FD_SETSIZE if SQUID_MAXFD is bigger */
-#if CHANGE_FD_SETSIZE && SQUID_MAXFD > DEFAULT_FD_SETSIZE
-#define FD_SETSIZE SQUID_MAXFD
-#endif
 
 /* Typedefs for missing entries on a system */
 
-#include "squid_types.h"
-
 /* int8_t */
 #ifndef HAVE_INT8_T
 #if HAVE_CHAR && SIZEOF_CHAR == 1
@@ -318,40 +179,6 @@
 typedef long mtyp_t;
 #endif
 
-/*
- * On Solaris 9 x86, gcc may includes a "fixed" set of old system include files
- * that is incompatible with the updated Solaris header files.
- */
-#if defined(_SQUID_SOLARIS_) && (defined(i386) || defined(__i386))
-#ifndef HAVE_PAD128_T
-typedef union {
- long double _q;
- int32_t _l[4];
-} pad128_t;
-#endif
-#ifndef HAVE_UPAD128_T
-typedef union {
- long double _q;
- uint32_t _l[4];
-} upad128_t;
-#endif
-#endif
-
-/*
- * Don't allow inclusion of malloc.h on FreeBSD, Next and OpenBSD
- */
-#if defined(HAVE_MALLOC_H) && (defined(_SQUID_FREEBSD_) || defined(_SQUID_NEXT_) || defined(_SQUID_OPENBSD_) || defined(_SQUID_DRAGONFLY_))
-#undef HAVE_MALLOC_H
-#endif
-
-/*
- * res_init() is just a macro re-definition of __res_init on Linux (Debian/Ubuntu)
- */
-#if !defined(HAVE_RES_INIT) && defined(HAVE___RES_INIT) && !defined(res_init)
-#define res_init __res_init
-#define HAVE_RES_INIT HAVE___RES_INIT
-#endif
-
 #if !defined(CACHEMGR_HOSTNAME)
 #define CACHEMGR_HOSTNAME ""
 #else
@@ -435,33 +262,6 @@
 #define LEAK_CHECK_MODE 1
 #endif
 
-/*
- * valgrind debug support
- */
-#if WITH_VALGRIND
-#include <valgrind/memcheck.h>
-/* A little glue for older valgrind version prior to 3.2.0 */
-#ifndef VALGRIND_MAKE_MEM_NOACCESS
-#define VALGRIND_MAKE_MEM_NOACCESS VALGRIND_MAKE_NOACCESS
-#define VALGRIND_MAKE_MEM_UNDEFINED VALGRIND_MAKE_WRITABLE
-#define VALGRIND_MAKE_MEM_DEFINED VALGRIND_MAKE_READABLE
-#define VALGRIND_CHECK_MEM_IS_ADDRESSABLE VALGRIND_CHECK_WRITABLE
-#else
-#undef VALGRIND_MAKE_NOACCESS
-#undef VALGRIND_MAKE_WRITABLE
-#undef VALGRIND_MAKE_READABLE
-#endif
-#else
-#define VALGRIND_MAKE_MEM_NOACCESS(a,b) (0)
-#define VALGRIND_MAKE_MEM_UNDEFINED(a,b) (0)
-#define VALGRIND_MAKE_MEM_DEFINED(a,b) (0)
-#define VALGRIND_CHECK_MEM_IS_ADDRESSABLE(a,b) (0)
-#define VALGRIND_CHECK_MEM_IS_DEFINED(a,b) (0)
-#define VALGRIND_MALLOCLIKE_BLOCK(a,b,c,d)
-#define VALGRIND_FREELIKE_BLOCK(a,b)
-#define RUNNING_ON_VALGRIND 0
-#endif /* WITH_VALGRIND */
-
 
 /*
  * strnstr() is needed. The OS may not provide a working copy.

=== modified file 'lib/Makefile.am'
--- lib/Makefile.am 2009-01-21 03:47:47 +0000
+++ lib/Makefile.am 2009-02-07 11:28:44 +0000
@@ -47,13 +47,12 @@
 endif
 
 EXTRA_LIBRARIES = \
- libregex.a \
         libsspwin32.a
 noinst_LIBRARIES = \
         libmiscutil.a \
         libntlmauth.a \
- $(LIBSSPWIN32) \
- @LIBREGEX@
+ $(LIBSSPWIN32)
+
 #
 # dirent.c, encrypt.c and getopt.c are needed for native Windows support.
 #
@@ -99,8 +98,6 @@
         libTrie/src/TrieNode.o \
         @LIBOBJS@
 # $(top_srcdir)/include/version.h should be a dependency
-libregex_a_SOURCES = \
- GNUregex.c
 libntlmauth_a_SOURCES = \
         ntlmauth.c
 libntlmauth_a_LIBADD = \
@@ -108,7 +105,11 @@
 libsspwin32_a_SOURCES = \
         sspwin32.c
 
-INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include @SQUID_CPPUNIT_INC@
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
+ @SQUID_CPPUNIT_INC@
 ##FIXME - set these in configure.in and reuse
 
 check_PROGRAMS= \

=== modified file 'snmplib/Makefile.am'
--- snmplib/Makefile.am 2003-08-16 06:19:55 +0000
+++ snmplib/Makefile.am 2009-02-07 11:28:44 +0000
@@ -10,7 +10,11 @@
         mib.c snmp_api_error.c \
         snmp_msg.c \
         snmp_pdu.c snmplib_debug.c
-INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include
 
 VERSION = 3.4
 DEFS = -DSQUID_SNMP=1

=== modified file 'src/ICAP/Makefile.am'
--- src/ICAP/Makefile.am 2008-12-10 20:19:50 +0000
+++ src/ICAP/Makefile.am 2009-02-07 03:14:20 +0000
@@ -3,6 +3,7 @@
 CLEANFILES =
 
 INCLUDES = \
+ -I$(top_srcdir) \
         -I$(top_builddir)/include \
         -I$(top_srcdir)/include \
         -I$(top_srcdir)/src

=== modified file 'src/Makefile.am'
--- src/Makefile.am 2009-02-13 11:23:13 +0000
+++ src/Makefile.am 2009-02-14 13:19:07 +0000
@@ -210,9 +210,15 @@
 noinst_LIBRARIES = @DISK_LIBS@
 noinst_LTLIBRARIES = libsquid.la libauth.la
 
-INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)/lib/libTrie/include
-INCLUDES += -I$(top_builddir)/lib -I$(top_srcdir)/lib
-INCLUDES += @SQUID_CPPUNIT_INC@
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/src \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/lib/libTrie/include \
+ -I$(top_builddir)/lib \
+ -I$(top_srcdir)/lib \
+ @SQUID_CPPUNIT_INC@
 
 EXTRA_PROGRAMS = \
         DiskIO/DiskDaemon/diskd \

=== modified file 'src/adaptation/Makefile.am'
--- src/adaptation/Makefile.am 2008-12-10 20:19:50 +0000
+++ src/adaptation/Makefile.am 2009-02-07 03:14:20 +0000
@@ -3,6 +3,7 @@
 CLEANFILES =
 
 INCLUDES = \
+ -I$(top_srcdir) \
         -I$(top_builddir)/include \
         -I$(top_srcdir)/include \
         -I$(top_srcdir)/src

=== modified file 'src/auth/Makefile.am'
--- src/auth/Makefile.am 2009-01-21 03:47:47 +0000
+++ src/auth/Makefile.am 2009-02-07 03:14:20 +0000
@@ -15,7 +15,11 @@
 libntlm_a_SOURCES = ntlm/auth_ntlm.cc ntlm/auth_ntlm.h
 libnegotiate_a_SOURCES = negotiate/auth_negotiate.cc negotiate/auth_negotiate.h negotiate/negotiateScheme.cc negotiate/negotiateScheme.h
 
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include \
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
         -I$(top_srcdir)/src
 
 check_PROGRAMS= testHeaders

=== modified file 'src/eCAP/Makefile.am'
--- src/eCAP/Makefile.am 2008-05-08 21:02:24 +0000
+++ src/eCAP/Makefile.am 2009-02-07 03:14:20 +0000
@@ -22,5 +22,9 @@
         \
         Registry.h
 
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include \
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
         -I$(top_srcdir)/src

=== modified file 'src/fs/Makefile.am'
--- src/fs/Makefile.am 2009-01-21 03:47:47 +0000
+++ src/fs/Makefile.am 2009-02-07 03:14:20 +0000
@@ -28,7 +28,11 @@
         coss/StoreFScoss.h \
         ufs/StoreFSufs.h
 
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include \
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
         -I$(top_srcdir)/src
 
 check_PROGRAMS=testHeaders

=== modified file 'src/globals.h'
--- src/globals.h 2009-01-21 03:47:47 +0000
+++ src/globals.h 2009-01-21 08:13:42 +0000
@@ -70,7 +70,6 @@
     extern const char *const version_string; /* VERSION */
 //MOVED:versions.h:APP_FULLNAME extern const char *const full_appname_string; /* PACKAGE "/" VERSION */
     extern const char *const appname_string; /* PACKAGE */
- extern const char *const w_space; /* " \t\n\r" */
     extern char const * visible_appname_string; /* NULL */
     extern const char *fdTypeStr[];
     extern const char *hier_strings[];

=== modified file 'src/icmp/Makefile.am'
--- src/icmp/Makefile.am 2009-01-10 03:04:47 +0000
+++ src/icmp/Makefile.am 2009-02-07 03:14:20 +0000
@@ -9,7 +9,13 @@
 DEFS = @DEFS@
 CLEANFILES =
 
-INCLUDES = -I$(top_srcdir)/src @SQUID_CPPUNIT_INC@ -I$(top_srcdir)/include -I$(top_builddir)/lib
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/src \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/lib \
+ @SQUID_CPPUNIT_INC@
+
 $(OBJS): $(top_srcdir)/include/version.h $(top_srcdir)/include/autoconf.h
 
 # TODO: get rid of this when config filename is no longer a global constant.

=== modified file 'src/ip/Makefile.am'
--- src/ip/Makefile.am 2009-01-09 13:12:24 +0000
+++ src/ip/Makefile.am 2009-02-14 13:18:34 +0000
@@ -9,7 +9,13 @@
 DEFS = @DEFS@
 CLEANFILES =
 
-INCLUDES = -I$(top_srcdir)/src @SQUID_CPPUNIT_INC@ -I$(top_srcdir)/include -I$(top_builddir)/lib
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/lib \
+ -I$(top_srcdir)/src \
+ @SQUID_CPPUNIT_INC@
+
 $(OBJS): $(top_srcdir)/include/version.h $(top_srcdir)/include/autoconf.h
 
 
@@ -46,6 +52,7 @@
 nodist_testIpAddress_SOURCES= \
         ../tests/testMain.cc
 testIpAddress_LDADD= \
+ $(top_builddir)/compat/libcompat.la \
         libip.la \
         -L$(top_builddir)/lib -lmiscutil \
         @SQUID_CPPUNIT_LA@ \

=== modified file 'src/repl/Makefile.am'
--- src/repl/Makefile.am 2009-01-21 03:47:47 +0000
+++ src/repl/Makefile.am 2009-02-07 03:14:20 +0000
@@ -16,7 +16,11 @@
 liblru_a_SOURCES = lru/store_repl_lru.cc
 libheap_a_SOURCES = heap/store_heap_replacement.h heap/store_heap_replacement.cc heap/store_repl_heap.cc
 
-INCLUDES = -I. -I$(top_builddir)/include -I$(top_srcdir)/include \
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
         -I$(top_srcdir)/src
 
 check_PROGRAMS= testHeaders

=== modified file 'src/squid.h'
--- src/squid.h 2009-01-07 11:24:40 +0000
+++ src/squid.h 2009-01-21 08:05:22 +0000
@@ -32,11 +32,6 @@
 #ifndef SQUID_H
 #define SQUID_H
 
-/*
- * On linux this must be defined to get PRId64 and friends
- */
-#define __STDC_FORMAT_MACROS
-
 #include "config.h"
 
 #ifdef _SQUID_MSWIN_
@@ -191,26 +186,6 @@
 #endif /* HAVE_POLL_H */
 #endif /* USE_POLL */
 
-/*
- * Filedescriptor limits in the different select loops
- *
- * NP: FreeBSD 7 defines FD_SETSIZE as unsigned but Squid needs
- * it to be signed to compare it with signed values.
- * Linux and others including FreeBSD <7, define it as signed.
- * If this causes any issues please contact squid-dev_at_squid-cache.org
- */
-#if defined(USE_SELECT) || defined(USE_SELECT_WIN32)
-/* Limited by design */
-# define SQUID_MAXFD_LIMIT ((signed int)FD_SETSIZE)
-#elif defined(USE_POLL)
-/* Limited due to delay pools */
-# define SQUID_MAXFD_LIMIT ((signed int)FD_SETSIZE)
-#elif defined(USE_KQUEUE) || defined(USE_EPOLL)
-# define SQUID_FDSET_NOUSE 1
-#else
-# error Unknown select loop model!
-#endif
-
 
 /*
  * Trap unintentional use of fd_set. Must not be used outside the
@@ -224,35 +199,6 @@
 # endif
 #endif
 
-#if defined(HAVE_STDARG_H)
-#include <stdarg.h>
-#define HAVE_STDARGS /* let's hope that works everywhere (mj) */
-#define VA_LOCAL_DECL va_list ap;
-#define VA_START(f) va_start(ap, f)
-#define VA_SHIFT(v,t) ; /* no-op for ANSI */
-#define VA_END va_end(ap)
-#else
-#if defined(HAVE_VARARGS_H)
-#include <varargs.h>
-#undef HAVE_STDARGS
-#define VA_LOCAL_DECL va_list ap;
-#define VA_START(f) va_start(ap) /* f is ignored! */
-#define VA_SHIFT(v,t) v = va_arg(ap,t)
-#define VA_END va_end(ap)
-#else
-#error XX **NO VARARGS ** XX
-#endif
-#endif
-
-/* Make sure syslog goes after stdarg/varargs */
-#ifdef HAVE_SYSLOG_H
-#ifdef _SQUID_AIX_
-#define _XOPEN_EXTENDED_SOURCE
-#define _XOPEN_SOURCE_EXTENDED 1
-#endif
-#include <syslog.h>
-#endif
-
 #if HAVE_MATH_H
 #include <math.h>
 #endif
@@ -266,13 +212,6 @@
 #define MAXPATHLEN SQUID_MAXPATHLEN
 #endif
 
-#if !HAVE_GETRUSAGE
-#if defined(_SQUID_HPUX_)
-#define HAVE_GETRUSAGE 1
-#define getrusage(a, b) syscall(SYS_GETRUSAGE, a, b)
-#endif
-#endif
-
 #if !HAVE_STRUCT_RUSAGE
 /*
  * If we don't have getrusage() then we create a fake structure
@@ -329,20 +268,6 @@
 #define S_ISDIR(mode) (((mode) & (_S_IFMT)) == (_S_IFDIR))
 #endif
 
-#ifdef USE_GNUREGEX
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-#include "GNUregex.h"
-#ifdef __cplusplus
-}
-
-#endif
-#elif HAVE_REGEX_H
-#include <regex.h>
-#endif
-
 #include "md5.h"
 
 #if USE_SSL
@@ -392,36 +317,6 @@
 #include "initgroups.h"
 #endif
 
-#ifndef min
-
-template<class A>
-inline A const &
-min(A const & lhs, A const & rhs)
-{
- if (rhs < lhs)
- return rhs;
-
- return lhs;
-}
-
-#endif
-
-#define XMIN(x,y) (min (x,y))
-#ifndef max
-template<class A>
-inline A const &
-max(A const & lhs, A const & rhs)
-{
- if (rhs > lhs)
- return rhs;
-
- return lhs;
-}
-
-#endif
-
-#define XMAX(a,b) (max (a,b))
-
 #include "structs.h"
 #include "protos.h"
 #include "globals.h"

=== modified file 'test-suite/Makefile.am'
--- test-suite/Makefile.am 2009-01-21 03:47:47 +0000
+++ test-suite/Makefile.am 2009-02-14 13:18:34 +0000
@@ -9,9 +9,21 @@
 AM_CFLAGS = @SQUID_CFLAGS@
 AM_CXXFLAGS = @SQUID_CXXFLAGS@
 
-INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)/src
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/src
+
+LDADD = \
+ -L$(top_builddir)/compat/libcompat.la \
+ -L$(top_builddir)/lib -lmiscutil \
+ $(top_builddir)/src/globals.o \
+ $(top_builddir)/src/time.o
 
 EXTRA_PROGRAMS = mem_node_test membanger splay tcp-banger2 rfc1738
+
 EXTRA_DIST = testheaders.sh
 
 ESI_ALL_TESTS = \
@@ -50,7 +62,6 @@
                 VirtualDeleteOperator
 
 
-LDADD =$(top_builddir)/src/globals.o $(top_builddir)/src/time.o -L$(top_builddir)/lib -lmiscutil
 tcp_banger2_LDADD = -L$(top_builddir)/lib -lmiscutil
 DEBUG_SOURCE = test_tools.cc
 debug_SOURCES = debug.cc $(DEBUG_SOURCE)

=== modified file 'tools/Makefile.am'
--- tools/Makefile.am 2009-01-09 13:12:24 +0000
+++ tools/Makefile.am 2009-02-07 11:28:44 +0000
@@ -7,8 +7,15 @@
 
 AUTOMAKE_OPTIONS = subdir-objects
 
-INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)/lib/libTrie/include -I$(top_srcdir)/src
-INCLUDES += @SQUID_CPPUNIT_INC@
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I. \
+ -I$(top_builddir)/include \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/src \
+ @SQUID_CPPUNIT_INC@
+# -I$(top_srcdir)/lib/libTrie/include
+# -I$(srcdir)
 
 TESTS=$(check_PROGRAMS)
 #check_PROGRAMS= testHeaders

# Begin bundle
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
Received on Sun Feb 15 2009 - 05:09:29 MST

This archive was generated by hypermail 2.2.0 : Tue Feb 17 2009 - 12:00:04 MST