[MERGE] libcompat round 4.1

From: Amos Jeffries <squid3_at_treenet.co.nz>
Date: Wed, 18 Feb 2009 15:19:43 +1300

might help if I attached the bundle.

Amos

-- 
Please be using
   Current Stable Squid 2.7.STABLE6 or 3.0.STABLE13
   Current Beta Squid 3.1.0.5

# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: squid3_at_treenet.co.nz-20090218001843-tcfc4igd6x47a17l
# target_branch: file:///src/squid/bzr/trunk/
# testament_sha1: 6277bf2d039f223ad51004038db9a91788228a42
# timestamp: 2009-02-18 15:01:51 +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-02-18 00:18:43 +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
@@ -102,9 +104,8 @@
 
 #define SYNTAX(c) re_syntax_table[c]
 
-
 /* Get the interface, including the syntax bits. */
-#include "GNUregex.h"
+#include "compat/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 +2363,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 +4406,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-18 00:18:43 +0000
@@ -0,0 +1,67 @@
+#
+# 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 = \
+ assert.h \
+ compat.h \
+ compat_shared.h \
+ fdsetsize.h \
+ gnuregex.h \
+ osdetect.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 \
+ \
+ assert.cc \
+ 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

=== renamed file 'lib/assert.c' => 'compat/assert.cc'
--- lib/assert.c 2009-01-21 03:47:47 +0000
+++ compat/assert.cc 2009-02-18 00:18:43 +0000
@@ -1,4 +1,3 @@
-
 /*
  * $Id$
  *
@@ -34,10 +33,16 @@
 
 #include "config.h"
 
+#if HAVE_STDIO_H
 #include <stdio.h>
+#endif
+#if HAVE_STDLIB_H
 #include <stdlib.h>
+#endif
 
-#include "assert.h"
+#if 0
+#include "compat/assert.h"
+#endif
 
 void xassert(const char *expr, const char *file, int line)
 {

=== 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/Array.h'
--- include/Array.h 2009-01-21 03:47:47 +0000
+++ include/Array.h 2009-02-18 00:18:43 +0000
@@ -41,7 +41,7 @@
 #include "util.h"
 
 /* users of this template also need assert() */
-#include "assert.h"
+#include "compat/assert.h"
 
 /* iterator support */
 

=== modified file 'include/MemPool.h'
--- include/MemPool.h 2008-09-29 09:56:06 +0000
+++ include/MemPool.h 2009-02-18 00:18:43 +0000
@@ -21,7 +21,6 @@
  */
 
 #include "config.h"
-#include "assert.h"
 #include "util.h"
 
 #include "memMeter.h"

=== removed file 'include/assert.h'
--- include/assert.h 2009-01-21 03:47:47 +0000
+++ include/assert.h 1970-01-01 00:00:00 +0000
@@ -1,47 +0,0 @@
-/*
- * $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_ASSERT_H
-#define SQUID_ASSERT_H
-
-#include "config.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
-SQUIDCEXTERN void xassert(const char *, const char *, int);
-
-#endif

=== 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-18 00:18:43 +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.
 #
@@ -90,7 +89,6 @@
         stub_memaccount.c \
         util.c \
         uudecode.c \
- assert.c \
         xusleep.c \
         $(XPROF_STATS_SOURCE) \
         $(WIN32SRC)
@@ -99,8 +97,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 +104,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= \
@@ -134,7 +134,7 @@
         tests/testMain.cc \
         $(XPROF_STATS_SOURCE) \
         $(WIN32SRC) \
- util.c assert.c
+ util.c
 
 tests_testAll_LDADD= @SQUID_CPPUNIT_LA@ @SQUID_CPPUNIT_LIBS@
 

=== modified file 'lib/rfc1123.c'
--- lib/rfc1123.c 2009-01-21 03:47:47 +0000
+++ lib/rfc1123.c 2009-02-18 00:18:43 +0000
@@ -61,7 +61,6 @@
 #if HAVE_SYS_TIME_H
 #include <sys/time.h>
 #endif
-#include "assert.h"
 
 #include "util.h"
 

=== 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/AuthUser.cci'
--- src/AuthUser.cci 2009-01-21 03:47:47 +0000
+++ src/AuthUser.cci 2009-02-18 00:18:43 +0000
@@ -33,8 +33,8 @@
  * Copyright (c) 2003, Robert Collins <robertc_at_squid-cache.org>
  */
 
-/* for assert() */
-#include "assert.h"
+#include "config.h"
+
 /* for xstrdup() */
 #include "util.h"
 /* for safe_free() */

=== 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/String.cci'
--- src/String.cci 2009-02-04 22:39:55 +0000
+++ src/String.cci 2009-02-18 00:18:43 +0000
@@ -32,7 +32,7 @@
  *
  */
 
-#include "assert.h"
+#include "config.h"
 #include <cstring>
 
 String::String() : size_(0), len_(0), buf_ (NULL)

=== modified file 'src/acl.cc'
--- src/acl.cc 2009-01-21 03:47:47 +0000
+++ src/acl.cc 2009-02-18 00:18:43 +0000
@@ -33,19 +33,12 @@
  */
 #include "config.h"
 
-#if 0
-#include "squid.h"
-#include "HttpRequest.h"
-#endif
-
 #include "ACL.h"
 #include "ACLChecklist.h"
 #include "ConfigParser.h"
 #include "dlink.h"
 /* for special-case PURGE test */
 #include "HttpRequestMethod.h"
-/* for Vector<> Instances */
-#include "assert.h"
 
 const char *AclMatchedName = NULL;
 

=== 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/cf_gen.cc'
--- src/cf_gen.cc 2009-01-09 13:12:24 +0000
+++ src/cf_gen.cc 2009-02-18 00:18:43 +0000
@@ -47,7 +47,6 @@
 
 //#include "squid.h"
 #include "config.h"
-#include "assert.h"
 //#include "SquidTime.h"
 #include "cf_gen_defines.h"
 #include "util.h"

=== 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/eCAP/ServiceRep.cc'
--- src/eCAP/ServiceRep.cc 2009-01-29 16:14:56 +0000
+++ src/eCAP/ServiceRep.cc 2009-02-18 00:18:43 +0000
@@ -1,7 +1,6 @@
 #include "squid.h"
 #include <libecap/adapter/service.h>
 #include "TextException.h"
-#include "assert.h"
 #include "eCAP/ServiceRep.h"
 #include "eCAP/XactionRep.h"
 

=== modified file 'src/eCAP/XactionRep.cc'
--- src/eCAP/XactionRep.cc 2008-10-10 08:02:53 +0000
+++ src/eCAP/XactionRep.cc 2009-02-18 00:18:43 +0000
@@ -3,7 +3,6 @@
 #include <libecap/common/delay.h>
 #include <libecap/adapter/xaction.h>
 #include "TextException.h"
-#include "assert.h"
 #include "HttpRequest.h"
 #include "HttpReply.h"
 #include "eCAP/XactionRep.h"

=== 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-02-18 00:18:43 +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_
@@ -45,8 +40,6 @@
 /** \endcond */
 #endif
 
-#include "assert.h"
-
 #if HAVE_UNISTD_H
 #include <unistd.h>
 #endif
@@ -191,26 +184,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 +197,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 +210,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 +266,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 +315,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-18 00:18:43 +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 = \
+ $(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-18 00:18:43 +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
@@ -36,7 +43,11 @@
 cachemgr__CGIEXT__SOURCES = cachemgr.cc
 cachemgr__CGIEXT__CXXFLAGS = -DDEFAULT_CACHEMGR_CONFIG=\"$(DEFAULT_CACHEMGR_CONFIG)\" $(AM_CXXFLAGS)
 
-LDADD = ../src/ip/libip.la -L../lib -lmiscutil $(XTRA_LIBS)
+LDADD = \
+ ../compat/libcompat.la \
+ ../src/ip/libip.la \
+ -L../lib -lmiscutil \
+ $(XTRA_LIBS)
 
 EXTRA_DIST = \
         cachemgr.conf

=== modified file 'tools/cachemgr.cc'
--- tools/cachemgr.cc 2009-01-07 11:24:40 +0000
+++ tools/cachemgr.cc 2009-02-18 00:18:43 +0000
@@ -129,7 +129,6 @@
 }
 #endif
 
-#include "assert.h"
 #include "util.h"
 #include "ip/IpAddress.h"
 #include "getfullhostname.h"

# Begin bundle
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
oL+FH76KlRP/8XckU4UJC/CHaNA=
Received on Wed Feb 18 2009 - 02:19:37 MST

This archive was generated by hypermail 2.2.0 : Thu Feb 19 2009 - 12:00:03 MST