Imported Upstream version 2.23.05 upstream upstream/2.23.05
authorClinton Ebadi <clinton@neurasthenic.home.unknownlamer.org>
Tue, 8 Apr 2014 09:23:32 +0000 (05:23 -0400)
committerClinton Ebadi <clinton@neurasthenic.home.unknownlamer.org>
Tue, 8 Apr 2014 09:23:32 +0000 (05:23 -0400)
78 files changed:
CHANGES [new file with mode: 0644]
COPYING [new file with mode: 0644]
Copyright [new file with mode: 0644]
DNS.README [new file with mode: 0644]
INSTALL [new file with mode: 0644]
Makefile.in [new file with mode: 0644]
Makefile.std [new file with mode: 0644]
README [new file with mode: 0644]
README.FIRST [new file with mode: 0644]
configure [new file with mode: 0755]
configure.in [new file with mode: 0644]
country-codes.txt [new file with mode: 0644]
dns_resolv.c [new file with mode: 0644]
dns_resolv.h [new file with mode: 0644]
graphs.c [new file with mode: 0644]
graphs.h [new file with mode: 0644]
hashtab.c [new file with mode: 0644]
hashtab.h [new file with mode: 0644]
install-sh [new file with mode: 0755]
lang.h [new file with mode: 0644]
lang/webalizer_lang.albanian [new file with mode: 0644]
lang/webalizer_lang.arabic [new file with mode: 0644]
lang/webalizer_lang.catalan [new file with mode: 0644]
lang/webalizer_lang.chinese [new file with mode: 0644]
lang/webalizer_lang.croatian [new file with mode: 0644]
lang/webalizer_lang.czech [new file with mode: 0644]
lang/webalizer_lang.danish [new file with mode: 0644]
lang/webalizer_lang.dutch [new file with mode: 0644]
lang/webalizer_lang.english [new file with mode: 0644]
lang/webalizer_lang.estonian [new file with mode: 0644]
lang/webalizer_lang.finnish [new file with mode: 0644]
lang/webalizer_lang.french [new file with mode: 0644]
lang/webalizer_lang.galician [new file with mode: 0644]
lang/webalizer_lang.german [new file with mode: 0644]
lang/webalizer_lang.greek [new file with mode: 0644]
lang/webalizer_lang.hungarian [new file with mode: 0644]
lang/webalizer_lang.icelandic [new file with mode: 0644]
lang/webalizer_lang.indonesian [new file with mode: 0644]
lang/webalizer_lang.italian [new file with mode: 0644]
lang/webalizer_lang.japanese [new file with mode: 0644]
lang/webalizer_lang.korean [new file with mode: 0644]
lang/webalizer_lang.latvian [new file with mode: 0644]
lang/webalizer_lang.lithuanian [new file with mode: 0644]
lang/webalizer_lang.malay [new file with mode: 0644]
lang/webalizer_lang.norwegian [new file with mode: 0644]
lang/webalizer_lang.polish [new file with mode: 0644]
lang/webalizer_lang.portuguese [new file with mode: 0644]
lang/webalizer_lang.portuguese_brazil [new file with mode: 0644]
lang/webalizer_lang.romanian [new file with mode: 0644]
lang/webalizer_lang.romanian-iso-8859-2 [new file with mode: 0644]
lang/webalizer_lang.russian [new file with mode: 0644]
lang/webalizer_lang.serbian [new file with mode: 0644]
lang/webalizer_lang.simplified_chinese [new file with mode: 0644]
lang/webalizer_lang.slovak [new file with mode: 0644]
lang/webalizer_lang.slovene [new file with mode: 0644]
lang/webalizer_lang.spanish [new file with mode: 0644]
lang/webalizer_lang.swedish [new file with mode: 0644]
lang/webalizer_lang.thai [new file with mode: 0644]
lang/webalizer_lang.turkish [new file with mode: 0644]
lang/webalizer_lang.ukrainian [new file with mode: 0644]
linklist.c [new file with mode: 0644]
linklist.h [new file with mode: 0644]
msfree.png [new file with mode: 0644]
output.c [new file with mode: 0644]
output.h [new file with mode: 0644]
parser.c [new file with mode: 0644]
parser.h [new file with mode: 0644]
preserve.c [new file with mode: 0644]
preserve.h [new file with mode: 0644]
sample.conf [new file with mode: 0644]
wcmgr.1 [new file with mode: 0644]
wcmgr.c [new file with mode: 0644]
webalizer.1 [new file with mode: 0644]
webalizer.LSM [new file with mode: 0644]
webalizer.c [new file with mode: 0644]
webalizer.h [new file with mode: 0644]
webalizer.png [new file with mode: 0644]
webalizer_lang.h [new symlink]

diff --git a/CHANGES b/CHANGES
new file mode 100644 (file)
index 0000000..f2a0989
--- /dev/null
+++ b/CHANGES
@@ -0,0 +1,586 @@
+--------------------------------------------------------------------
+2.23-xx changes from 2.21-xx
+--------------------------------------------------------------------
+
+Fixes:
+ o Fix sporadic eol problem with some IIS/W3C logs
+
+ o Fix compiler directive syntax error (broke some 64 bit systems)
+
+Changes/Additions:
+ o Modest speed improvements in hash table code
+
+--------------------------------------------------------------------
+2.21-xx changes from 2.20-xx
+--------------------------------------------------------------------
+
+Fixes:
+ o Added missing memory deallocation call in DNS lookup code.
+
+ o Minor fixes to configure script
+
+Changes/Additions:
+ o Added "YearTotals" config option for main index page totals
+
+ o Rename local stricmp() function to ouricmp() to prevent name
+   confilict on systems that happen to provide it already.
+
+--------------------------------------------------------------------
+2.20-xx changes from 2.01-xx
+--------------------------------------------------------------------
+
+Fixes:
+ o Fixed problem with timing totals.
+
+ o Fixed referrer linking to avoid possible xss injection.
+
+ o Fixed month change detection error that caused incorrect report
+   dates when logs had a 'gap' longer than a year.
+
+ o Fixed buffer overrun possibility in parsing code and user agent
+   mangle logic.
+
+ o Added symbolic link checks for file I/O to prevent possible
+   privilege escalation exploits.  Disallows reading from or writing
+   to any file that is a symlink.  Thanks to Julien Danjou.
+
+ o Added code to preserve the history and incremental data files in
+   the event of a crash before writing to them completely.  Thanks
+   to Robert Millan for the idea and initial code.
+
+Changes/Additions:
+ o Added native geolocation services, which fully supports both IPv4
+   and IPv6 lookups.  Adds the configuration keywords 'GeoDB' and
+   'GeoDBDatabase' along with the '-j' and '-J' command line options.
+
+ o Added 'wcmgr', "The Webalizer (DNS) Cache file Manager" to the
+   distribution to provide cache file maintenance.  See the supplied
+   man page for a description and usage information.
+
+ o Changed history code and main index page to allow for more than
+   12 months of reports to be displayed.  Added the config keywords
+   'IndexMonths' (-K command line option), 'GraphMonths' (-k command
+   line option) and 'YearHeaders' to control how index is displayed.
+
+ o Changed Berkeley DB code to use current 4.x APIs.
+
+ o Added support for bzip2 compressed log files (.bz2) as a compile
+   time option (--enable-bz2).  If enabled, bzipped files will be
+   decompressed automatically during processing.
+
+ o Added support for W3C formatted logs.  Based on code submitted
+   by Klaus Reimer.
+
+ o Added GeoIP support as compile time option (--enable-geoip). Adds
+   'GeoIP' and 'GeoIPDatabase' config keywords, '-w' and '-W'
+   command line options. (http://www.maxmind.com/)
+
+ o Added IPv6 support.  Based on initial code by Jose Carlos Meneiros
+   and modified to support Solaris and other problematic platforms.
+
+ o Added 'CacheIPs' config option to allow saving unresolved addresses
+   in the DNS cache.
+
+ o Added 'CacheTTL' config option which allows the DNS cache time to
+   live (TTL) value to be specified at run-time.
+
+ o Added 'SearchCaseI' config option to specify if search strings
+   should be treated as case insensitive or not.  The default value,
+   'yes', causes search strings to be treated as case insensitive.
+
+ o Added 'HTAccess' config option.  Allows writing a default .htaccess
+   file to the output directory.
+
+ o Added ability to display flags in the top country table.  Adds the
+   config keywords 'CountryFlags' and 'FlagDir', and -z command line
+   option.
+
+ o Added 'StripCGI' config option to configure how CGI variables on
+   the end of URLs are treated (can now be stripped or left in place).
+
+ o Added 'DefaultIndex' config option to enable/disable the use of
+   "index." as a default index name to be stripped from the end of URLs.
+
+ o Added 'TrimSquidURL' config option to allow squid log URLs to be
+   reduced in granularity by a user definable amount.  Thanks to code
+   submitted by Stuart Gall.
+
+ o Added 'OmitPage' config option (and the '-O' command line switch)
+   to prevent specified URLs from being counted as pages even if they
+   otherwise would be.  Thanks to code submitted by Adam Morton.
+
+ o Added 'IgnoreState' config option (and the -b command line switch)
+   to allow ignoring any existing incremental data file (similar to
+   the IgnoreHist/-i option).
+
+ o Changed logic to always generate summary report (index.html),
+   even if no records were processed.
+
+ o Added color support to allow changing graph colors.  Based on the
+   Webalizer-usecolor code submitted by Benoit Rouits.  Adds 11 new
+   config options, see the README file for complete descriptions.
+
+ o Added language 'lang=' specification in generated HTML files.
+   
+ o Added 'LinkReferrer' config option to allow/disallow links in the
+   top referrers table.
+
+ o Added 'PagePrefix' config option to allow URL prefix matches to
+   be counted as pages, regardless of file extension or type.  Thanks
+   to code submitted by Remco Van de Meent.
+
+ o Enabled large file support (LFS) to support logs greater than 2Gb
+   in size on systems that support LFS.  Also increased the size of
+   most internal counters to handle larger sites.
+
+ o Minor changes to generated HTML output
+
+ o Updated language files country codes for current IANA TLDs
+
+ o Changed the meaning of the -v command line switch.  It now
+   causes verbose information to be displayed at run-time
+   (Informational and Debug messages).
+
+ o Changed Group* config options to allow a quoted string for
+   the match string.  This allows spaces to be embedded in the
+   string.
+
+ o Changed log record parsing logic to allow spaces in URLs.
+
+ o Made configuration keywords, boolean configuration values
+   (yes/no), and log file types case insensitive.  Also fixed
+   defaults for invalid values to reflect documented defaults.
+
+ o Changed configure script to use --sysconfdir to specify the
+   location of the default webalizer.conf configuration file.
+   Also added support for DESTDIR during install to aid binary
+   package builds.
+
+--------------------------------------------------------------------
+2.01-xx changes from 1.30-04
+--------------------------------------------------------------------
+
+Fixes:
+ o Fix posible obscure buffer overflow bug in DNS resolver code
+
+ o Added additional extended character fixes
+
+ o Let code accept partial content response codes along with 200's
+
+ o Added code to catch blank hostnames (yes, they have been found!)
+   Will convert them into 'Unknown'
+
+ o Security fix for cross-site scripting vulnerability found by
+   Flavio Veloso (www.magnux.com).
+
+ o Fixed a TOTAL_RC off by one error, which would prevent the last
+   response code from being saved when using incremental mode.
+
+ o Fixed possible segfault condition in MangleAgent code on
+   some malformed user agent names.
+
+ o Fixed DNS to prevent hangs on blank and malformed hostnames.
+
+ o Fixed problem calculating visits.  Changed timestamps to use
+   seconds since epoch (1/1/1970) which results in more accurate
+   analysis.  Also changed normal out of sequence code to handle
+   up to 1 hour of 'slop' in the timestamps.  This changed the
+   semantics of the VisitTimeout and -m configuration options, as
+   the values are now specified in number of seconds.
+
+ o Fixed hostname lowercase problem (wasn't) when using DNS lookups.
+
+ o Fixed problem with incremental datafile which could cause a read
+   error under certain circumstances (removes control characters).
+   Also changed code to now abort on a read error.
+
+ o Fixed problem with hash table node creation where objects that
+   were exactly the maximum length would wind up leaving a garbage
+   byte at the end of the memory space allocated.  This was causing
+   some very infrequent and widely different problems.
+
+ o Fixed problem where country graph could be produced incorrectly
+   if using a non-english language and the country name overlapped
+   the pie chart.
+
+ o Found and fixed a problem with a possible 32-bit wrap around
+   problem using incremental mode on large sites.  The problem
+   would cause the KBytes data on large groups to become inaccuate.
+
+Changes/Additions:
+ o Modified configure to allow specification of the default config
+   directory.  If not given, will use /etc (/etc/webalizer.conf).
+
+ o Added DailyGraph and DailyStats configuration options to enable
+   or disable the Daily usage graph and stats table from output.
+
+ o Improved visit calculation logic to reduce 'false' counts generated
+   by external image referrals.
+
+ o Added reverse DNS lookup capability.  This adds the command
+   line switchs -D and -N, and configuration keywords "DNSCache"
+   and "DNSChildren".  See the DNS.README for additional info.
+   Based in part on code submitted by Henning P. Schmiedehausen
+   (hps@tanstaafl.de).
+
+ o Added ability to dump Sites, URLs, Referrers, User Agents,
+   Usernames and Search Strings to tab delimited files, suitable
+   for import into most database and spreadsheet programs.  The
+   location of this file may be specified using the "DumpPath"
+   configuration keyword, allowing the data to be kept someplace
+   outside the web servers document tree.  The configuration
+   keywords "DumpSites", "DumpURLs", "DumpReferrers", "DumpAgents",
+   "DumpUsers" and "DumpSearchStr"  have been added to control the
+   file dumps.  Column headers can be included in the file with
+   the "DumpHeader" keyword.  Dump filename extensions may be
+   specified using the "DumpExtension" keyword (default is .tab).
+
+ o Added username analysis, based on usernames found in the log,
+   and only available if username information is present in the
+   log (ie: http authentication or wu-ftpd xferlog).  The keywords
+   'GroupUser', 'HideUser', 'IgnoreUser', 'IncludeUser', 'AllUsers',
+   and 'TopUsers' have been added to the configuration file code.
+   This change also modified the format of the incremental data file.
+
+ o Added the ability to display ALL sites, URLs, Referrers,
+   User Agents and Search Strings on a seperate HTML page from
+   the normal statistics page.  This adds the configuration
+   keywords 'AllSites', 'AllURLs', 'AllReferrers', 'AllAgents'
+   and 'AllSearchStr', which can have either a "yes" or "no"
+   value (default is "no").  Will add a "View All..." link to
+   the bottom of the appropriate "Top" table if enabled.
+
+ o Added support for squid proxy logs, thanks to code submitted
+   by Steinar H. Gunderson (sgunderson@bigfoot.com).  To use
+   squid logs, specify a LogType of 'squid' in the configuration
+   file.  This also changed the behaviour of the '-F' command
+   line switch, which now requires a second argument of either
+   'clf', 'ftp' or 'squid'.
+
+ o Completely modified the way the various TOP tables are handled
+   and sorted, which now allows extremely large top tables without
+   any performance degredation.  Previously, tables greater than
+   a few hundred elements produced a noticable perfomance penalty
+   during processing.
+
+ o Added the ability to group domains automatically and to hide
+   individual host names from the report, using the 'GroupDomains'
+   and 'HideAllSites' configuration keywords (-g and -X command
+   line options).  Domain Grouping is configurable as to the level
+   of grouping (second level domain, third, etc...).  HideAllSites
+   forces only grouped site records to be displayed if any.  Based
+   on ideas/code by Michael Klemme (mklemme@gmx.de).  This changes
+   the behaviour of the '-g' switch, which previously was used to
+   force the use of GMT time for reports.
+
+ o Added user configurable search engine specification, used for
+   search string analysis.  This adds the 'SearchEngine' keyword
+   in configuration files.  Based on idea/code by Alexey Kizilov.
+
+ o Changed code to use the latest version of GD which supports PNG
+   images instead of GIF images.  Also included changes in configure
+   script to ensure the presence of the libpng and libz libraries.
+
+ o Added ability to override log file to STDIN by use of '-' on
+   the command line.
+
+ o Added gzipped logfile support.  The program will automatically
+   detect logfiles with a '.gz' extension and uncompress on the
+   fly.  Uses gz file support of zlib, since it's required for
+   our gd/png stuff anyway.  Please note that using gzipped logs
+   will incur a small performance penality.
+
+ o Minor changes to search string code to increase accuracy.  This
+   also removes a previous condition that would occasionally cause
+   search strings to incorrectly be counted twice or to be counted
+   as different search strings when only differing by a space.
+
+ o Minor changes to URL parse code to allow additional characters.
+   Also changed unescape code to properly handle extended chars.
+
+ o Major changes to hash table node format for reduced memory usage.
+   Instead of fixed size strings, the new format will dynamically
+   allocate string memory and use pointers to existing table data
+   under certain circumstances.  The memory savings is significant
+   and will be greatly noticed with large sites.  Because of these
+   changes, the formatting of the incremental data file had to be
+   changed, therefore it is incompatible with previous versions.
+
+ o Major code reorganization and cleanup.  This was to facilitate
+   future developent and make things more managable.
+
+ o Usual documentation updates for new features/functions.
+
+--------------------------------------------------------------------
+1.30-xx changes from 1.22-06
+--------------------------------------------------------------------
+
+Fixes:
+ o Fixed minor bug that would allow incorrect site totals for the
+   first day of the month under certain conditions.
+
+Changes/Additions:
+ o Added Top Entry and Exit Page tables.  Added configuration file
+   keywords TopEntry (-e command line) and TopExit (-E command line)
+   to specify the number of entries to display for each table.  The
+   default for both is 10.  See README for additional information.
+   
+ o Added 'Group' labels.  Allows display of a specified label for
+   grouped entries (in 'Top' tables).  Based on patch submitted
+   by Oliver Graf (ograf@rhein-zeitung.de).  See sample.conf for
+   examples.
+
+ o Added 'Visits' totals.  The length of time that constitutes a
+   'visit' can be set using the VisitTimeout configuration keyword
+   (-m command line option).  The value must be given in HHMMSS
+   format, you can omit leading zeros. Default is 30 minutes (3000).
+
+ o Added 'Pages' totals, based on user specified extensions.  Changes
+   made to generated graphs as well.  Configuration keyword PageType
+   (and command line -P switch) allows specification of extensions
+   to use (defaults to 'htm*' and 'cgi').  Also called "pageviews".
+
+ o Added Search String analysis.  Keyword 'TopSearch' defines how
+   many of the top search strings to display.  Default is 20. Can
+   be disabled by using zero (0).
+
+ o Added native support for ftp logs (xferlog ala wu-ftpd).  Added
+   'LogType' configuration file keyword (-F command line option)
+   to specify log type.  Values can be either 'web' or 'ftp', with
+   the default of 'web'.
+
+ o Changed graphs to handle pages and visits totals. Also  added
+   color coded legends, which can be disabled using the GraphLegend 
+   configuration keyword (-L command line option).  Default is to
+   display them.
+
+ o Added background lines to graphs.  Default is 2 lines, and can
+   be set to any number using the GraphLines configuration keyword
+   (-l command line option).  Can use anywhere from none (0) to
+   twenty lines.  They will be drawn in all but the country graph.
+
+ o Added CountryGraph configuration file keyword (-Y command line
+   option) to enable/disable display of country usage pie chart.
+
+ o Added FoldSeqErr keyword (-f command line option).  Normally,
+   the program will ignore log records that are out of sequence
+   (chronological order).  This option lets them be folded into
+   the analysis anyway, as if the were the same date/time as the
+   last good record.  Apache users can safely ignore :)
+
+ o Added additonal 'Top' tables for SITES and URLs, sorted by
+   KBytes instead of hits.  Two new configuration file keywords,
+   TopKSites and TopKURLs, can be used to specify the number of
+   entries for each (zero to disable).  Default for both is 10.
+
+ o Added additional calculations for max/avg files, pages, visits
+   and KBytes in monthly statistics.
+
+ o Updated generated HTML code to fully comply with the HTML 4.0
+   Transitional spec.  DOCTYPE header reflects this change as well.
+
+ o Changed code to use 4 digit years in filenames.  Purely for the
+   Y2K phobes who couldn't deal with only two digits (even though
+   it was _purely_ for humans, the program couldn't care less).
+   Unfortunately, this means that you will have to rename previous
+   month files to the new format.  Not a big deal if you plan on
+   re-running all your logs to take advantage of the new features.
+
+ o Major changes to both history file and incremental file formats
+   to handle additional totals (pages/visits data).  As a result,
+   this version is INCOMPATABLE with previous versions.  See the
+   file README.FIRST for important information on upgrading.
+
+ o Language files and documentation updated for new functions.
+
+--------------------------------------------------------------------
+1.22-xx changes from 1.20-11
+--------------------------------------------------------------------
+
+Fixes:
+ o Fixed bug in country total generation.  Caused country table
+   to show bogus entries if logs contain hostnames that were not
+   fully qualified (ie: don't have the domain name/TLD portion).
+
+ o Changed/fixed incremental data I/O routines to better detect and
+   handle error conditions.  This involved some minor incremental
+   data file format changes as well.  Fixes problem large sites were
+   having where random tables were getting munged.
+
+ o Fixed record parse code to better detect and strip query portion
+   from URLs and Referrer strings.
+
+ o Fixed segfault condition when more than MAX_CTRY entries were
+   specified for the "Top Countries" table.
+
+Changes/Additions:
+ o Added code to detect negative byte transfer sizes in logs (another
+   netscape server kludge :)  Could cause KByte xfer sizes to become
+   corrupt.
+
+ o Several small changes (mostly ifdef/endif's) to make code compile
+   clean 'out-of-the-box' across more platforms (ala SunOS).  Also
+   added a GNU autoconf 'configure' script which helps a bit as well.
+
+ o Added Include* keywords.  Allows forcing the inclusion of specified
+   log records.  Takes precedence over counterpart Ignore* keywords.
+
+ o Added HTMLPre, HTMLBody, HTMLEnd and HTMLExtension keywords, and
+   changed behaviour of HTMLHead keyword.  Previous versions need
+   only change the 'HTMLHead' keword in existing files to 'HTMLBody'
+   to upgrade.  Thanks to Colin Viebrock <cmv@privateworld.com> for
+   the idea and code examples.
+
+ o Changed mangle agent code to support Opera and other browsers.
+   Also updated response codes to IETF HTTP/1.1 Rev 6 draft.
+   Thanks to Yves Lafon <ylafon@w3.org> for this these.
+
+ o Added HistoryName and IncrementalName keywords, which allow the
+   specification of the history and incremental data filenames.
+
+ o Added UseHTTPS keyword, which allows using 'https://' instead
+   of 'http://' for links to URLS in the 'Top URLs' table.  Also
+   added check for URLs that already have the protocol specified
+   (such as on virtual web and proxy servers), and to use unmodified
+   if found (will only force to lowercase for matching).
+
+ o Added code to ignore out-of-sequence log records.
+
+ o Added code to force hostnames to lowercase (was causing country skew).
+
+ o Disabled display of blank (zero hit) days at start of daily stat table.
+
+ o Added records per second calculation to timing totals.
+
+ o ALT= tags now use translated strings instead of forcing english.
+
+ o Updated documentation for new functions/features.
+
+--------------------------------------------------------------------
+1.20-xx changes from 1.12-10
+--------------------------------------------------------------------
+
+Fixes:
+ o Modified record parse routine to not touch stuff between quotes
+   (").  Was causing problems parsing some malformed request fields.
+
+ o Fixed memory leak in MangleAgent code, and relocated to elimitate
+   un-necessary processing (causing segfault on some machines).
+
+Changes/Additions:
+ o Changed transfer totals on host/url structures to support large
+   groupings (such as *.gif) on heavly hit servers.  Hopefully, this
+   should cure the 32bit overflow problem large sites were having.
+
+ o Changed daily transfer totals to support transfers greater than
+   roughly 4.2 gigabytes a day.
+
+ o Added some missing HTML tags and altered the way totals are
+   calculated on the 'Top' tables (to correct for grouped records).
+
+ o Added incremental run capability (-p command line option or
+   "Incremental" configuration file keyword).
+
+--------------------------------------------------------------------
+1.1x-xx changes from 1.00-05
+--------------------------------------------------------------------
+
+Fixes:
+ o Re-wrote the Group* logic, fixing a bug that allowed hiding of
+   objects when they shouldn't be.
+
+ o Fixed broken IgnoreReferrer code.
+
+ o Modified config parse code to handle extended characters.
+
+ o Misc. minor bug fixes/changes.  Added a missing fclose.
+
+ o Cleaned up generated HTML.
+
+ o Fixed duplicate warnings on large referrer fields.
+
+ o Fixed country table bug adding grouped records to totals.
+
+Changes/Additions:
+ o Added GroupSite, GroupReferrer and GroupAgent keywords to round
+   out the Group* configuration options.
+
+ o Added GroupShading and GroupHighlight keywords to allow selective
+   highlight and shading on grouped rows in table.
+
+ o Removed the '-L' command line option.  Groupings can now only
+   be specified from a configuration file.  Language files changed
+   to reflect change.
+
+ o Added '-V' command line option (identical to '-v') for version.
+
+ o Added additional language support.  Language files will be marked
+   /* New for 1.1 */ where changes have been made.
+
+ o Various rewrites to streamline the code, accomidate the new
+   group options and make things easier down the road when I implement
+   incremental (partial log) processing.
+
+ o Usual README and CHANGES documentation updates.
+
+--------------------------------------------------------------------
+1.00-xx changes from 0.99-06
+--------------------------------------------------------------------
+
+Fixes:
+ o Modify record parser so that spaces in usernames (auth field)
+   don't cause record to be skipped (w/'Bad Record' message).
+
+ o Included various error conditions that were being ignored in
+   the timing statistics ('bad records' value) totals.
+
+Changes/Additions:
+ o Added GMTTime (-g) option to force display of timestamps in
+   GMT (UTC) time instead of local timezone.
+
+ o Added GroupURL (-L) option for grouping of URLs as if they
+   were a single object.  See README for details.
+
+ o Language support in the form of a language specific header
+   file containing all strings used by The Webalizer.  English
+   file is used by default unless changed.  Support for other
+   languages will be distributed as I receive them.
+
+--------------------------------------------------------------------
+0.99-xx changes from 0.98-16
+--------------------------------------------------------------------
+
+0.99 is mostly a bug-fix release, with a few added extra goodies.
+
+Fixes:
+ o Fixed monthly total transfer size (silent) overflow problem.
+
+ o Fixed the numerous fprintf format errors.  Only seemed to wreak havok
+   on non-intel machines though.
+
+ o Fixed core dump condition on certain machines when using stdin for
+   input.
+
+ o Fixed floating point code that caused divide by zero errors on some
+   platforms (most noticably on SCO OpenServer).
+
+ o Netscape server kludges:  Added code to deal with Netscape log header
+   record gracefully.  Also added workaround for timestamp error where
+   Netscape sometimes makes a day have 0-24 hours instead of 0-23.  The
+   Webalizer will now treat anything greater than 23 as 0.
+
+ o Resized some fixed field sizes to gain memory usage improvements.
+
+Changes/Additions:
+ o Ignore* config keywords added.  This allows you to completely ignore
+   certain log records based on site name, URL, user agent or referrer.
+   * Use will cause inaccurate statistics results.  See documentation.
+
+ o ReallyQuiet config keyword (-Q command line option) added.  Causes
+   The Webalizer to supress _all_ messages.  Useful for cron jobs.
+
+ o Removed the "Sites" total at the bottom of the summary by month.
+   The total for sites is a useless number and produces a misleadingly
+   high value which detracts from the accuracy of the other totals.
+
+ o Updated README and CHANGES
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..916d1f0
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,339 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+       Appendix: How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    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-1307, USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/Copyright b/Copyright
new file mode 100644 (file)
index 0000000..05f2199
--- /dev/null
+++ b/Copyright
@@ -0,0 +1,20 @@
+    webalizer - a web server log analysis program
+
+    Copyright (C) 1997-2011  Bradford L. Barrett
+
+    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, and provided that the above
+    copyright and permission notice is included with all distributed
+    copies of this or derived software.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+
diff --git a/DNS.README b/DNS.README
new file mode 100644 (file)
index 0000000..1bd7f16
--- /dev/null
@@ -0,0 +1,295 @@
+The Webalizer - A log file analysis program  -- DNS information
+
+The webalizer has the ability to perform reverse DNS lookups,  and
+fully supports both IPv4 and IPv6 addressing schemes.  This document
+attempts to explain how it works, and some things that you should be
+aware of when using the DNS lookup features.
+
+Note: The Reverse DNS feature may be enabled or disabled at compile
+      time.  DNS lookup code is enabled by default.  You can run The
+      Webalizer using the '-vV' command line options to determine what
+      options are enabled in the version you are using.
+
+
+How it works
+------------
+
+DNS lookups are made against a DNS cache file containing IP addresses
+and resolved names.  If the IP address is not found in the cache file,
+it will be left as an IP address.  In order for this to happen, a
+cache file MUST be specified when the Webalizer is run, either using
+the '-D' command line switch, or a "DNSCache" configuration file
+keyword.  If no cache file is specified, no attempts to perform DNS
+lookups will be done. The cache file can be made three different ways.
+
+1) You can have the Webalizer pre-process the specified log file at
+   run-time, creating the cache file before processing the log file
+   normally.  This is done by setting the number of DNS Children
+   processes to run, either by using the '-N' command line switch or
+   the "DNSChildren" configuration keyword.  This will cause the
+   Webalizer to spawn the specified number of processes which will
+   be used to do reverse DNS lookups.. generally, a larger number
+   of processes will result in faster resolution of the log, however
+   if set too high may cause overall system degradation.  A setting
+   of between 5 and 20 should be acceptable, and there is a maximum
+   limit of 100.   If used, a cache filename MUST be specified also,
+   using either the '-D' command line switch, or the "DNSCache"
+   configuration keyword.  Using this method, normal processing will
+   continue only after all IP addresses have been processed, and the
+   cache file is created/updated.
+
+2) You can pre-process the log file as a standalone process, creating
+   the cache file that will be used later by the Webalizer.  This is
+   done by running the Webalizer with a name of 'webazolver' (ie: the
+   name 'webazolver' is a symbolic link to 'webalizer') and specifying
+   the cache filename (either with '-D' or DNSCache).   If the number
+   of child processes is not given, the default of 5 will be used. In
+   this mode, the log will be read and processed, creating a DNS cache
+   file or updating an existing one, and the program will then exit
+   without any further processing.
+
+3) You can use The Webalizer (DNS) Cache file Manager program 'wcmgr'
+   to create and manipulate a cache file.  A blank cache file can be
+   created which would be later populated, or data for the cache file
+   can be imported using tab delimited text files.  See the wcmgr(1)
+   man page for usage information.
+
+
+Run-time DNS cache file creation/update
+---------------------------------------
+
+The creation/update of a DNS cache file at run-time occurs as follows:
+
+1) The log file is read, creating a list of all IP addresses that are
+   not already cached (or cached but expired) and need to be resolved.
+   Addresses are expired based on the TTL value specified using the
+   'CacheTTL' configuration option or after 7 days (default) if no TTL
+   is specified.
+
+2) The specified number of children processes are forked, and are used
+   to perform DNS lookups.
+
+3) Each IP address is given, one at a time, to the next available child
+   process until all IP addresses have been processed.  Each child will
+   update the cache file when a result is returned.  This may be either
+   a resolved name or a failed lookup, in which case the address will be
+   left unresolved.  Unresolved addresses are not normally cached, but
+   can be, if enabled using the 'CacheIPs' configuration file keyword.
+
+4) Once all IP addresses have been processed and the cache file updated,
+   the Webalizer will process the log normally.  Each record it finds
+   that has an unresolved IP address will be looked up in the cache file
+   to see if a hostname is available (ie: was previously found).
+
+Because there may be a significant amount of time between the initial
+unresolved IP list and normal processing, the Webalizer should not be
+run against live log files (ie: a log file that is actively being written
+to by a server), otherwise there may be additional records present that
+were not resolved.
+
+
+Stand-Alone DNS cache file creation/update
+------------------------------------------
+
+The creation/update of the DNS cache file, when run in stand-alone mode,
+occurs as follows:
+
+1) The log file is read, creating a list of all IP addresses that are
+   not already cached (or cached but expired) and need to be resolved.
+
+2) The specified number of children processes are forked, and are used
+   to perform DNS lookups. If the number of processes was not specified,
+   the default of 5 will be used.
+
+3) Each IP address is given, one at a time, to the next available child
+   process until all IP addresses have been processed.  Each child will
+   update the cache file when a result is returned.
+
+4) Once all IP addresses have been processed and the cache file updated,
+   the program will terminate without any further processing.
+
+
+Larger sites may prefer to use a stand-alone process to create the DNS
+cache file, and then run the Webalizer against the cache file.  This
+allows a single cache file to be used for many virtual hosts, and reduces
+the processing needed if many sites are being processed.  The Webalizer
+can be used in stand alone mode by running it as 'webazolver'.  When
+run in this fashion, it will only create the cache file and then exit
+without any further processing.  A cache filename MUST be specified,
+however unlike when running the Webalizer normally, the number of child
+processes does not have to be given (will default to 5).  All normal
+configuration and command line options are recognized, however, many
+of them will simply be ignored.. this allows the use of a standard
+configuration file for both normal use and stand alone use.
+
+
+Examples:
+---------
+
+webalizer -c test.conf -N 10 -D dns_cache.db /var/log/my_www_log
+
+   This will use the configuration file 'test.conf' to obtain normal
+   configuration options such as hostname and output directory.. it
+   will then either create or update the file 'dns_cache.db' in the
+   default output directory (using 10 child processes) based on the
+   IP addresses it finds in the log /var/lib/my_www_log, and then
+   process that log file normally.
+
+
+webalizer -o out -D dns_cache.db /var/log/my_www_log
+
+  This will process the log file /var/log/my_www_log, resolving IP
+  addresses from the cache file 'dns_cache.db' found in the default
+  output directory "out".  The cache file must be present as it will
+  not be created with this command.
+
+
+for i in /var/log/*/access_log; do
+  webazolver -N 20 -D /var/lib/dns_cache.db $i
+done
+
+  The above is an example of how to run through multiple log files
+  creating a single DNS cache file.. this might be typically used on
+  a larger site that has many virtual hosts, all keeping their log
+  files in a separate directory.  It will process each access_log it
+  finds in /var/log/* and create a cache file (var/lib/dns_cache.db).
+  This cache file can then be used to process the logs normally with
+  with the Webalizer in a read-only fashion (see next example).
+
+
+for i in /etc/webalizer/*.conf; do webalizer -c $i -D /etc/cache.db; done
+
+  This will process each configuration file found in /etc/webalizer,
+  using the DNS cache file /etc/cache.db.  This will also typically be
+  used on a larger site with multiple hosts..  Each configuration file
+  will specify a site specific log file, hostname, output directory, etc.
+  The cache file used will typically be created using a command similar
+  to the one previous to this example.
+
+
+Cache File Maintenance
+----------------------
+
+The Webalizer DNS cache files generally require very little or no
+special attention.  There are times though when some maintenance
+is required, such as occasional purging of very old cache entries.
+The Webalizer never removes a record once it's inserted into the
+cache.  If a record expires based on its timestamp, the next time
+that address is seen in a log, its name is looked up again and the
+timestamp is updated.  However, there will always be addresses that
+are never seen again, which will cause the cache files to continue
+to grow in size over time.  On extremely busy sites or sites that
+attract many one time visitors, the cache file may grow extremely
+large, yet only contain a small amount of valid entries.  Using
+The Webalizer (DNS) Cache file Manager ('wcmgr'), cache files can
+be purged, removing expired entries and shrinking the file size.
+A TTL (time to live) value can be specified, so the length of time
+an entry remains in the cache can be varied depending on individual
+site requirements.  In addition to purging cache files, 'wcmgr' can
+also be used to list cache file contents, import/export cache data,
+lookup/add/delete individual entries and gather overall statistics
+regarding the cache file (number of records, number expired, etc..).
+
+To purge a cache file using 'wcmgr', an example command would be:
+
+wcmgr -p31 /path/to/dns.cache
+
+This would purge the 'dns.cache' cache file of any records that are
+over 31 days old, and would reclaim the space that those records
+were using in the file.  If you would like to see the records that
+get purged, adding the command line option '-v' (verbose) will cause
+the program to print each entry and its age as they are removed.
+You can also use the 'wcmgr' to display statistics on cache files
+to aid in determining when a cache file should be purged.  See the
+'wcmgr' man page (wcmgr.1) for additional information on the various
+options available.
+
+
+Stupid Cache Tricks
+-------------------
+
+The DNS cache files used by The Webalizer allow for efficient IP address
+to name translations.  Resolved names are normally generated by using an
+existing DNS name server to query the address, either locally or over
+the Internet.  However, using The Webalizer (DNS) Cache file Manager,
+almost any IP address to Name translation can be included in the cache.
+One such example would be for mapping local network addresses to real
+names, even though those addresses may not have real DNS entries on the
+network (or may be 'local' addresses prohibited from use on the Internet).
+A simple tab delimited text file can be created and imported into a cache
+for use by The Webalizer,  which will then be used to convert the local
+IP addresses to real names.  Additional configuration options for The
+Webalizer can then be used as would be normally.  For example, consider
+a small business with 10 computers and a DSL router to the Internet.
+Each machine on the local network would use a private IP address that
+would not be resolved using an external (public) DNS server, so would
+always be reported by The Webalizer as 'unknown/unresolved'.  A simple
+cache file could be created to map those unresolved addresses into more
+meaningful names, which could then be further processed by the Webalizer.
+An example might look something like:
+
+# Local machines
+192.168.123.254        0       0       gw.widgetsareus.lan
+192.168.123.253        0       0       mail.widgetsareus.lan
+192.168.123.250        0       0       sales.widgetsareus.lan
+192.168.123.240        0       0       service.widgetsareus.lan
+192.168.123.237        0       0       mgr.widgetsareus.lan
+192.168.123.235        0       0       support1.widgetsareus.lan
+192.168.123.234        0       0       support2.widgetsareus.lan
+192.168.123.232        0       0       pres.widgetsareus.lan
+192.168.123.230        0       0       vp.widgetsareus.lan
+192.168.123.225        0       0       reception.widgetsareus.lan
+192.168.123.224        0       0       finance.widgetsareus.lan
+127.0.0.1      0       1       127.0.0.1
+
+
+There are a couple of things here that should be noted.  The first
+is that the timestamps (first zero on each line above) are set to
+zero.  This tells The Webalizer that these cached entries are to
+be considered 'permanent', and should never be expired (infinite
+TTL or time to live).  The second thing to note is that the resolved
+names are using a non-standard TLD (top level domain) of '.lan'.
+The Webalizer will map this special TLD to mean "Local Network" in
+its reports, which allows local traffic to be grouped separately
+from normal Internet traffic.  Lastly, you may notice that the
+last line of the file contains an entry with the same IP address
+where a name should be.  This entry will prevent the Webalizer
+from ever trying to lookup 127.0.0.1,  which is the 'localhost'
+address, when it is found in a log.  The second number after the IP
+address (1) tells the Webalizer that it is an unresolved entry, not
+a resolved hostname (ie: has no name).  Entries such as this one can
+be used to reduce DNS lookups on addresses that are known not to
+resolve.
+
+
+Considerations
+--------------
+
+Processing of live log files is discouraged, as the chances of log records
+being written between the time of DNS resolution and normal processing will
+cause problems.
+
+If you are using STDIN for the input stream (log file) and have run-time
+DNS cache file creation/update enabled.. the program will exit after the
+cache file has been created/updated and no output will be produced.  If
+you must use STDIN for the input log, you will need to process the stream
+twice, once to create/update the cache file, and again to produce the
+reports.  The reason for this is that stream inputs from STDIN cannot
+be 'rewound' to the beginning like files can, so must be given twice.
+
+Cached DNS addresses have a default TTL (time to live) of 7 days.  This
+may now be changed using the CacheTTL config file keyword to any value
+from 1 to 100 (days).  You may also now specify if unresolved addresses
+should be stored in the DNS cache.  Normally, unresolved IP addresses
+are NOT saved in the cache and are looked up each time the program is
+run.
+
+There is an absolute maximum of 100 child processes that may be created,
+however the actual number of children should be significantly less than
+the maximum.. typical usage should be between 5 and 20.
+
+Special thanks to Henning P. Schmiedehausen <hps@tanstaafl.de> for the
+original dns-resolver code he submitted,  which was the basis for this
+implementation.  Also thanks to Jose Carlos Medeiros for the inital IPv6
+support code.
+
diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..81c35ff
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,340 @@
+Installation instructions for The Webalizer
+
+The Webalizer is distributed in either source or binary distributions,
+and installation is different for each type.  Regardless of the type
+of installation, you need to obtain and un-tar/un-zip the distribution.
+For binary distributions, you should create a directory somewhere and
+chdir to it before unpacking the file.  Source distributions will
+automagically create a directory for you (webalizer-x.xx-xx).  If you
+are upgrading from a previous version, check the CHANGES file, and the
+README.FIRST file for important upgrade information.
+
+
+For Binary distributions
+------------------------
+
+You should have all the files you need in the directory you created
+when you un-tarred/un-zipped the distribution file.  The file
+'webalizer' in this directory is the binary executable.  Copy this
+someplace useful, like /usr/local/bin or /usr/bin.  A man page for
+The Webalizer is also supplied... If desired, copy the file
+'webalizer.1' to your local man directory (ie: /usr/local/man/man1).
+(You may also need to run 'makeinfo' or similar)
+
+Note: There may also be platform specific installation instructions
+      and/or usage notes supplied with the binary distribution.  You
+      should read them, as that will be your starting point if problems
+      are encountered.  Most of the binary distributions are submitted
+      by users, and I cannot support them the same way I can the
+      Linux binary distribution and the source code itself.
+
+
+For Source distributions
+------------------------
+
+The Webalizer requires, at a minimum, the GD graphics library
+(http://www.libgd.org/), the PNG (portable network graphics)
+graphics library ( http://www.libpng.org/pub/png/ ), the Zlib
+compression library ( http://www.zlib.net/ ) and associated
+header files for these libraries.  Most modern systems will have
+these libraries, but may or may not have the required header files
+for them unless you installed the 'dev' (development) versions
+(which include the required header files along with the libraries).
+Consult your systems documentation for specifics.
+
+For native DNS and Geolocation (GeoDB) support, the Berkeley DB
+library (by sleepycat, now owned by Oracle) v4.1 or higher and
+associated header file is required.
+http://www.oracle.com/technology/products/berkeley-db/
+
+For BZip2 support, the bzip2 compression library and header file is
+required. http://www.bzip.org/ 
+
+For GeoIP geolocation support, the GeoIP library (by MaxMind, Inc.)
+and header file is required, along with a Country Edition database.
+http://www.maxmind.com/app/ip-location
+
+
+New style build:
+
+The Webalizer source distribution now comes packaged with a GNU
+autoconf 'configure' script, which should allow you to simply type:
+
+./configure
+make
+make install
+
+Normal configure options apply, type ./configure --help to get a
+complete list.  A few options in particular may be useful:
+
+--sysconfdir=/etc
+
+The sysconfdir switch specifies where the default configuration
+file (webalizer.conf) should be looked for.  If not specified, the
+default of ${prefix}/etc is used.
+
+--with-language=<language>
+
+Allows you to specify the language to use.  Check the /lang directory
+to see the available language choices.  As an example, you could use
+
+./configure --with-language=french
+
+to compile the program using french (webalizer_lang.french) for output.
+You can also use the --without-language switch, which will use the
+default language (english).
+
+--enable-dns
+
+DNS lookup and native geolocation features are added if the required
+library (libdb) and header file (db.h) are found.  DNS/GeoDB code is
+enabled at compile time by using the -DUSE_DNS compiler switch.  For
+GeoDB lookups, a current geodb database is also required (available
+at ftp://ftp.mrunix.net/pub/webalizer/geodb).
+
+--with-geodb=<path>
+
+The default location for the GeoDB database is /usr/share/GeoDB but
+may be changed using this option.
+
+--enable-bz2
+
+BZip2 compression support will be added if the required library
+(libbz2) and header file (bzlib.h) are found.  BZip2 code is
+enabled at compile time using the -DUSE_BZIP compiler switch.
+
+--enable-geoip
+
+GeoIP geolocation support will be added if the required library
+(libGeoIP) and header file (GeoIP.h) are found.  No attempt is
+made to locate a valid Country Edition database, which is also
+required for GeoIP lookups to be performed.  GeoIP code is
+enabled at compile time using the -DUSE_GEOIP compiler switch.
+
+Some systems may require unusual settings that the configure script
+cannot determine.  You can pass values to the script by setting
+environment variables.  For example:
+
+CC=c89 CFLAGS=-O LIBS=-lposix ./configure --with-language=german
+
+Would allow you to set the compiler (c89) and various flags and
+libraries to use, which would then be passed to the configure script
+and eventually to the Makefile generated.  It also will cause the
+program to be compiled using German instead of the English default.
+Additionally, the various --with-<package> and --with-<packagelib>
+options allow specification of non-standard locations for the
+various libraries and headers.  For example, if you built the bzip2
+library in /src/bzip2, you could use:
+
+./configure --with-bz2=/src/bzip2 --with-bz2lib=/src/bzip2 --enable-bz2
+
+to specify where the bz2 header files (--with-bz2) and library
+(--with-bz2lib) are located.  They should then be detected by
+the configure script and enabled.  Please note that if you are
+linking against a shared library (ie: libbz2.so), then even though
+configure script finds the library, and The Webalizer compiles
+successfully, the program may FAIL when run because the systems
+run-time linking loader cannot find the library.  If this happens,
+then you need to tell the loader where the library is, and is
+dependent upon what type system is being used.  Some platforms
+require the path to the library to be placed in the LD_LIBRARY_PATH
+environment variable.. some (such as linux based platforms) use
+the ld.so.conf file and ldconfig program to configure the dynamic
+linker run-time bindings.  Consult the documentation for your
+system specific requirements.
+
+For package maintainers, the environment variable DESTDIR can be
+used to specify a root directory for installation.  This is the
+top level directory under which all other directories will be
+placed when 'make install' is invoked, and allows binary packages
+to be easily built outside the normal root directory tree.  For
+example, if you wish to build a binary package of The Webalizer
+under the /usr/pkg/webalizer-2.20 directory, you could type:
+
+make install DESTDIR=/usr/pkg/webalizer-2.20
+
+Which would then create the following directory tree:
+
+/usr/pkg/webalizer-2.20/
+/usr/pkg/webalizer-2.20/etc/
+/usr/pkg/webalizer-2.20/etc/webalizer.conf.sample
+/usr/pkg/webalizer-2.20/usr/
+/usr/pkg/webalizer-2.20/usr/bin/
+/usr/pkg/webalizer-2.20/usr/bin/webalizer
+/usr/pkg/webalizer-2.20/usr/bin/webazolver -> webalizer
+/usr/pkg/webalizer-2.20/usr/bin/wcmgr
+/usr/pkg/webalizer-2.20/usr/man/
+/usr/pkg/webalizer-2.20/usr/man/man1/
+/usr/pkg/webalizer-2.20/usr/man/man1/webalizer.1
+/usr/pkg/webalizer-2.20/usr/man/man1/webazolver.1 -> webalizer.1
+/usr/pkg/webalizer-2.20/usr/man/man1/wcmgr.1
+
+
+If the configure script doesn't work for you.. please let me know
+(along with relevant info like system type, compiler, etc..)  If you
+are able and can tweak something to make it work, let me know as well.
+
+
+Old style build:
+
+If you have a platform that the configure script won't work on, or
+some other situation where you have to configure and build the
+source yourself,  the file 'Makefile.std' is a "stock" Makefile
+that you can use to build the Webalizer.  Copy or rename the file
+to 'Makefile', edit to match your system, and do the usual 'make'.
+This is a very generic Makefile, so expect to have to tweak it for
+your particular platform and configuration.  If everything seems
+to have gone well, next type 'make install' to do a stock install.
+Again, you may want to tweak the Makefile for the install, or
+skip the 'make install' step completely (see below).
+
+This will install the Webalizer on your system, and put a sample
+configuration file in /etc (named 'webalizer.conf.sample').  If
+you don't want to use the 'make install' method... just copy the
+file 'webalizer' to someplace useful, and you are ready to go :)
+
+
+Usage
+-----
+
+When run, The Webalizer will read the specified log file and
+produce HTML output in the directory specified (or current
+directory if none).  You may specify various configuration
+options either on the command line or in a configuration file.
+The format of the command line is:
+
+webalizer [options] [log_file]
+
+Where 'options' may be any of the valid command line options
+described in the README file.  If a log filename is not given,
+input is taken from stdin.  A typical command line might look
+something similar to:
+
+webalizer /var/lib/httpd/logs/access_log
+
+This will produce output in the current directory based on the
+logfile /var/lib/httpd/logs/access_log.  Another example:
+
+webalizer -c somehost.conf
+
+This will read the configuration file somehost.conf, which
+should specify, among other things, the log filename and
+output directory to use.  You can use 'webalizer -h' to get
+a list of available command line options, or view the file
+README for complete instructions on all available configuration
+options.  You should note that The Webalizer will _always_
+look for a configuration file named 'webalizer.conf' in either
+the current directory or in /etc/, and will process that file
+_before_ any other configuration or command line options.  If
+you run a single server, you may want to create a default
+configuration file and place it in the /etc/ directory.  This
+will allow you to simply type 'webalizer' without the need to
+specify additional command line options.
+
+
+Configuration
+-------------
+
+The Webalizer can be customized in many ways using either the
+command line or configuration files.  To test The Webalizer,
+type: 'webalizer /var/lib/httpd/logs/access_log', changing the
+directory to wherever your log files are.  After processing,
+you should have the output and a file named index.html which
+can be viewed with any browser.  The Webalizer can accept many
+command line options as well, type 'webalizer -h' to view them.
+In addition to the command line options, The Webalizer can
+be customized using configuration files. There is a sample.conf
+file that is part of both the source and binary distributions
+that can be used as a 'template' for creating your own site
+configuration file.  Just make a copy of the file and name it
+something like 'mysite.conf'.  Edit the new file to match your
+particular setup and taste.
+
+To test the new configuration file, type 'webalizer -c mysite.conf'
+(or whatever your configuration file is named).  Fire up the
+browser and look at the results.  If you rename your new
+configuration file to 'webalizer.conf', you will only need
+to type 'webalizer', and The Webalizer will use it as the
+default.  See the README file for more on configuration and
+use of configuration files.
+
+
+Language Support
+----------------
+
+Language support is provided as language specific header
+files that must be compiled into the program.  If you don't
+have the source code, get it.  If you can't compile the
+program yourself, ask a friend.  The /lang/ directory of
+the distribution contains all supported languages at the
+time of release.  Additional/updated language files will
+be found at ftp://ftp.webalizer.org/pub/webalizer/lang and
+are always the most current versions.
+
+To build with language support, use the --with-language
+option of the configure script.  This will automagically
+do for you the steps described below.  If you can't use
+the configure script, you can manually select the language
+file to use.
+
+In the webalizer source directory, you will find a symbolic
+link for the file webalizer_lang.h, and it will be pointing
+to the file webalizer_lang.english which is the default.
+Delete the link (ie: rm webalizer_lang.h) and create a new
+one to the language file you want The Webalizer to use
+(ie: ln -s lang/webalizer_lang.spanish webalizer_lang.h)
+and re-compile the program.
+
+Note: The source distribution of The Webalizer contains all
+      language support files that were available at the time.
+      Additional/updated language files can be found at:
+      ftp://ftp.webalizer.org/pub/webalizer/lang where I will
+      put them as I receive them.
+
+
+Common Questions
+----------------
+
+Q: Will it run on [some platform]
+A: If it is a *nix platform, it should without a problem.  If it's
+   something different, probably not and your on your own if you
+   want to try to make it work.
+
+Q: When I compile, I get "file not found" errors?
+A: Most likely, the compiler cant find the header files for one
+   the required libraries.  If they are someplace other than the
+   standard locations (ie: /usr/include), then you  probably need
+   to specify an alternate location to look using one of the
+   --with-<package> command line switches when you run configure,
+   or edit the Makefile and specify the location with an '-I<path>'
+   compiler flag.
+
+Q: I get "libgd not found' errors?
+A: You don't have the GD graphics located in a standard library
+   path, or you don't have the GD graphics library at all.  If
+   the later, go to http://www.boutell.com/gd/ and grab a copy.
+   If you do have it, add a -L switch in the Makefile to point
+   to the proper location.
+
+Q: I get unresolved symbol errors when compiling, why?
+A: This most often occurs when the GD library was built with
+   additional support for such things as TrueType fonts or
+   X11 graphics.  The configure script for The Webalizer only
+   checks that the gd library is available, and does not check
+   any other dependencies it may have.  Typically, to fix this
+   problem, you need to edit the Makefile and add the dependent
+   libraries to a compiler switch (or pass them on the command
+   line when running the configure script).  For example, if
+   you are getting errors about not finding truetype routines,
+   you may need to add '-lttf' (for 'libttf', the truetype library)
+   to the "LIBS" variable.
+
+   Hint: I usually find it easier to just grab the GD library
+         source, and compile it myself locally as a static
+         library, in a directory just above where I compile The
+         Webalizer.  Then, at configure time, just add the
+         '-with-gd=../gd' and '--with-gdlib=../gd' switches,
+         and the GD graphic stuff will be statically linked into
+         The Webalizer, eliminating any other library dependencies
+         that the normal, shared library on my system may have.
+
diff --git a/Makefile.in b/Makefile.in
new file mode 100644 (file)
index 0000000..1efc703
--- /dev/null
@@ -0,0 +1,116 @@
+#
+# Makefile for webalizer - a web server log analysis program
+#
+# Copyright (C) 1997-2011  Bradford L. Barrett
+#
+# 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, and provided that the above
+# copyright and permission notice is included with all distributed
+# copies of this or derived software.
+#
+# 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 (file "COPYING").
+#
+
+prefix          = @prefix@
+exec_prefix     = @exec_prefix@
+datadir         = @datarootdir@
+
+BINDIR          = @bindir@
+MANDIR          = ${datadir}/man/man1
+ETCDIR          = @sysconfdir@
+GEODB           = @GEODB_LOC@
+CC              = @CC@
+CFLAGS          = @CFLAGS@ @CPPFLAGS@
+LIBS            = @LIBS@
+WCMGR_LIBS      = @WCMGR_LIBS@
+DEFS            = -DETCDIR=\"${ETCDIR}\" -DGEODB_LOC=\"${GEODB}\" @DEFS@ @OPTS@
+LDFLAGS         = @LDFLAGS@
+INSTALL         = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA    = @INSTALL_DATA@
+DEFLANG         = @DEFAULT_LANG@
+
+# Shouldn't have to touch below here!
+
+all: webalizer wcmgr
+
+webalizer:     webalizer.o webalizer.h hashtab.o hashtab.h  \
+               linklist.o linklist.h preserve.o preserve.h  \
+                dns_resolv.o dns_resolv.h parser.o parser.h  \
+                output.o output.h graphs.o graphs.h lang.h   \
+               webalizer_lang.h
+       $(CC) ${LDFLAGS} -o webalizer webalizer.o hashtab.o linklist.o preserve.o parser.o output.o dns_resolv.o graphs.o ${LIBS}
+       rm -f webazolver
+       @LN_S@ webalizer webazolver
+
+webalizer.o:   webalizer.c webalizer.h parser.h output.h preserve.h \
+               graphs.h dns_resolv.h webalizer_lang.h
+       $(CC) ${CFLAGS} ${DEFS} -c webalizer.c
+
+parser.o:      parser.c parser.h webalizer.h lang.h
+       $(CC) ${CFLAGS} ${DEFS} -c parser.c
+
+hashtab.o:     hashtab.c hashtab.h dns_resolv.h webalizer.h lang.h
+       $(CC) ${CFLAGS} ${DEFS} -c hashtab.c
+
+linklist.o:    linklist.c linklist.h webalizer.h lang.h
+       $(CC) ${CFLAGS} ${DEFS} -c linklist.c
+
+output.o:      output.c output.h webalizer.h preserve.h \
+               hashtab.h graphs.h lang.h
+       $(CC) ${CFLAGS} ${DEFS} -c output.c
+
+preserve.o:    preserve.c preserve.h webalizer.h parser.h   \
+               hashtab.h graphs.h lang.h
+       $(CC) ${CFLAGS} ${DEFS} -c preserve.c
+
+dns_resolv.o:  dns_resolv.c dns_resolv.h lang.h webalizer.h
+       $(CC) ${CFLAGS} ${DEFS} -c dns_resolv.c
+
+graphs.o:      graphs.c graphs.h webalizer.h lang.h
+       $(CC) ${CFLAGS} ${DEFS} -c graphs.c
+
+wcmgr: wcmgr.o
+       $(CC) ${LDFLAGS} -o wcmgr wcmgr.o ${WCMGR_LIBS} 
+
+wcmgr.o:       wcmgr.c
+       $(CC) ${CFLAGS} ${DEFS} -c wcmgr.c
+
+clean:
+       rm -f webalizer webazolver wcmgr *.o usage*.png daily*.png hourly*.png
+       rm -f ctry*.png *.html *.hist *.current core *.gif
+
+distclean: clean
+       rm -f webalizer.conf *.tar *.tgz *.Z *.tar.gz
+       rm -f Makefile webalizer_lang.h config.cache config.log config.status
+       @LN_S@ lang/webalizer_lang.@DEFAULT_LANG@ webalizer_lang.h
+
+install: all
+       mkdir -p ${DESTDIR}${BINDIR}
+       mkdir -p ${DESTDIR}${MANDIR}
+       mkdir -p ${DESTDIR}${ETCDIR}
+       $(INSTALL_PROGRAM) webalizer ${DESTDIR}${BINDIR}/webalizer
+       $(INSTALL_PROGRAM) wcmgr ${DESTDIR}${BINDIR}/wcmgr
+       rm -f ${DESTDIR}${BINDIR}/webazolver
+       @LN_S@ webalizer ${DESTDIR}${BINDIR}/webazolver
+       $(INSTALL_DATA) webalizer.1 ${DESTDIR}${MANDIR}/webalizer.1
+       $(INSTALL_DATA) wcmgr.1 ${DESTDIR}${MANDIR}/wcmgr.1
+       rm -f ${DESTDIR}${MANDIR}/webazolver.1
+       @LN_S@ webalizer.1 ${DESTDIR}${MANDIR}/webazolver.1
+       $(INSTALL_DATA) sample.conf ${DESTDIR}${ETCDIR}/webalizer.conf.sample
+
+uninstall:
+       rm -f ${DESTDIR}${BINDIR}/webalizer
+       rm -f ${DESTDIR}${BINDIR}/webazolver
+       rm -f ${DESTDIR}${BINDIR}/wcmgr
+       rm -f ${DESTDIR}${MANDIR}/webalizer.1
+       rm -f ${DESTDIR}${MANDIR}/webazolver.1
+       rm -f ${DESTDIR}${MANDIR}/wcmgr.1
+       rm -f ${DESTDIR}${ETCDIR}/webalizer.conf.sample
+       rm -f webalizer_lang.h
+       @LN_S@ lang/webalizer_lang.${DEFLANG} webalizer_lang.h
diff --git a/Makefile.std b/Makefile.std
new file mode 100644 (file)
index 0000000..daa0c4a
--- /dev/null
@@ -0,0 +1,140 @@
+#
+# Makefile for webalizer - a web server logfile analysis thingie
+#
+# (c)1997-2011 by Bradford L. Barrett
+# Distributed under the GNU GPL. See "README" and "Copyright"
+# files supplied with this distribution for more information.
+#
+# This works on my Linux and Solaris systems, and should work
+# out of the box on other GCC based systems.  Tweek the values
+# below for your environment if needed before running make.
+#
+
+# Use these for SCO (and maybe others)
+#BINDIR = /usr/bin
+#MANDIR = /usr/man/man1
+#ETCDIR = /etc
+#CC     = cc
+#CFLAGS = -b elf
+#LDFLAGS= -L../usr/local/lib
+#LIBS   = -lgd -lm -lpng -lz
+#DEFS    = -DETCDIR=\"${ETCDIR}\" -DHAVE_MATH_H
+
+# These will build The Webalizer with DNS support
+# on my Linux system.  GD is statically built and
+# is located in the ../gd directory.  This system
+# also has a stock install of the berkeley db lib
+# (libdb in /usr/lib and db.h in /usr/include).
+
+BINDIR = /usr/local/bin
+MANDIR = /usr/local/man/man1
+ETCDIR = /etc
+CC     = gcc
+CFLAGS = -Wall -O2 -I../gd
+LDFLAGS= -L/usr/local/lib -L../gd
+LIBS   = -lgd -lpng -lz -lm -ldb
+DEFS   = -DETCDIR=\"${ETCDIR}\" -DHAVE_MATH_H -DUSE_DNS
+
+# Some might need this instead (Solaris?!?)
+#LIBS   = -lgd -lpng -lz -lm -ldb -lnsl -lsocket -lrt
+
+# if you want to use a different default directory for the
+# GeoDB database, add this to DEFS: -DGEODB_LOC=\"/usr/share/GeoDB\"
+
+# if you have header files in a non-standard place, you
+# should specify them on the CFLAGS line, like:
+
+#CFLAGS = -Wall -O2 -I../gd -I/src/bzip2
+
+# similar with library locations. add non-standard paths
+# using the LDFLAGS variable, like this:
+
+#LDFLAGS = -L/usr/local/lib -L/src/bzip2
+
+# If your GD lib was compiled with X/truetype, you may need
+# to use this or some variation of it:
+
+#LIBS   = -lgd -lpng -lz -lm -ldb -lX11 -lXpm -lttf
+
+# If you want bzip2 support, you need to define USE_BZIP
+# and add the bz2 library like below:
+
+#LIBS   = -lgd -lpng -lz -lm -lbz2
+#DEFS   = -DETCDIR=\"${ETCDIR}\" -DHAVE_MATH_H -DUSE_BZIP
+
+# GeoIP support?  You need USE_GEOIP and -lGeoIP
+
+#LIBS   = -lgd -lpng -lz -lm -lGeoIP
+#DEFS   = -DETCDIR=\"${ETCDIR}\" -DHAVE_MATH_H -DUSE_GEOIP
+
+# want it all?!? Give this a whirl:
+
+#LIBS   = -lgd -lpng -lz -lm -lGeoIP -lbz2 -ldb
+#DEFS   = -DETCDIR=\"${ETCDIR}\" -DHAVE_MATH_H -DUSE_GEOIP -DUSE_DNS -DUSE_BZIP
+
+# Shouldn't have to touch below here!
+
+all: webalizer wcmgr
+
+webalizer:     webalizer.o webalizer.h hashtab.o hashtab.h  \
+               linklist.o linklist.h preserve.o preserve.h  \
+                dns_resolv.o dns_resolv.h parser.o parser.h  \
+                output.o output.h graphs.o graphs.h lang.h   \
+               webalizer_lang.h
+       $(CC) ${LDFLAGS} -o webalizer webalizer.o hashtab.o linklist.o preserve.o parser.o output.o dns_resolv.o graphs.o ${LIBS}
+       rm -f webazolver
+       ln -s webalizer webazolver
+        rm -f webazolver.1
+        ln -s webalizer.1 webazolver.1
+
+webalizer.o:   webalizer.c webalizer.h parser.h output.h preserve.h \
+               graphs.h dns_resolv.h webalizer_lang.h
+       $(CC) ${CFLAGS} ${DEFS} -c webalizer.c
+
+parser.o:      parser.c parser.h webalizer.h lang.h
+       $(CC) ${CFLAGS} ${DEFS} -c parser.c
+
+hashtab.o:     hashtab.c hashtab.h dns_resolv.h webalizer.h lang.h
+       $(CC) ${CFLAGS} ${DEFS} -c hashtab.c
+
+linklist.o:    linklist.c linklist.h webalizer.h lang.h
+       $(CC) ${CFLAGS} ${DEFS} -c linklist.c
+
+output.o:      output.c output.h webalizer.h preserve.h \
+               hashtab.h graphs.h lang.h
+       $(CC) ${CFLAGS} ${DEFS} -c output.c
+
+preserve.o:    preserve.c preserve.h webalizer.h parser.h   \
+               hashtab.h graphs.h lang.h
+       $(CC) ${CFLAGS} ${DEFS} -c preserve.c
+
+dns_resolv.o:  dns_resolv.c dns_resolv.h lang.h webalizer.h
+       $(CC) ${CFLAGS} ${DEFS} -c dns_resolv.c
+
+graphs.o:      graphs.c graphs.h webalizer.h lang.h
+       $(CC) ${CFLAGS} ${DEFS} -c graphs.c
+
+wcmgr: wcmgr.o
+       $(CC) ${LDFLAGS} -o wcmgr wcmgr.o ${LIBS}
+
+wcmgr.o:       wcmgr.c webalizer.h
+       $(CC) ${CFLAGS} ${DEFS} -c wcmgr.c
+
+clean:
+       rm -f webalizer *.o usage*.png daily*.png hourly*.png ctry*.png
+       rm -f *.html *.hist *.current core *.gif
+
+distclean: clean
+       rm -f webalizer.conf *.tar *.tgz *.Z *.tar.gz
+       rm -f Makefile webalizer_lang.h config.cache config.log config.status
+       ln -s lang/webalizer_lang.english webalizer_lang.h
+
+install: all
+       cp webalizer.1 ${MANDIR}/webalizer.1
+       cp webalizer   ${BINDIR}/webalizer
+       cp sample.conf ${ETCDIR}/webalizer.conf.sample
+
+uninstall:
+       rm -f ${MANDIR}/webalizer.1
+       rm -f ${BINDIR}/webalizer
+       rm -f ${BINDIR}/webalizer.conf.sample
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..14a3a24
--- /dev/null
+++ b/README
@@ -0,0 +1,1949 @@
+The Webalizer - A web server log file analysis tool
+Copyright 1997-2011 by Bradford L. Barrett
+
+Distributed under the GNU GPL.  See the files "COPYING" and
+"Copyright" supplied with the distribution for additional info.
+
+
+What is The Webalizer?
+----------------------
+
+The Webalizer is a web server log file analysis program which produces
+usage statistics in HTML format for viewing with a browser.  The results
+are presented in both columnar and graphical format, which facilitates
+interpretation.  Yearly, monthly, daily and hourly usage statistics are
+presented, along with the ability to display usage by site, URL, referrer,
+user agent (browser), search string, entry/exit page, username and country
+(some information is only available if supported and present in the log
+files being processed).  Processed data may also be exported into most
+database and spreadsheet programs that support tab delimited data formats.
+
+The Webalizer supports CLF (common log format) log files, as well as
+Combined log formats as defined by NCSA and others, and variations
+of these which it attempts to handle intelligently.  In addition, The
+Webalizer supports wu-ftpd xferlog (FTP) formatted logs, squid proxy logs
+and W3C extended format logs.
+
+Gzip compressed logs may be used as input directly.   Any log filename
+that ends with a '.gz' extension will be assumed to be in gzip format and
+uncompressed on the fly as it is being read.  The Webalizer now also has
+the ability to handle BZip2 compressed logs, if enabled at compile time.
+Similar to gzipped logs, any log filename that ends with a '.bz2' will be
+assumed to be in bzip2 format and uncompressed on the fly as it is being
+read.
+
+For sites that do not enable hostname lookups (DNS resolution) on their
+web servers (and have only IP addresses in their logs), The Webalizer
+provides its own internal DNS lookup capability as well as geolocation
+services (GeoDB).  The optional GeoIP library from MaxMind Inc. is also
+supported and may be used instead of the native GeoDB database.
+
+A utility program, "The Webalizer (DNS) Cache file Manager", or 'wcmgr'
+is also provided which allows the creation and manipulation of the DNS
+cache files used and produced by the webalizer.  See the file DNS.README
+for additional information regarding DNS support.
+
+This documentation applies to The Webalizer Version 2.21
+
+Running the Webalizer
+---------------------
+
+The Webalizer was designed to be run from a Unix command line prompt or
+as a cron job.  There are several command line options which will modify
+the results it produces, and configuration files can be used as well.
+The format of the command line is:
+
+webalizer [options ...] [log-file]
+
+Where 'options' can be one or more of the supported command line
+switches described below.  'log-file' is the name of the log file
+to process (see below for more detailed information).  If a dash
+("-") is specified for the log-file name, STDIN will be used.
+
+
+Once executed, the general flow of the program follows:
+
+o A default configuration file is scanned for.  A file named
+  'webalizer.conf' is searched for in the current directory, and if
+  found, its configuration data is parsed.  If the file is not
+  present in the current directory,  the file '/etc/webalizer.conf'
+  is searched for and, if found, is used instead.
+
+o Any command line arguments given to the program are parsed.  This
+  may include the specification of a configuration file, which is
+  processed at the time it is encountered.
+
+o If a log file was specified, it is opened and made ready for
+  processing.  If no log file was given, or the filename '-' is
+  specified on the command line, STDIN is used for input.
+
+o If an output directory was specified, the program does a 'chdir' to
+  that directory in preparation for generating output.  If no output
+  directory was given, the current directory is used.
+
+o If a non-zero number of DNS Children processes were specified, they
+  will be started, and the specified log file will be processed,
+  either creating or updating the specified DNS cache file.
+
+o If no hostname was given, the program attempts to get the hostname
+  using a uname system call.  If that fails, 'localhost' is used.
+
+o A history file is searched for.  This file keeps previous month
+  totals used on the main index.html page.  The default file is
+  named 'webalizer.hist', kept in the specified output directory,
+  however may be changed using the "HistoryName" configuration file
+  keyword.
+
+o If incremental processing was specified, a data file is searched for
+  and loaded if found, containing the 'internal state' data of the
+  program at the end of a previous run.  The default file is named
+  'webalizer.current', kept in the specified output directory, however
+  may be changed using the "IncrementalName" configuration file keyword.
+
+o Main processing begins on the log file.  If the log spans multiple
+  months, a separate HTML document is created for each month.
+
+o After main processing, the main 'index.html' page is created, which
+  has totals by month and links to each months HTML document.
+
+o A new history file is saved to disk, which includes totals generated
+  by The Webalizer during the current run.
+
+o If incremental processing was specified, a data file is written that
+  contains the 'internal state' data at the end of this run.
+
+
+Incremental Processing
+----------------------
+
+Version 1.2x of The Webalizer adds incremental run capability.  Simply
+put, this allows processing large log files by breaking them up into
+smaller pieces, and processing these pieces instead.  What this means
+in real terms is that you can now rotate your log files as often as you
+want, and still be able to produce monthly usage statistics without the
+loss of any detail.  This is accomplished by saving and restoring all
+relevant internal data to a disk file between runs.  Doing so allows the
+program to 'start where it left off' so to speak, and allows the
+preservation of detail from one run to the next.
+
+Some special precautions need to be taken when using the incremental
+run capability of The Webalizer.  Configuration options should not be
+changed between runs, as that could cause corruption of the internal
+stored data.  For example, changing the MangleAgents level will cause
+different representations of user agents to be stored, producing invalid
+results in the user agents section of the report.  If you need to change
+configuration options, do it at the end of the month after normal
+processing of the previous month and before processing the current month.
+You may also want to delete the 'webalizer.current' file as well (or
+whatever name was specified using the "IncrementalName" configuration
+option).
+
+The Webalizer also attempts to prevent data duplication by keeping
+track of the timestamp of the last record processed.  This timestamp
+is then compared to current records being processed, and any records
+that were logged previous to that timestamp are ignored.  This, in
+theory, should allow you to re-process logs that have already been
+processed, or process logs that contain a mix of processed/not yet
+processed records, and not produce duplication of statistics.  The
+only time this may break is if you have duplicate timestamps in two
+separate log files... any records in the second log file that do have
+the same timestamp as the last record in the previous log file processed,
+will be discarded as if they had already been processed.  There are
+lots of ways to prevent this however, for example, stopping the web
+server before rotating logs will prevent this situation.  This setup
+also necessitates that you always process logs in chronological order,
+otherwise data loss will occur as a result of the timestamp compare.
+
+
+Output Produced
+---------------
+
+The Webalizer produces several reports (html) and graphics for each
+month processed.  In addition, a summary page is generated for the
+current and previous months (up to 12), a history file is created
+and if incremental mode is used, the current month's processed data.
+The exact location and names of these files can be changed using
+configuration files and command line options.  The files produced,
+(default names) are:
+
+index.html              - Main summary page (extension may be changed)
+usage.png               - Yearly graph displayed on the main index page
+usage_YYYYMM.html       - Monthly summary page (extension may be changed)
+usage_YYYYMM.png        - Monthly usage graph for specified month/year
+daily_usage_YYYYMM.png  - Daily usage graph for specified month/year
+hourly_usage_YYYYMM.png - Hourly usage graph for specified month/year
+site_YYYYMM.html        - All sites listing (if enabled)
+url_YYYYMM.html         - All urls listing (if enabled)
+ref_YYYYMM.html         - All referrers listing (if enabled)
+agent_YYYYMM.html       - All user agents listing (if enabled)
+search_YYYYMM.html      - All search strings listing (if enabled)
+webalizer.hist          - Previous month history (may be changed)
+webalizer.current       - Incremental Data (may be changed)
+site_YYYYMM.tab         - tab delimited sites file
+url_YYYYMM.tab          - tab delimited urls file
+ref_YYYYMM.tab          - tab delimited referrers file
+agent_YYYYMM.tab        - tab delimited user agents file
+user_YYYYMM.tab         - tab delimited usernames file
+search_YYYYMM.tab       - tab delimited search string file
+
+The yearly (index) report shows statistics for a 12 month period, and
+links to each month.  The monthly report has detailed statistics for
+that month with additional links to any URLs and referrers found.
+The various totals shown are explained below.
+
+Hits
+
+  Any request made to the server which is logged, is considered a 'hit'.
+The requests can be for anything... html pages, graphic images, audio
+files, CGI scripts, etc...  Each valid line in the server log is
+counted as a hit.  This number represents the total number of requests
+that were made to the server during the specified report period.
+
+Files
+
+  Some requests made to the server, require that the server then send
+something back to the requesting client, such as a html page or graphic
+image.  When this happens, it is considered a 'file' and the files
+total is incremented.  The relationship between 'hits' and 'files' can
+be thought of as 'incoming requests' and 'outgoing responses'.
+
+Pages
+
+  Pages are, well, pages!  Generally, any HTML document, or anything
+that generates an HTML document, would be considered a page.  This
+does not include the other stuff that goes into a document, such as
+graphic images, audio clips, etc...  This number represents the number
+of 'pages' requested only, and does not include the other 'stuff' that
+is in the page.  What actually constitutes a 'page' can vary from
+server to server.  The default action is to treat anything with the
+extension '.htm', '.html' or '.cgi' as a page.  A lot of sites will
+probably define other extensions, such as '.phtml', '.php3' and '.pl'
+as pages as well.  Some people consider this number as the number of
+'pure' hits... I'm not sure if I totally agree with that viewpoint.
+Some other programs (and people :) refer to this as 'Pageviews'.
+
+Sites
+
+  Each request made to the server comes from a unique 'site', which can
+be referenced by a name or ultimately, an IP address.  The 'sites'
+number shows how many unique IP addresses made requests to the server
+during the reporting time period.  This DOES NOT mean the number of
+unique individual users (real people) that visited, which is impossible
+to determine using just logs and the HTTP protocol (however, this
+number might be about as close as you will get).
+
+Visits
+
+  Whenever a request is made to the server from a given IP address
+(site), the amount of time since a previous request by the address
+is calculated (if any).  If the time difference is greater than a
+pre-configured 'visit timeout' value (or has never made a request before),
+it is considered a 'new visit', and this total is incremented (both
+for the site, and the IP address).  The default timeout value is 30
+minutes (can be changed), so if a user visits your site at 1:00 in
+the afternoon, and then returns at 3:00, two visits would be registered.
+Note: in the 'Top Sites' table, the visits total should be discounted
+on 'Grouped' records, and thought of as the "Minimum number of visits"
+that came from that grouping instead.  Note: Visits only occur on
+PageType requests, that is, for any request whose URL is one of the
+'page' types defined with the PageType and PagePrefix option, and not
+excluded by the OmitPage option.  Due to the limitation of the HTTP
+protocol, log rotations and other factors, this number should not be
+taken as absolutely accurate,  rather, it should be considered a pretty
+close "guess".
+
+KBytes
+
+  The KBytes (kilobytes) value shows the amount of data, in KB, that
+was sent out by the server during the specified reporting period.  This
+value is generated directly from the log file, so it is up to the
+web server to produce accurate numbers in the logs  (some web servers
+do stupid things when it comes to reporting the number of bytes).  In
+general, this should be a fairly accurate representation of the amount
+of outgoing traffic the server had, regardless of the web servers
+reporting quirks.
+
+Note: A kilobyte is 1024 bytes, not 1000 :)
+
+Top Entry and Exit Pages
+
+  The Top Entry and Exit tables give a rough estimate of what URLs
+are used to enter your site, and what the last pages viewed are.
+Because of limitations in the HTTP protocol, log rotations, etc...
+this number should be considered a good "rough guess" of the actual
+numbers, however will give a good indication of the overall trend in
+where users come into, and exit, your site.
+
+
+Command Line Options
+--------------------
+
+The Webalizer supports many different configuration options that will
+alter the way the program behaves and generates output.  Most of these
+can be specified on the command line, while some can only be specified
+in a configuration file. The command line options are listed below,
+with references to the corresponding configuration file keywords.
+
+--------------------------------------------------------------------------
+
+General Options
+---------------
+
+-h        Display all available command line options and exit program.
+
+-v        Be Verbose.  This will cause the program to print additional
+          information at run time.  It is the same as specifying
+          "Quiet no", "ReallyQuiet no" and "Debug yes" config options.
+
+-V        Display the program version and exit.  Additional program
+          specific information will be displayed if 'verbose' mode is
+          also used (e.g. '-vV'), which can be useful when submitting
+          bug reports.
+
+-d        Display additional 'debugging' information for errors and
+          warnings produced during processing.  This normally would
+          not be used except to determine why you are getting all those
+          errors and wanted to see the actual data.  Normally The
+          Webalizer will just tell you it found an error, not the
+          actual data.  This option will display the data as well.
+          Config file keyword: Debug
+
+-F        Specify the log file type to process.  Normally, the
+          Webalizer expects to find a valid CLF or Combined format
+          we server log file.  This option allows you to process
+          wu-ftpd xferlogs, squid and W3C formatted web logs as well.
+          Values can be either 'clf', 'ftp', 'squid' or 'w3c' with
+          'clf' being the default.  Only the first character needs
+          to be specified (eg: -Fs will process a squid log).
+          Config file keyword: LogType
+
+-f        Fold out of sequence log records back into analysis, by
+          treating them as if they were the same date/time as the
+          last good record.  Normally, out of sequence log records
+          are ignored.  If you run apache, don't worry about this.
+          Config file keyword: FoldSeqErr
+
+-i        Ignore history file.  USE WITH CAUTION.  This causes The
+          Webalizer to ignore any existing history file produced from
+          previous runs and generate its output from scratch.  The
+          effect will be as if The Webalizer is being run for the
+          first time and any previous statistics will be lost (although
+          the HTML documents, if any, will not be deleted) on the main
+          index.html (yearly) web page.
+          Config file keyword: IgnoreHist
+
+-b        Ignore incremental data file.  USE WITH CAUTION.  This causes
+          The Webalizer to ignore any existing incremental (state) data
+          file produced by previous runs.  By ignoring the incremental
+          data file, all previous processing for the current month will
+          be lost, and those logs must be re-processed.
+          Config file keyword: IgnoreState
+
+-p        Preserve state (incremental processing).  This allows the
+          processing of partial logs in increments.  At the end of
+          the program, all relevant internal data is saved, so that
+          it may be restored the next time the program is run.  This
+          allows sites that must rotate their logs more than once a
+          month to still be able to use The Webalizer, and not worry
+          about having to gather and feed an entire months logs to
+          the program at the end of the month.  See the section on
+          "Incremental Processing" below for additional information.
+          The default is to not perform incremental processing.  Use
+          this command line option to enable the feature.
+          Config file keyword: Incremental
+
+-q        Quiet mode.  Normally, The Webalizer will produce various
+          messages while it runs letting you know what its doing.
+          This option will suppress those messages.  It should be
+          noted that this WILL NOT suppress errors and warnings, which
+          are output to STDERR.
+          Config file keyword: Quiet
+
+-Q        ReallyQuiet mode.  This allows suppression of _all_ messages
+          generated by The Webalizer, including warnings and errors.
+          Useful when The Webalizer is run as a cron job.
+          Config file keyword: ReallyQuiet
+
+-T        Display timing information.  The Webalizer keeps track of the
+          time it begins and ends processing, and normally displays the
+          total processing time at the end of each run.  If quiet mode
+          (-q or 'Quiet yes' in configuration file) is specified, this
+          information is not displayed.  This option forces the display
+          of timing totals if quiet mode has been specified, otherwise
+          it is redundant and will have no effect.
+          Config file keyword: TimeMe
+
+-c file   This option specifies a configuration file to use.  Configuration
+          files allow greater control over how The Webalizer behaves, and
+          there are several ways to use them.  As of version 0.98, The
+          Webalizer searches for a default configuration file in the
+          current directory named "webalizer.conf", and if not found,
+          will search in the /etc/ directory for a file of the same name.
+          In addition, you may specify a configuration file to use with
+          this command line option.
+
+-n name   This option specifies the hostname for the reports generated.
+          The hostname is used in the title of all reports, and is also
+          prepended to URLs in the reports.  This allows The Webalizer
+          to be run on log files for 'virtual' web servers or web servers
+          that are different than the machine the reports are located on,
+          and still allows clicking on the URLs to go to the proper
+          location.  If a hostname is not specified, either on the
+          command line or in a configuration file, The Webalizer attempts
+          to determine the hostname using a 'uname' system call.  If this
+          fails, "localhost" will be used as the hostname.
+          Config file keyword: HostName
+
+-o dir    This options specifies the output directory for the reports.
+          If not specified here or in a configuration file, the current
+          default directory will be used for output.
+          Config file keyword: OutputDir
+
+-x name   This option allows the generated pages to have an extension
+          other than '.html', which is the default.  Do not include the
+          leading period ('.') when you specify the extension.
+          Config file keyword: HTMLExtension
+
+-P name   Specify the file extensions for 'pages'.  Pages (sometimes
+          called 'PageViews') are normally html documents and CGI
+          scripts that display the whole page, not just parts of it.
+          Some system will need to define a few more, such as 'phtml',
+          'php3' or 'pl' in order to have them counted as well.  The
+          default is 'htm*' and 'cgi' for web logs and 'txt' for ftp.
+          Config file keyword: PageType
+
+-O name   Specify URLs which are not counted as 'pages'.  Requests
+          matching one of these URLs will not be counted as a page, even
+          if they have an extension matching one of the PageTypes defined
+          above or have no extension at all.
+          Config file keyword: OmitPage
+
+-t name   This option specifies the title string for all reports.  This
+          string is used, in conjunction with the hostname (if not blank)
+          to produce the actual title.  If not specified, the default of
+          "Usage Statistics for" will be used.
+          Config file keyword: ReportTitle
+
+-Y        Suppress Country graph.  Normally, The Webalizer produces
+          country statistics in both Graph and Columnar forms.  This
+          option will suppress the Country Graph from being generated.
+          Config file keyword: CountryGraph
+
+-G        Suppress hourly graph.  Normally, The Webalizer produces
+          hourly statistics in both Graph and Columnar forms.  This
+          option will suppress the Hourly Graph only from being generated.
+          Config file keyword: HourlyGraph
+
+-H        Suppress Hourly statistics.  Normally, The Webalizer produces
+          hourly statistics in both Graph and Columnar forms.  This
+          option will suppress the Hourly Statistics table only from
+          being generated.
+          Config file keyword: HourlyStats
+
+-K num    Specify how many months should be displayed in the main index
+          (yearly summary) table.  Default is 12 months.  Can be set to
+          anything between 12 and 120 months (1 to 10 years).
+          Config file keyword: IndexMonths
+
+-k num    Specify how many months should be displayed in the main index
+          (yearly summary) graph.  Default is 12 months.  Can be set to
+          anything between 12 and 72 months (1 to 6 years).
+          Config file keyword: GraphMonths
+
+-L        Disable Graph Legends.  The color coded legends displayed on
+          the in-line graphs can be disabled with this option.  The
+          default is to display the legends.
+          Config file keyword: GraphLegend
+
+-l num    Graph Lines.  Specify the number of background reference
+          lines displayed on the in-line graphics produced.  The default
+          is 2 lines, however can range anywhere from zero ('0') for
+          no lines, up to 20 lines (looks funny!).
+          Config file keyword: GraphLines
+
+-P name   Page type.  This is the extension of files you consider to
+          be pages for Pages calculations (sometimes called 'pageviews').
+          The default is 'htm*' and 'cgi' (plus whatever HTMLExtension
+          you specified if it is different).  Don't use a period!
+
+-m num    Specify a 'visit timeout'.  Visits are calculated by looking at
+          the time difference between the current and last request made
+          by a specific host.  If the difference is greater that the
+          visit timeout value, the request is considered a new visit.
+          This value is specified in number of seconds.  The default
+          is 30 minutes (1800).
+          Config file keyword: VisitTimeout
+
+-M num    Mangle user agent names.  Normally, The Webalizer will keep
+          track of the user agent field verbatim.  Unfortunately, there are
+          a ton of different names that user agents go by, and the field
+          also reports other items such as machine type and OS used. For
+          Example, Netscape 4.03 running on Windows 95 will report a
+          different string than Netscape 4.03 running on Windows NT, so even
+          though they are the same browser type, they will be considered
+          as two totally different browsers by The Webalizer.  For that
+          matter, Netscape 4.0 running on Windows NT will report different
+          names if one is run on an Alpha and the other on an Intel
+          processor!  Internet Exploder is even worse, as it reports itself
+          as if it were Netscape and you have to search the given string a
+          little deeper to discover that it is really MSIE!  In order to
+          consolidate generic browser types, this option will cause The
+          Webalizer to 'mangle' the user agent field, attempting to
+          consolidate generic browser types. There are 6 levels that can be
+          specified, each producing different levels of detail.  Level 5
+          displays only the browser name (MSIE or Mozilla) and the major
+          version number.  Level 4 will also display the minor version
+          number (single decimal place).  Level 3 will display the minor
+          version number to two decimal places.  Level 2 will add any
+          sub-level designation (such as Mozilla/3.01Gold or MSIE 3.0b).
+          Level 1 will also attempt to add the system type.  The default
+          Level 0 will disable name mangling and leave the user agent
+          field unmodified, producing the greatest amount of detail.
+          Configuration file keyword: MangleAgents
+
+-g num    This option allows you to specify the level of domains name
+          grouping to be performed.  The numeric value represents the
+          level of grouping, and can be thought of as the 'number of
+          dots' to be displayed.  The default value of 0 disables any
+          domain name grouping.
+          Configuration file keyword: GroupDomains
+
+-D name   This allows the specification of a DNS Cache file name.  This
+          filename MUST be specified if you have dns lookups enabled
+          (using the -N command line switch or DNSChildren configuration
+          keyword).  The filename is relative to the default output
+          directory if an absolute path is not specified (ie: starts
+          with a leading '/').  This option is only available if DNS
+          support was enabled at compile time, otherwise an 'Invalid
+          Keyword' error will be generated.  See the DNS.README file
+          for additional information regarding DNS lookups.
+          Configuration file keyword: DNSCache
+
+-N num    Number of DNS child processes to use for reverse DNS lookups.
+          If specified, a DNSCache name MUST be specified also.  If you
+          do not wish a DNS cache file to be generated, specify a value
+          of zero ('0') to disable it.  This does not prevent using an
+          existing cache file, only the generation of one at run time.
+          See the DNS.README file for additional information.
+          Configuration file keyword: DNSChildren
+
+-j        Enable native GeoDB geolocation services.
+          Configuration file keyword: GeoDB
+
+-J name   Specify an alternate GeoDB database filename to use.  This
+          shouldn't normally be needed.  If used, the filename 'name'
+          is relative to the output directory being used unless an
+          absolute path is specified (ie: starts with a leading '/').
+          Configuration file keyword: GeoDBDatabase
+
+-w        Enable GeoIP support if it is available.
+          Configuration file keyword: GeoIP
+
+-W name   Specify an alternate GeoIP database filename to use.  This
+          shouldn't normally be needed.  If used, the filename 'name'
+          is relative to the specified output directory unless an
+          absolute name is given (ie: starts with a leading '/').
+          Configuration file keyword: GeoIPDatabase
+
+-z name   Specify location of the country flag graphics and enable
+          their display in the top country table.  The directory name
+          is relative to the output directory unless an absolute path
+          is specified (ie: starts with a leading '/').
+          Configuration file keyword: FlagDir
+
+Hide Options
+------------
+
+The following options take a string argument to use as a comparison
+for matching.  Except for the IndexAlias option, the string argument
+can be plain text, or plain text that either starts or ends with the
+wildcard character '*'.
+
+For Example:
+
+Given the string "yourmama/was/here", the arguments "was", "*here" and
+"your*" will all produce a match.
+
+
+-a name   This option allows hiding of user agents (browsers) from the
+          "Top User Agents" table in the report.  This option really
+          isn't too useful as there are a zillion different names that
+          current browsers go by, depending where they were obtained,
+          however you might have some particular user agents that hit
+          your site a lot that you would like to exclude from the list.
+          You must have a web server that includes user agents in its
+          log files for this option to be of any use.  In addition, it
+          is also useless if you disable the user agent table in the
+          report (see the -A command line option or "TopAgents"
+          configuration file keyword). You can specify as many of these
+          as you want on the command line.  The wildcard character '*'
+          can be used either in front of or at the end of the string.
+          (ie: Mozilla/4.0* would match anything that starts with the
+          string "Mozilla/4.0").
+          Config file keyword: HideAgent
+
+-r name   This option allows hiding of referrers from the "Top Referrer"
+          table in the report.  Referrers are URLs, either on your own
+          local site or a remote site, that referred the user to a URL
+          on your web server.  This option is normally used to hide
+          your own server from the table, as your own pages are usually
+          the top referrers to your own pages (well, you get the idea).
+          You must have a web server that includes referrer information
+          in the log files for this option to be of any use.  In addition,
+          it is also useless if you disable the referrers table in the
+          report (see the -R command line option or "TopReferrers"
+          configuration file keyword).  You can specify as many of these
+          as you like on the command line.
+          Config file keyword: HideReferrer
+
+-s name   This option allows hiding of sites from the "Top Sites" table
+          in the report.  Normally, you will only want to hide your own
+          domain name from the report, as it usually is one of the top
+          sites to visit your web server.  This option is of no use if
+          you disable the top sites table in the report (see the -S
+          command line option or "TopSites" configuration file option).
+          Config file keyword: HideSite
+
+-X        This causes all individual sites to be hidden, which results
+          in only grouped sites to be displayed on the report.
+          Config file keyword: HideAllSites
+
+-u name   This option allows hiding of URLs from the "Top URLs" table
+          in the report.  Normally, this option is used to hide images,
+          audio files and other objects your web server dishes out that
+          would otherwise clutter up the table.  This option is of no
+          use if you disable the top URLs table in the report (see the
+          -U command line option or "TopURLs" configuration file keyword).
+          Config file keyword: HideURL
+
+-I name   This option allows you to specify additional index.html aliases.
+          The Webalizer usually strips the string 'index.*' from URLs
+          before processing (unless disabled using the 'DefaultIndex'
+          config option), which has the effect of turning a URL such
+          as /somedir/index.html into just /somedir/ which is really the
+          same URL and should be treated as such.  This option allows you
+          to specify _additional_ strings that are to be treated the same
+          way.  Use with care, improper use could cause unexpected results.
+          For example, if you specify the alias string of 'home', a URL
+          such as /somedir/homepages/brad/home.html would be converted
+          into just /somedir/ which probably isn't what was intended.
+          This option is useful if your web server uses a different default
+          index page other than the standard 'index.html' or 'index.htm',
+          such as 'home.html' or 'homepage.html'.  The string specified
+          is searched for _anywhere_ in the URL, so "home.htm" would
+          turn both "/somedir/home.htm" and "/somedir/home.html" into
+          just "/somedir/". Wildcards are _not_ allowed on this one.
+          Config file keyword: IndexAlias
+
+Table Size Options
+------------------
+
+-e num    This option specifies the number of entries to display in the
+          "Top Entry Pages" table.  To disable the table, use a value of
+          zero (0).
+          Config file keyword: TopEntry
+
+-E num    This option specifies the number of entries to display in the
+          "Top Exit Pages" table.  To disable the table, use a value of
+          zero (0).
+          Config file keyword: TopExit
+
+-A num    This option specifies the number of entries to display in the
+          "Top User Agents" table.  To disable the table, use a value of
+          zero (0).
+          Config file keyword: TopAgents
+
+-C num    This option specifies the number of entries to display in the
+          "Top Countries" table.  To disable the table, use a value of
+          zero (0).
+          Config file keyword: TopCountries
+
+-R num    This option specifies the number of entries to display in the
+          "Top Referrers" table.  To disable the table, use a value of
+          zero (0).
+          Config file keyword: TopReferrers
+
+-S num    This option specifies the number of entries to display in the
+          "Top Sites" table.  To disable the table, use a value of
+          zero (0).
+          Config file keyword: TopSites
+
+-U num    This option specifies the number of entries to display in the
+          "Top URLs" table.  To disable the table, use a value of
+          zero (0).
+          Config file keyword: TopURLs
+
+--------------------------------------------------------------------------
+
+
+CONFIGURATION FILES
+-------------------
+
+The Webalizer allows configuration files to be used in order to simplify
+life for all.  There are several ways that configuration files are accessed
+by the Webalizer.  When The Webalizer first executes, it looks for a
+default configuration file named "webalizer.conf" in the current directory,
+and if not found there, will look for "/etc/webalizer.conf".  In addition,
+configuration files may be specified on the command line with the '-c'
+option.  There are lots of different ways you can combine the use of
+configuration files and command line options to produce various results.
+The Webalizer always looks for and reads configuration options from a
+default configuration file before doing anything else.  Because of this,
+you can override options found in the default file by use of additional
+configuration files specified on the command line or command line options
+themselves.  If you specify a configuration file on the command line, you
+can override options in it by additional command line options which follow.
+For example, most users will most likely want to create the default file
+/etc/webalizer.conf and place options in it to specify the hostname, log
+file, table options, etc...  At the end of the month when a different log
+file is to be used (the end of month log), you can run The Webalizer as
+usual, but put the different filename on the end of the command line, which
+will override the log file specified in the configuration file.  It should
+be noted that you cannot override some configuration file options by the
+use of command line arguments.  For example, if you specify "Quiet yes" in
+a configuration file, you cannot override this with a command line argument,
+as the command line option only _enables_ the feature (-q option).
+
+The configuration files are standard ASCII text files that may be created
+or edited using any standard editor.  Blank lines and lines that begin
+with a pound sign ('#') are ignored.  Any other lines are considered to
+be configuration lines, and have the form "Keyword Value", where the
+'Keyword' is one of the currently available configuration keywords defined
+below, and 'Value' is the value to assign to that particular option.  Any
+text found after the keyword up to the end of the line is considered the
+keyword's value, so you should not include anything after the actual value
+on the line that is not actually part of the value being assigned.  The
+file "sample.conf" provided with the distribution contains lots of useful
+documentation and examples as well.  It should be noted that you do not
+have to use any configuration files at all, in which case, default values
+will be used (which should be sufficient for most sites).
+
+--------------------------------------------------------------------------
+
+General Configuration Keywords
+------------------------------
+
+LogFile       This defines the log file to use. It should be a fully qualified
+              name (ie: contain the path), but relative names will work as
+              well.  If not specified, the logfile defaults to STDIN. 
+
+LogType       This specified the log file type being used.  Normally, The
+              Webalizer processes web logs in either CLF or Combined format.
+              You may also process wu-ftpd xferlog formatted logs, squid
+              proxy logs or W3C formatted web logs by setting the appropriate
+              type using this keyword.   Values may be either 'clf', 'ftp',
+              'squid' or 'w3c'.  Ensure that you specify the proper file type,
+              otherwise you will be presented with a long stream of 'invalid
+              record' messages when the Webalizer is run ;)
+              Command line argument: -F
+
+OutputDir     This defines the output directory to use for the reports.  If
+              it is not specified, the current directory is used.
+              Command line argument: -o
+
+HistoryName   Allows specification of a history path/filename if desired.
+              The default is to use the file named 'webalizer.hist', kept
+              in the normal output directory (OutputDir above).  Any name
+              specified is relative to the normal output directory unless
+              an absolute path name is given (ie: starts with a '/').
+
+ReportTitle   This specifies the title to use for the generated reports.
+              It is used in conjunction with the hostname (unless blank)
+              to produce the final report titles.  If not defined, the
+              default of "Usage Statistics for" is used.
+              Command line argument: -t
+
+HostName      This defines the hostname.  The hostname is used in the
+              report title as well as being prepended to URLs in the
+              "Top URLs" table.  This allows The Webalizer to be run
+              on "virtual" web servers, or servers that do not reside
+              on the local machine, and allows clicking on the URL to
+              go to the right place.  If not specified, The Webalizer
+              attempts to get the hostname via a 'uname' system call,
+              and if that fails, will default to "localhost".
+              Command line argument: -n
+
+UseHTTPS      Causes the links in the 'Top URLs' table to use 'https://'
+              instead of the default 'http://' prefix.  Not much use if
+              you run a mix of secure/insecure servers on your machine.
+              Only useful if you run the analysis on a secure servers
+              logs, and want the links in the table to work properly.
+
+HTAccess      Enables the creation of a default .htaccess file in the
+              output directory.  If enabled, the file will be created
+              (with a single "DirectoryIndex" directive),  unless one
+              already exists.  The default is 'no', which disables the
+              creation of any .htaccess files.
+
+Quiet         This allows you to enable or disable informational messages
+              while it is running.  The values for this keyword can be
+              either 'yes' or 'no'.  Using "Quiet yes" will suppress these
+              messages, while "Quiet no" will enable them.  The default
+              is 'no' if not specified, which will allow The Webalizer
+              to display informational messages.  It should be noted that
+              this option has no effect on Warning or Error messages that
+              may be generated, as they go to STDERR.
+              Command line argument: -q
+
+ReallyQuiet   This allows all generated output to be suppressed, including
+              warning and error messages.  The values for this keyword
+              can be either 'yes' or 'no', with 'no' being the default.
+              Command line argument: -Q
+
+TimeMe        This allows you to display timing information regardless of
+              any "quiet mode" specified.  Useful only if you did in fact
+              tell the webalizer to be quiet either by using the -q command
+              line option or the "Quiet" keyword, otherwise timing stats
+              are normally displayed anyway.  Values may be either 'yes'
+              or 'no', with the default being 'no'.
+              Command line argument: -T
+
+GMTTime       This keyword allows timestamps to be displayed in GMT (UTC)
+              time instead of local time.  Normally The Webalizer will
+              display timestamps in the time-zone of the local machine
+              (ie: PST or EDT).  This keyword allows you to specify the
+              display of timestamps in GMT (UTC) time instead.  Values
+              may be either 'yes' or 'no'.  Default is 'no'.
+
+Debug         This tells The Webalizer to display additional information
+              when it encounters Warnings or Errors.  Normally, The
+              Webalizer will just tell you it found a bad record or
+              field.  This option will enable the display of the actual
+              data that produced the Warning or Error as well.  Useful
+              only if you start getting lots of Warnings or Errors and
+              want to determine the cause.  Values may be either 'yes'
+              or 'no', with the default being 'no'.
+              Command line argument: -d
+
+IgnoreHist    This suppresses the reading of a history file.  USE WITH
+              EXTREME CAUTION as the history file is how The Webalizer
+              keeps track of previous months.  The effect of this option
+              is as if The Webalizer was being run for the very first
+              time, and any previous data is discarded.  Values may be
+              either 'yes' or 'no', with the default being 'no'.
+              Command line argument: -i
+
+IgnoreState   This suppresses the reading of an existing incremental
+              data file.  USE WITH EXTREME CAUTION!  By ignoring an
+              existing incremental data file, all previous processing
+              for the current month will be lost, and those logs must
+              be re-processed.  Values may be 'yes' or 'no', with the
+              default being 'no'.
+              Command line argument: -b
+
+FoldSeqErr    Allows log records that are out of sequence to be folded
+              back into the analysis, by treating them as if they had
+              the same date/time as the last good record.  Normally,
+              out of sequence log records are simply ignored.  If you
+              run apache, don't worry about this.
+
+VisitTimeout  Set the 'visit timeout' value.  Visits are determined by
+              looking at the time difference between the current and last
+              request made by a specific site.  If the difference in time
+              is greater than the visit timeout value, the request is
+              considered a new visit.  The value is in number of seconds,
+              and defaults to 30 minutes (1800).
+              Command line argument: -m
+
+PageType      Allows you to define the 'page' type extension.  Normally,
+              people consider HTML and CGI scripts as 'pages'.  This
+              option allows you to specify what extensions you consider
+              a page.  Default is 'htm*' and 'cgi' for web logs, and
+              'txt' for ftp logs.
+              Command line argument: -P
+
+PagePrefix    Allows all requests with a specified prefix to be considered
+              as 'pages'. If you want everything under /documents to be
+              treated as pages no matter what their extension is. Also
+              useful if you have cgi-scripts with PATH_INFO.
+
+OmitPage      Allows specified URLs to not be counted as pages under any
+              circumstance, even if they have an extension matching a
+              PageType or PagePrefix as defined above.
+
+GraphLegend   Enable/disable the display of color coded legends on the
+              produced graphs.  Default is 'yes', to display them.
+              Command line argument: -L
+
+GraphLines    Specify the number of background reference lines to display
+              on produced graphs.  The default is 2.  To disable the use
+              of background lines, use zero ('0').
+              Command line argument: -l
+
+IndexMonths   Specify the number of months to display in the main index
+              (yearly summary) table.  Default is 12 months.  Can be set
+              to anything between 12 and 120 months (1 to 10 years).
+              Command line argument: -K
+
+YearHeaders   Enable/disable the display of year headers in the main index
+              (yearly summary) table.  If enabled, year headers will be
+              shown when the table is displaying more than 16 months worth
+              of data.  Values can be 'yes' or 'no'.  Default is 'yes'.
+
+GraphMonths   Specify the number of months to display in the main index
+              (yearly summary) graph.  Default is 12 months.  Can be set
+              to anything between 12 and 72 months (1 to 6 years).
+              Command line argument: -k
+
+CountryGraph  This keyword is used to either enable or disable the creation
+              and display of the Country Usage graph.  Values may be either
+              'yes' or 'no', with the default being 'yes'.
+              Command line argument: -Y
+
+CountryFlags  Enables or disables the display of flags in the top country
+              table.  If enabled, the default directory 'flags' directly
+              under the output directory will be used unless a different
+              path is specified with the 'FlagDir' option below.
+              Command line argument: -zflags
+
+FlagDir       Specifies the location of flag graphics.  If not specified,
+              the default is in the 'flags' directory directly under the
+              output directory being used for the reports.  If specified,
+              the display of flags will be enabled by default.
+              Command line argument: -z
+
+DailyGraph    This keyword is used to either enable or disable the creation
+              and display of the Daily Usage graph.  Values may be either
+              'yes' or 'no', with the default being 'yes'.
+
+DailyStats    This keyword is used to either enable or disable the creation
+              and display of the Daily Usage statistics table.  Values may
+              be either 'yes' or 'no', with the default being 'yes'.
+
+HourlyGraph   This keyword is used to either enable or disable the creation
+              and display of the Hourly Usage graph.  Values may be either
+              'yes' or 'no', with the default being 'yes'.
+              Command line argument: -G
+
+HourlyStats   This keyword is used to either enable or disable the creation
+              and display of the Hourly Usage statistics table.  Values may
+              be either 'yes' or 'no', with the default being 'yes'.
+              Command line argument: -H
+
+IndexAlias    This allows additional 'index.html' aliases to be defined.
+              Normally, The Webalizer scans for and strips the string
+              "index." from URLs before processing them (unless disabled
+              using the DefaultIndex config option below).  This turns a
+              URL such as /somedir/index.html into just /somedir/ which
+              is really the same URL.  This keyword allows _additional_
+              names to be treated in the same fashion for sites that use
+              different default names, such as "home.html".  The string
+              is scanned for anywhere in the URL, so care should be used
+              if and when you define additional aliases.  For example,
+              if you were to use an alias such as 'home', the URL
+              /somedir/homepages/brad/home.html would be turned into just
+              /somedir/ which probably isn't the intended result.  Instead,
+              you should have specified 'home.htm' which would correctly
+              turn the URL into /somedir/homepages/brad/ like intended.
+              It should also be noted that specified aliases are scanned
+              for in EVERY log record... A bunch of aliases will noticeably
+              degrade performance as each record has to be scanned for
+              every alias defined.  You don't have to specify 'index.' as
+              it is always the default (unless disabled with the config
+              option "DefaultIndex" described below).
+              Command line argument: -I 
+
+DefaultIndex  This option is used to enable/disable the use of "index." as
+              a default index name to be stripped from the end of a URL.
+              Most sites should not need to use this option, however some
+              may find it useful, particularly those whose default index
+              file name is something different, or those sites that use
+              'index.php' or similar URLs to generate dynamic content.
+              This option does not effect any of the names that may be
+              defined using the IndexAlias option, and those names will
+              still function as described.  Values may be 'yes' or 'no',
+              with 'yes' being the default.
+
+MangleAgents  The MangleAgents keyword specifies the level of user agent
+              name mangling, if any.  There are 6 levels that may be specified,
+              each producing a different level of detail displayed.  Level 5
+              displays only the browser name (MSIE or Mozilla) and the major
+              version number.  Level 4 adds the minor version (single
+              decimal place).  Level 3 adds the minor version to two decimal
+              places.  Level 2 will also add any sub-level designation
+              (such as Mozilla/3.01Gold or MSIE 3.0b).  Level 1 will also
+              attempt to add the system type.  The default level 0 will
+              leave the user agent field unmodified and produces the
+              greatest amount of detail.
+              Command line argument: -M
+
+SearchEngine  This keyword allows specification of search engines and
+              their query strings.  Search strings are obtained from
+              the referrer field in the record, and in order to work
+              properly, the Webalizer needs to know what query strings
+              different search engines use.  The SearchEngine allows
+              you to specify the search engine and its query string
+              to parse the search string from.  The line is formatted
+              as:  "SearchEngine engine-string query-string"  where
+              'engine-string' is a substring for matching the search
+              engine with, such as "yahoo.com" or "altavista".  The
+              'query-string' is the unique query string that is added
+              to the URL for the search engine, such as "search=" or
+              "MT=" with the actual search strings appended to the
+              end.  There is no command line option for this keyword.
+
+SearchCaseI   The SearchCaseI option specifies if search strings should
+              be lowercased (case insensitive) or not.  Since most
+              search engines use case insensitive searches (ie: a
+              search for "Hello" is the same as "HELLO" or "hello"),
+              converting to lowercase will improve keyword accuracy,
+              which is the default.  If desired, case sensitivity can
+              be forced with this option.  The value can be 'yes' or
+              'no', with 'yes' (case insensitive) being the default.
+
+Incremental   This allows incremental processing to be enabled or disabled.
+              Incremental processing allows processing partial logs without
+              the loss of detail data from previous runs in the same month.
+              This feature saves the 'internal state' of the program so that
+              it may be restored in following runs.  See the section above
+              titled "Incremental Processing" for additional information.
+              The value may be 'yes' or 'no', with the default being 'no'.
+              Command line argument: -p
+
+IncrementalName
+              Allows specification of the incremental data filename if
+              desired.  Normally, the file named "webalizer.current' is
+              used, kept in the standard output directory.  If specified,
+              filenames are relative to the standard output directory,
+              unless an absolute name is given (ie: starts with '/').
+
+StripCGI      Determines if CGI variables should be stripped from the
+              end of URLs or not.  Normally, these variables are removed
+              from URLs to improve accuracy, however some sites may wish
+              to keep them preserved (particularly on highly dynamic
+              sites).  Values may be either 'yes' or 'no', with 'yes'
+              being the default.
+
+TrimSquidURL  Allows squid log URLs to be reduced in granularity by
+              truncating them after a specified number of '/' path
+              separators after the http:// portion.  A value of 1 will
+              cause all URLs to be summarized by domain only.  The
+              default value is zero (0), which leaves URLs unmodified.
+
+DNSCache      Specifies the DNS cache filename.  This name is relative
+              to the default output directory unless an absolute name
+              is given (ie: starts with '/').  See the DNS.README file
+              for additional information.
+              Command line argument: -D
+
+DNSChildren   The number of DNS children processes to run in order to
+              create/update the DNS cache file.  If specified, the DNS
+              cache filename must also be specified (see above).  Use
+              a value of zero ('0') to disable.  See the DNS.README
+              file for additional information.
+              Command line argument: -N
+
+CacheIPs      Specifies if unresolved addresses should also be cached
+              in the DNS database.  If enabled, unresolved IP addresses
+              will be stored along with resolved addresses.  This may
+              be useful on some sites that have lots of unresolved IPs
+              visiting so they are not looked up each time the program
+              is run.  Values may be 'yes' or 'no'.  Default is 'no'.
+
+CacheTTL      Specifies the Time To Live (TTL) value for cached DNS
+              entries in days.  Default value is 7 (1 week).  Can be
+              any value between 1 and 100.
+
+GeoDB         Controls the use of the native GeoDB geolocation services
+              provided by The Webalizer.  Values may be 'yes' or 'no'
+              with 'no' being the default.
+              Command line argument: -j
+
+GeoDBDatabase Specifies and alternate GeoDB database filename to use.
+              This is relative to the output directory being used unless
+              an absolute path is given (ie: starts with a '/').
+              Command line argument: -J
+
+GeoIP         Controls the use of GeoIP geolocation services.  If The
+              Webalizer was compiled with GeoIP support, it is used by
+              default.  Values may be 'yes' or 'no'. Default is 'yes'.
+              Command line argument: -w
+
+GeoIPDatabase Specifies an alternate GeoIP database filename to use.
+              This name is relative to the default output directory
+              unless an absolute name is given (ie: starts with '/').
+              Command line argument: -W
+
+
+Top Table Keywords
+------------------
+
+TopAgents     This allows you to specify how many "Top" user agents are
+              displayed in the "Top User Agents" table.  The default
+              is 15.  If you do not want to display user agent statistics,
+              specify a value of zero (0).  The display of user agents
+              will only work if your web server includes this information
+              in its log file (ie: a combined log format file).
+              Command line argument: -A 
+
+AllAgents     Will cause a separate HTML page to be generated for all
+              normally visible User Agents.  A link will be added to
+              the bottom of the "Top User Agents" table if enabled.
+              Value can be either 'yes' or 'no', with 'no' being the
+              default.
+
+TopCountries  This allows you to specify how many "Top" countries are
+              displayed in the "Top Countries" table.  The default is
+              30.  If you want to disable the countries table, specify
+              a value of zero (0).
+              Command line argument: -C 
+
+TopReferrers  This allows you to specify how many "Top" referrers are
+              displayed in the "Top Referrers" table.  The default is
+              30.  If you want to disable the referrers table, specify
+              a value of zero (0).  The display of referrer information
+              will only work if your web server includes this information
+              in its log file (ie: a combined log format file).
+              Command line argument: -R 
+
+AllReferrers  Will cause a separate HTML page to be generated for all
+              normally visible Referrers.  A link will be added to the
+              "Top Referrers" table if enabled.  Value can be either
+              'yes' or 'no', with 'no' being the default.
+
+TopSites      This allows you to specify how many "Top" sites are
+              displayed in the "Top Sites" table.  The default is 30.
+              If you want to disable the sites table, specify a value
+              of zero (0).
+              Command line argument: -S 
+
+TopKSites     Identical to TopSites, except for the 'by KByte' table.
+              Default is 10.  No command line switch for this one.
+
+AllSites      Will cause a separate HTML page to be generated for all
+              normally visible Sites.  A link will be added to the
+              bottom of the "Top Sites" table if enabled.  Value can
+              be either 'yes' or 'no', with 'no' being the default.
+
+TopURLs       This allows you to specify how many "Top" URLs are
+              displayed in the "Top URLs" table.  The default is 30.
+              If you want to disable the URLs table, specify a value
+              of zero (0).
+              Command line argument: -U 
+
+TopKURLs      Identical to TopURLs, except for the 'by KByte' table.
+              Default is 10.  No command line switch for this one.
+
+AllURLs       Will cause a separate HTML page to be generated for all
+              normally visible URLs.  A link will be added to the
+              bottom of the "Top URLs" table if enabled.  Value can
+              be either 'yes' or 'no', with 'no' being the default.
+
+TopEntry      Allows you to specify how many "Top Entry Pages" are
+              displayed in the table.  The default is 10.  If you
+              want to disable the table, specify a value of zero (0).
+              Command line argument: -e
+
+TopExit       Allows you to specify how many "Top Exit Pages" are
+              displayed in the table.  The default is 10.  If you
+              want to disable the table, specify a value of zero (0).
+              Command line argument: -E
+
+TopSearch     Allows you to specify how many "Top Search Strings" are
+              displayed in the table.  The default is 20.  If you
+              want to disable the table, specify a value of zero (0).
+              Only works if using combined log format (ie: contains
+              referrer information).
+
+TopUsers      This allows you to specify how many "Top" usernames are
+              displayed in the "Top Usernames" table.  Usernames are
+              only available if you use http authentication on your
+              web server, or when processing wu-ftpd xferlogs.  The
+              default value is 20.  If you want to disable the Username
+              table, specify a value of zero (0).
+
+AllUsers      Will cause a separate HTML page to be generated for all
+              normally visible usernames.  A link will be added to the
+              bottom of the "Top Usernames" table if enabled.  Value
+              can be either 'yes' or 'no', with 'no' being the default.
+
+AllSearchStr  Will create a separate HTML page to be generated for all
+              normally visible Search Strings.  A link will be added
+              to the bottom of the "Top Search Strings" table if
+              enabled.  Value can be either 'yes' or 'no', with 'no'
+              being the default.
+
+
+Hide Object Keywords
+--------------------
+
+These keywords allow you to hide user agents, referrers, sites, URLs
+and usernames from the various "Top" tables.  The value for these keywords
+are the same as those used in their command line counterparts.  You
+can specify as many of these as you want without limit.  Refer to the
+section above on "Command Line Options" for a description of the string
+formatting used as the value.  Values cannot exceed 80 characters in
+length.
+
+HideAgent     This allows specified user agents to be hidden from the
+              "Top User Agents" table.  Not very useful, since there
+              a zillion different names by which browsers go by today,
+              but could be useful if there is a particular user agent
+              (ie: robots, spiders, real-audio, etc..) that hits your
+              site frequently enough to make it into the top user agent
+              listing.  This keyword is useless if 1) your log file does
+              not provide user agent information or 2) you disable the
+              user agent table.
+              Command line argument: -a 
+
+HideReferrer  This allows you to hide specified referrers from the
+              "Top Referrers" table.  Normally, you would only specify
+              your own web server to be hidden, as it is usually the
+              top generator of references to your own pages.  Of course,
+              this keyword is useless if 1) your log file does not include
+              referrer information or 2) you disable the top referrers
+              table.
+              Command line argument: -r 
+
+HideSite      This allows you to hide specified sites from the "Top
+              Sites" table.  Normally, you would only specify your own
+              web server or other local machines to be hidden, as they
+              are usually the highest hitters of your web site, especially
+              if you have their browsers home page pointing to it.
+              Command line argument: -s 
+
+HideAllSites  This allows hiding all individual sites from the display,
+              which can be useful when a lot of groupings are being
+              used (since grouped records cannot be hidden).  It is
+              particularly useful in conjunction with the GroupDomain
+              feature, however can be useful in other situations as well.
+              Value can be either 'yes' or 'no', with 'no' the default.
+              Command line argument: -X
+
+HideURL       This allows you to hide URLs from the "Top URLs" table.
+              Normally, this is used to hide items such as graphic files,
+              audio files or other 'non-html' files that are transferred
+              to the visiting user.
+              Command line argument: -u 
+
+HideUser      This allows you to hide Usernames from the "Top Usernames"
+              table.  Usernames are only available if you use http based
+              authentication on your web server.
+
+
+Group Object Keywords
+---------------------
+
+The Group* keywords allow object grouping based on Site, URL, Referrer,
+User Agent and Usernames.  Combined with the Hide* keywords, you can
+customize exactly what will be displayed in the 'Top' tables.  For example,
+to only display totals for a particular directory, use a GroupURL and
+HideURL with the same value (ie: '/help/*').  Group processing is only
+done after the individual record has been fully processed, so name mangling
+and site total updates have already been performed.  Because of this, groups
+are not counted in the main site total (as that would cause duplication).
+Groups can be displayed in bold and shaded as well.  Grouped records are
+not, by default, hidden from the report.  This allows you to display a
+grouped total, while still being able to see the individual records, even
+if they are part of the group.  If you want to hide the detail records,
+follow the Group* directive with a Hide* one using the same value.  There
+are no command line switches for these keywords.  The Group* keywords also
+accept an optional label to be displayed instead of the actual value used.
+This label should be separated from the value by at least one whitespace
+character, such as a space or tab character.  If the match string contains
+whitespace (spaces or tabs),  the string should be quoted, using either
+single or double quotes.  See the sample configuration file for examples.
+
+GroupReferrer Allows grouping Referrers.  Can be handy for some of the
+              major search engines that have multiple host names a
+              referral could come from.
+
+GroupURL      This keyword allows grouping URLs. Useful for grouping
+              complete directory trees.
+
+GroupSite     This keywords allows grouping Sites.  Most used for
+              grouping top level domains and unresolved IP address
+              for local dial-ups, etc...
+
+GroupAgent    Groups User Agents.  A handy example of how you could use
+              this one is to use "Mozilla" and "MSIE" as the values for
+              GroupAgent and HideAgent keywords.  Make sure you put the
+              "MSIE" one first.
+
+GroupDomains  Allows automatic grouping of domains.  The numeric value
+              represents the level of grouping, and can be thought of
+              as 'the number of dots' to display.  A 1 will display
+              second level domains only (xxx.xxx), a 2 will display
+              third level domains (xxx.xxx.xxx) etc...  The default
+              value of 0 disables any domain grouping.
+              Command line argument: -g
+
+GroupUser     Allows grouping of usernames.  Combined with a group
+              name, this can be handy for displaying statistics on
+              a particular group of users without displaying their
+              real usernames.
+
+GroupShading  Allows shading of table rows for groups.  Value can be
+              'yes' or 'no', with the default being 'yes'.
+
+GroupHighlight Allows bolding of table rows for groups.  Value can be
+               'yes' or 'no', with the default being 'yes'.
+
+
+Ignore/Include Object Keywords
+----------------------
+
+These keywords allow you to completely ignore log records when generating
+statistics, or to force their inclusion regardless of ignore criteria.
+Records can be ignored or included based on site, URL, user agent, referrer
+and username.  Be aware that by choosing to ignore records, the accuracy of
+the generated statistics become skewed, making it impossible to produce
+an accurate representation of load on the web server.  These keywords
+behave identical to the Hide* keywords above, where the value can have
+a leading or trailing wildcard '*'.  These keywords, like the Hide* ones,
+have an absolute limit of 80 characters for their values.  These keywords
+do not have any command line switch counterparts, so they may only be
+specified in a configuration file.  It should also be pointed out that
+using the Ignore/Include combination to selectively exclude an entire
+site while including a particular 'chunk' is _extremely_ inefficient,
+and should be avoided.  Try grep'ing the records into a separate file
+and process it instead.
+
+IgnoreSite    This allows specified sites to be completely ignored from
+              the generated statistics.
+
+IgnoreURL     This allows specified URLs to be completely ignored from
+              the generated statistics.  One use for this keyword would
+              be to ignore all hits to a 'temporary' directory where
+              development work is being done, but is not accessible to
+              the outside world.
+
+IgnoreReferrer This allows records to be ignored based on the referrer
+               field.
+
+IgnoreAgent   This allows specified User Agent records to be completely
+              ignored from the statistics.  Maybe useful if you really
+              don't want to see all those hits from MSIE :)
+
+IgnoreUser    This allows specified username records to be completely
+              ignored from the statistics.  Usernames can only be used
+              if you use http authentication on your server.
+
+IncludeSite   Force the record to be processed based on hostname.  This
+              takes precedence over the Ignore* keywords.
+
+IncludeURL    Force the record to be processed based on URL.  This takes
+              precedence over the Ignore* keywords.
+
+IncludeReferrer Force the record to be processed based on referrer.
+                This takes precedence over the Ignore* keywords.
+
+IncludeAgent  Force the record to be processed based on user agent.
+              This takes precedence over the Ignore* keywords.
+
+IncludeUser   Force the record to be processed based on username.
+              Usernames are only available if you use http based
+              authentication on your server.  This takes precedence over
+              the Ignore* keywords.
+
+
+Dump Object Keywords
+--------------------
+
+The Dump* Keywords allow text files to be generated that can then be used
+for import into most database, spreadsheet and other external programs.
+The file is a standard tab delimited text file, meaning that each column
+is separated by a tab (0x09) character.  A header record may be included
+if required, using the 'DumpHeader' keyword.  Since these files contain
+all records that have been processed, including normally hidden records,
+an alternate location for the files can be specified using the 'DumpPath'
+keyword, otherwise they will be located in the default output directory.
+
+DumpPath      Specifies an alternate location for the dump files.  The
+              default output location will be used otherwise.  The value
+              is the path portion to use, and normally should be an
+              absolute path (ie: has a leading '/' character), however
+              relative path names can be used as well, and will be
+              relative to the output directory location.
+
+DumpExtension Allows the dump filename extensions to be specified. The
+              default extension is "tab", however may be changed with
+              this option.
+
+DumpHeader    Allows a header record to be written as the first record
+              of the file.  Value can be either 'yes' or 'no',  with
+              the default being 'no'.
+
+DumpSites     Dump tab delimited sites file.  Value can be either 'yes'
+              or 'no', with the default being 'no'.   The filename used
+              is site_YYYYMM.tab (YYYY=year, MM=month).
+
+DumpURLs      Dump tab delimited url file.  Value can be either 'yes' or
+              'no', with the default being 'no'.  The filename used is
+              url_YYYYMM.tab (YYYY=year, MM=month).
+
+DumpReferrers Dump tab delimited referrer file.  Value can be either
+              'yes' or 'no', with the default being 'no'.  Filename
+              used is ref_YYYYMM.tab (YYYY=year, MM=month).  Referrer
+              information is only available if present in the log
+              file (ie: combined web server log).
+
+DumpAgents    Dump tab delimited user agent file.  Value can be either
+              'yes' or 'no', with the default being 'no'.  Filename
+              used is agent_YYYYMM.tab (YYYY=year, MM=month).  User
+              agent information is only available if present in the
+              log file (ie: combined web server log).
+
+DumpUsers     Dump tab delimited username file.  Value can be either
+              'yes' or 'no', with the default being 'no'.  Filename
+              used is user_YYYYMM.tab (YYYY=year, MM=month).  The
+              username data is only available if processing a wu-ftpd
+              xferlog or http authentication is used on the web server
+              and that information is present in the log.
+
+DumpSearchStr Dump tab delimited search string file.  Value can be
+              either 'yes' or 'no', with the default being 'no'.
+              Filename used is search_YYYYMM.tab (YYYY=year, MM=month).
+              the search string data is only available if referrer
+              information is present in the log being processed and
+              recognized search engines were found and processed.
+
+
+
+HTML Generation Keywords
+------------------------
+
+These keywords allow you to customize the HTML code that The Webalizer
+produces, such as adding a corporate logo or links to other web pages.
+You can specify as many of these keywords as you like, and they will be
+used in the order that they are found in the file.  Values cannot exceed
+80 characters in length, so you may have to break long lines up into two
+or more lines.  There are no command line counterparts to these keywords.
+
+HTMLExtension  Allows generated pages to use something other than the
+               default 'html' extension for the filenames.  Do not
+               include the leading period ('.') when you specify the
+               extension.
+               Command line argument: -x
+
+HTMLPre        Allows code to be inserted at the very beginning of the
+               HTML files.  Defaults to the standard HTML 3.2 DOCTYPE
+               record.  Be careful not to include any HTML here, as it
+               is inserted _before_ the <HTML> tag in the file.  Use it
+               for server-side scripting capabilities, such as php3, to
+               insert scripting files and other directives.
+
+HTMLHead       Allows you to insert HTML code between the <HEAD></HEAD>
+               block.  There is no default.  Useful for adding scripts
+               to the HTML page, such as Javascript or php3, or even
+               just for adding a few META tags to the document.
+
+HTMLBody       This keyword defines HTML code to be placed immediately
+               after the <HEAD> section of the report, just before the
+               title and "summary period/generated on" lines.  If used,
+               the first HTMLHead line MUST include a <BODY> tag.  Put
+               whatever else you want in subsequent lines, but keep in
+               mind the placement of this code in relation to the title
+               and other aspects of the web page.  Some typical uses
+               are to change the page colors and possibly add a corporate
+               logo (graphic) in the top right.  If not specified, a
+               default <BODY> tag is used that defines page color, text
+               color and link colors (see "sample.conf" file for example).
+
+HTMLPost       This keyword defines HTML code that is placed after the
+               title and "summary period/generated on" lines, just before
+               the initial horizontal rule <HR> tag.  Normally this keyword
+               isn't needed, but is provided in case you included a large
+               graphic or some other weird formatting tag in the HTMLHead
+               section that needs to be cleaned up or terminated before the
+               main report section.
+
+HTMLTail       This keyword defines HTML code that is placed at the bottom
+               right side of the report.  It is inserted in a <TABLE> section
+               between table data <TD>..</TD> tags, and is top and right
+               aligned within the table.  Normally this keyword is used to
+               provide a link back to your home page or insert a small
+               graphic at the bottom right of the page.
+
+HTMLEnd        This allows insertion of closing code, at the very end of
+               the page.  The default is to put the closing </BODY> and
+               </HTML> tags.  If specified, you _must_ specify these tags
+               yourself.
+
+LinkReferrer   This specifies if the referrers listed in the top referrer
+               table should be displayed as plain text, or as a link to the
+               referrer.  Values can be either 'yes' or 'no', with 'no'
+               being the default.
+
+
+Graph Color Commands
+--------------------
+
+These keywords allow altering the colors used in the various graphs
+produced by the Webalizer.  The value is specified as a standard HTML
+RGB hexdecimal color string, without the leading '#' character.  The
+value is case insensitive.  If not specified, the default color shown
+will be used.
+
+ColorHit      Color used for 'Hits'.   Default is '00805C' (green)
+
+ColorFile     Color used for 'Files'.  Default is '0040FF' (blue)
+
+ColorSite     Color used for 'Sites'.  Default is 'FF8000' (orange)
+
+ColorKbyte    Color used for 'KBytes'. Default is 'FF0000' (red)
+
+ColorPage     Color used for 'Pages'.  Default is '00E0FF' (cyan)
+
+ColorVisit    Color used for 'Visits'. Default is 'FFFF00' (yellow)
+
+ColorMisc     Color used for miscellaneous titles in various 'Top'
+              tables (not graphs).     Default is '00E0FF' (cyan)
+
+PieColor1     Pie Chart color #1.      Default is '800080' (purple)
+
+PieColor2     Pie Chart color #2.      Default is '80FFC0' (lt. green)
+
+PieColor3     Pie Chart color #3.      Default is 'FF00FF' (lt. purple)
+
+PieColor4     Pie Chart color #4.      Default is 'FFC080' (tan)
+
+
+--------------------------------------------------------------------------
+
+
+Notes on Web Log Files
+----------------------
+
+The Webalizer supports CLF log formats, which should work for just
+about everyone.  If you want User Agent or Referrer information, you
+need to make sure your web server supplies this information in its
+log file, and in a format that the Webalizer can understand.  While
+The Webalizer will try to handle many of the subtle variations in
+log formats, some will not work at all.   Most web servers output
+CLF format logs by default.  For Apache, in order to produce the
+proper log format, add the following to the httpd.conf file:
+
+LogFormat "%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\""
+
+This instructs the Apache web server to produce a 'combined' log
+that includes the referrer and user agent information on the end of
+each record, enclosed in quotes (This is the standard recommended
+by both Apache and NCSA).   Netscape and other web servers have
+similar capabilities to alter their log formats.  (note: the above
+works for apache servers up to V1.2.  V1.3 and higher now have additional
+ways to specify log formats... refer to included documentation).
+
+Notes on FTP Log Files
+----------------------
+
+The Webalizer supports ftp logs produced by wu-ftpd, proftpd and others,
+as a standard 'xferlog'.  To process an ftp log, you must either use the
+-Ff command line option or have "LogType ftp" in your configuration file.
+It is recommended that you create a separate configuration file for ftp
+analysis, since the values used for your web server will most likely not
+be suited for ftp log analysis (ie: page types, hostname, etc.. should
+be different).
+
+Because of the difference in web and ftp logs, there are a few limitations:
+
+o Because there is no concept of a 'response code' in ftp world, response
+  codes are restricted to either 200 (OK) or 206 (Partial Content), based
+  on the completion status found in xferlog (for wu-ftpd, 'i'=incomplete
+  and will generate a 206, 'c'=complete and will generate a 200).  If your
+  ftp server doesn't supply the completion status, all requests will be
+  assigned a response code of 200.  This allows the usage graph to display
+  all transfer requests (hits), and how many of those completed in success
+  (files - ie: 200 response codes).
+
+o Page totals won't accurately reflect reality, since there isn't really
+  the concept of a 'page' in regards to ftp services.  I have found that
+  setting the PageType value to "README", "FIRST", etc... seems to work
+  fairly well however,  and will give a pretty good indication of how
+  many 'non-binary' files were requested.  Of course, the content of your
+  ftp site will be different, so your results may vary.
+
+o Visit totals also won't accurately reflect reality, since visits are
+  triggered on PageType requests (see above).  What you usually wind up
+  with is visits=sites in most cases.
+
+o Entry/Exit pages will not be calculated for ftp logs.
+
+o For obvious reasons, referrers and user agents are not supported.
+
+o You _cannot_ analyze both web and ftp logs at the same time.. they must
+  be done separately in different runs.
+
+
+Notes on Referrers
+------------------
+
+Referrers are weird critters... They take many shapes and forms, which makes
+it much harder to analyze than a typical URL, which at least has some
+standardization.  What is contained in the referrer field of your log
+files varies depending on many factors, such as what site did the referral,
+what type of system it comes from and how the actual referral was generated.
+Why is this?  Well, because a user can get to your site in many ways... They
+may have your site bookmarked in their browser, they may simply type your
+sites URL field in their browser, they could have clicked on a link on some
+remote web page or they may have found your site from one of the many search
+engines and site indexes found on the web.  The Webalizer attempts to deal
+with all this variation in an intelligent way by doing certain things to
+the referrer string which makes it easier to analyze.  Of course, if your
+web server doesn't provide referrer information, you probably don't really
+care and are asking yourself why you are reading this section...
+
+Most referrers will take the form of "http://somesite.com/somepage.html",
+which is what you will get if the user clicks on a link somewhere on the
+web in order to get to your site.  Some will be a variation of this, and
+look something like "file:/some/such/sillyname", which is a reference from
+a HTML document on the users local machine.  Several variations of this can
+be used, depending on what type of system the user has, if he/she is on
+a local network, the type of network, etc...  To complicate things even
+more, dynamic HTML documents and HTML documents that are generated by
+CGI scripts or external programs produce lots of extra information which
+is tacked on to the end of the referrer string in an almost infinite number
+of ways.  If the user just typed your URL into their browser or clicked on
+a bookmark, there won't be any information in the referrer field and will
+take the form "-".
+
+In order to handle all these variations, The Webalizer parses the referrer
+field in a certain way.  First, if the referrer string begins with "http",
+it assumes it is a normal referral and converts the "http://" and following
+hostname to lowercase in order to simplify hiding if desired.  For example,
+the referrer "HTTP://WWW.MyHost.Com/This/Is/A/HTML/Document.html" will become
+"http://www.myhost.com/This/Is/A/HTML/Document.html".  Notice that only the
+"http://" and hostname are converted to lower case... The rest of the
+referrer field is left alone.  This follows standard convention, as the
+actual method (HTTP) and hostname are always case insensitive, while the
+document name portion is case sensitive.
+
+Referrers that came from search engines, dynamic HTML documents, CGI
+scripts and other external programs usually tack on additional information
+that it used to create the page.  A common example of this can be found
+in referrals that come from search engines and site indexes common on the
+web.  Sometimes, these referrers URLs can be several hundred characters
+long and include all the information that the user typed in to search for
+your site.  The Webalizer deals with this type of referrer by stripping
+off all the query information, which starts with a question mark '?'.
+The Referrer "http://search.yahoo.com/search?p=usa%26global%26link" will
+be converted to just "http://search.yahoo.com/search".
+
+When a user comes to your site by using one of their bookmarks or by
+typing in your URL directly into their browser, the referrer field is
+blank, and looks like "-".  Most sites will get more of these referrals
+than any other type.  The Webalizer converts this type of referral into
+the string "- (Direct Request)".  This is done in order to make it easier
+to hide via a command line option or configuration file option.  This is
+because the character "-" is a valid character elsewhere in a referrer
+field, and if not turned into something unique, could not be hidden without
+possibly hiding other referrers that shouldn't be.
+
+
+Notes on Character Escaping
+---------------------------
+
+The HTTP protocol defines certain ways that URLs can look and behave.  To
+some extent, referrer fields follow most of the same conventions.  Character
+escaping is a technique by which non-printable or other non-ASCII (and even
+some ASCII) characters can be used in a URL.  This is done by placing the
+Hexadecimal value of the character in the URL, preceded by a percent sign '%'.
+Since Hex values are made up of ASCII characters, any character can be
+escaped to ensure only printable ASCII characters are present in the URL.
+Some systems take this concept to the extreme and escape all sorts of stuff,
+even characters that don't need to be escaped.  To deal with this, The
+Webalizer will un-escape URLs and referrers before being processed. For
+Example, the URL "/www.webalizer.org/%7Efoo/bar.html" is the same URL as
+"/www.webalizer.org/~foo/bar.html", a very common form of a URL to access
+users web pages.  If the URLs were not un-escaped, they would be treated as
+two separate documents, even though they are really one and the same.
+
+
+Search String Analysis
+----------------------
+
+  The Webalizer will do a minimal analysis on referrer strings that
+it finds, looking for well known search string patterns.  Most of
+the major search engines are supported, such as Yahoo!, Altavista,
+Lycos, etc...  Unfortunately, search engines are always changing
+their internal/CGI query formats, new search engines are coming on
+line every day, and the ability to detect _all_ search strings is
+nearly impossible.  However, it should be accurate enough to give
+a good indication of what users were searching for when they stumbled
+across your site.  Note: as of version 1.31, search engines can now
+be specified within a configuration file.  See the sample.conf file
+for examples of how to specify additional search engines.
+
+
+
+Notes on Visits/Entry/Exit Figures
+----------------------------------
+
+The majority of data analyzed and reported on by The Webalizer is
+as accurate and correct as possible based on the input log file.
+However, due to the limitation of the HTTP protocol, the use of
+firewalls, proxy servers, multi-user systems, the rotation of your
+log files, and a myriad of other conditions, some of these numbers
+cannot, without absolute accuracy, be calculated.  In particular,
+Visits, Entry Pages and Exit Pages are suspect to random errors
+due to the above and other conditions.  The reason for this is
+twofold, 1) Log files are finite in size and time interval, and
+2) There is no way to distinguish multiple individual users apart
+given only an IP address.  Because log files are finite, they have
+a beginning and ending, which can be represented as a fixed time
+period.  There is no way of knowing what happened previous to this
+time period, nor is it possible to predict future events based on
+it.  Also, because it is impossible to distinguish individual users
+apart, multiple users that have the same IP address all appear to
+be a single user, and are treated as such.  This is most common where
+corporate users sit behind a proxy/firewall to the outside world,
+and all requests appear to come from the same location (the address
+of the proxy/firewall itself).  Dynamic IP assignment (used with
+dial-up Internet accounts) also present a problem, since the same
+user will appear as to come from multiple places.
+
+For example, suppose two users visit your server from XYZ company,
+which has their network connected to the Internet by a proxy server
+'fw.xyz.com'.  All requests from the network look as though they
+originated from 'fw.xyz.com', even though they were really initiated
+from two separate users on different PCs.  The Webalizer would
+see these requests as from the same location, and would record only
+1 visit, when in reality, there were two.  Because entry and exit
+pages are calculated in conjunction with visits, this situation
+would also only record 1 entry and 1 exit page, when in reality,
+there should be 2.
+
+As another example, say a single user at XYZ company is surfing
+around your website..  They arrive at 11:52pm the last day of
+the month, and continue surfing until 12:30am, which is now a
+new day (in a new month).  Since a common practice is to rotate
+(save then clear) the server logs at the end of the month, you
+now have the users visit logged in two different files (current
+and previous months).  Because of this (and the fact that the
+Webalizer clears history between months), the first page the
+user requests after midnight will be counted as an entry page.
+This is unavoidable, since it is the first request seen by that
+particular IP address in the new month.
+
+For the most part, the numbers shown for visits, entry and exit
+pages are pretty good 'guesses', even though they may not be 100%
+accurate.  They do provide a good indication of overall trends,
+and shouldn't be that far off from the real numbers to count much.
+You should probably consider them as the 'minimum' amount possible,
+since the actual (real) values should always be equal or greater
+in all cases.
+
+
+Exporting Webalizer Data
+------------------------
+
+The Webalizer now has the ability to dump all object tables to tab
+delimited ASCII text files, which can then be imported into most
+popular database and spreadsheet programs. The files are not normally
+produced, as on some sites they could become quite large, and are only
+enabled by the use of the Dump* configuration keywords.  The filename
+extensions default to '.tab' however may be changed using the
+'DumpExtension' keyword.  Since this data contains all items, even
+those normally hidden, it may not be desirable to have them located
+in the output directory where they may be visible to normal web users..
+For this reason, the 'DumpPath' configuration keyword is available,
+and allows the placement of these files somewhere outside the normal
+web server document tree.  An optional 'header' record may be written
+to these files as well, and is useful when the data is to be imported
+into a spreadsheet.. databases will not normally need the header.  If
+enabled, the header is simply the column names as the first record of
+the file, tab separated.
+
+
+Log files and The Webalizer
+---------------------------
+
+Most sites will choose to have The Webalizer run from cron at specified
+intervals.  Care should be taken to ensure that data is not lost as a
+result of log file rotations.  A suggested practice is to rotate your
+web server logs at the end of each month as close to midnight as possible,
+then have The Webalizer process the 'end of month' log file before running
+statistics on the new, current log.  On our systems, a shell script called
+'rotate_logs' is run at midnight, the end of each month.  This script file
+looks like:
+
+------------------------- file: rotate_logs ------------------------------
+#!/bin/sh
+
+# halt the server
+kill `cat /var/lib/httpd/logs/httpd.pid`
+
+# define backup names
+OLD_ACCESS_LOG=/var/lib/httpd/logs/old/access_log.`date +%y%m%d-%H%M%S`
+OLD_ERROR_LOG=/var/lib/httpd/logs/old/error_log.`date +%y%m%d-%H%M%S`
+
+# make end of month copy for analyzer
+cp /var/lib/httpd/logs/access_log /var/lib/httpd/logs/access_log.backup
+
+# move files to archive directory
+mv /var/lib/httpd/logs/access_log `echo $OLD_ACCESS_LOG`
+mv /var/lib/httpd/logs/error_log  `echo $OLD_ERROR_LOG`
+
+# restart web server
+/usr/sbin/httpd
+
+# compress the archived files
+/bin/gzip $OLD_ACCESS_LOG
+/bin/gzip $OLD_ERROR_LOG
+------------------------- end of file ------------------------------------
+This script first stops the web server using a 'kill' command.  Apache
+keeps the PID of the server in the file httpd.pid, so we use it as the
+argument for the kill.  Next, it defines some names for the backup files,
+which are basically the name of the files with the date and time appended
+to the end of them.  It then makes a copy of the log file, appended with
+'.backup' in the log directory, moves the current log files to an archive
+directory (/var/lib/httpd/logs/old) and restarts the server.  This setup 
+allows the web server to be down for the minimum amount of time needed,
+which is important for busy sites.  If you don't want to stop the server,
+you can remove the initial 'kill' command, and replace the '/usr/sbin/httpd'
+line with "kill -1 `cat /var/lib/httpd/logs/httpd.pid`" command instead,
+On most web servers, this will cause a restart of the server and create
+the new log files in the process...
+
+At this point, we have made copies of the previous months logs,  the web
+server is going about its business as usual, and we have all the time in
+the world to do any other additional processing we want.  The last two
+lines of the script compress the archived logs using the GNU zip program
+(gzip).  Remember, we still have a copy of the log which we can now run
+The Webalizer on without having to do any further processing.
+
+Next, we define two crontab entries.  The first runs the above 'rotate_logs'
+script at midnight at the end of the month.  The second runs The Webalizer
+on the '.backup' log file created above at 5 minutes after midnight.  This
+gives other end of month processing jobs a chance to run so we don't bog
+the system down too much.  If you have lots of end of month stuff going on,
+you can change the timing to suit your needs.  The crontab entries look
+something like:
+
+------------------------- crontab entries --------------------------------
+# Rotate web server logs and run monthly analysis
+0 0 1 * *       /usr/local/adm/rotate_logs
+5 0 1 * *       /usr/bin/webalizer -Q /var/lib/httpd/logs/access_log.backup
+------------------------- end of crontab ---------------------------------
+
+As you can see, the log rotations occur at midnight, and the analysis
+is done at 5 minutes after.  Once you verify that The Webalizer ran
+successfully, the access_log.backup file can be deleted as it isn't
+needed any more.  If you need to re-run the analysis, you still have
+the compressed archive copy that the shell script created.  In order
+for the above analysis to work properly, you should have already
+created an /etc/webalizer.conf configuration file suitable for your
+site, or otherwise specify configuration options or a configuration
+file on the crontab command line above.
+
+If you want The Webalizer to be run more often than once a month, you
+can specify additional crontab entries to do this as well.  Care should
+be taken however to ensure that The Webalizer is not running when the
+end of month processing above occurs, or unpredictable results may
+happen (such as an inability to rotate the logs due to a file lock). 
+The easiest way is to run it on the half hour with a crontab entry like:
+
+30 * * * *      /usr/bin/webalizer
+
+
+Reverse DNS Lookups
+-------------------
+
+The Webalizer fully supports both IPv4 and IPv6 DNS lookups, and
+maintains a cache of those lookups to reduce processing the same
+addresses in subsequent runs.  The cache file can be created at
+run-time, or may be created before running the webalizer using either
+the stand alone 'webazolver' program, or The Webalizer (DNS) Cache
+file Manager program 'wcmgr'.  In order to perform reverse lookups,
+a DNS Cache file must be specified, either on the command line or in
+a configuration file.  In order to create/update the cache file at
+run-time, the number of DNS Children must also be specified, and can
+be anything between 1 and 100.  This specifies the number of child
+processes to be forked, each of which will perform network DNS
+queries in order to lookup up the addresses and update the cache.
+Cached entries that are older than a specified TTL (time to live)
+will be expired, and if encountered again in a log, will be looked
+up at that time in order to 'freshen' them (verify the name is still
+the same and update its timestamp).  The default TTL is 7 days, however
+may be set to anything between 1 and 100 days.  Using the 'wcmgr'
+program, entries may also be marked as 'permanent', in which case
+they will persist (with an infinite TTL) in the cache until manually
+removed.  See the file DNS.README for additional information.
+
+
+Geolocation Lookups
+-------------------
+
+The Webalizer has the ability to perform geolocation lookups on IP
+addresses using either it's own internal GeoDB database or optionally
+the GeoIP database from MaxMind, Inc. (www.maxmind.com).  If used,
+unresolved addresses will be searched for in the database and it's
+country of origin will be returned if found.  This actually produces
+more accurate Country information than DNS lookups, since the DNS
+address space has additional gcTLDs that do not necessarily map to
+a specific country (such as '.net' and '.com').  It is possible to
+use both DNS lookups and geolocation lookups at the same time, which
+will cause any addresses that could not be resolved using DNS lookups
+to then be looked up in the database, greatly reducing the number of
+'Unknown/Unresolved' entries in the generated reports.  The native
+GeoDB geolocation database provided by The Webalizer fully supports
+IPv4 and IPv6 lookups, is updated regularly, and is the preferred
+geolocation method for use with The Webalizer.  The most current
+version of the database can be obtained from our ftp site.
+
+
+Language Support
+----------------
+
+Version 1.0x of The Webalizer added language support.  This
+support is only provided at compile time in the form of an
+include file containing all the strings used by The Webalizer.
+The source distribution contains all language files that were
+available at the time, with English being the default as
+that is the only human language I speak fluently, and me
+Espanol es muy malo.  Several people have already indicated
+the desire to do translations into various languages, and as
+I receive the language files, will make them available via
+ftp at ftp://ftp.mrunix.net/pub/webalizer/lang.  Unless there
+happens to be a binary distribution in the language you need,
+you will need to grab the source distribution and compile the
+program yourself. See the file INSTALL that comes in the source
+distribution for information on how to use a language other than
+English.
+
+It should also be noted that the GD graphics library, used to
+produce the in-line graphics in the output HTML,  doesn't
+support extended character sets, so if you are translating
+the language file, you will no doubt encounter this problem.
+
+New: You can now specify the language to use when you are building
+     program from source, using the configure script.  Just add
+     --with-language=language_name   , where 'language_name' is the
+     name of a valid language file in the /lang/ directory.  For
+     example, --with-language=french  will build using French as
+     the default language.  You should consult the INSTALL file
+     for additional information on building the program from source.
+
+
+Known Issues
+------------
+
+ o Memory Usage.  The Webalizer makes liberal use of memory for internal
+    data structures during analysis.  Lack of real physical memory will
+    noticeably degrade performance by doing lots of swapping between memory
+    and disk.  One user who had a rather large log file noticed that The
+    Webalizer took over 7 hours to run with only 16 Meg of memory.  Once
+    memory was increased, the time was reduced to a few minutes.
+
+
+ o Performance.  The Hide*, Group*, Ignore*, Include*  and IndexAlias
+    configuration options can cause a performance decrease if lots of
+    them are used.  The reason for this is that every log record must
+    be scanned for each item in each list.  For example, if you are
+    Hiding 20 objects, Grouping 20 more, and Ignoring 5,  each record
+    is scanned, at most, 46 times (20+20+5 + an IndexAlias scan).
+    On really large log files, this can have a profound impact.  It
+    is recommended that you use the least amount of these configuration
+    options that you can, as it will greatly improve performance.
+
+
+Final Notes
+-----------
+
+A lot of time and effort went into making The Webalizer, and to ensure that
+the results are as accurate as possible.  If you find any abnormalities or
+inconsistent results, bugs, errors, omissions or anything else that doesn't
+look right, please let me know so I can investigate the problem or correct
+the error.  This goes for the minimal documentation as well.  Suggestions
+for future versions are also welcome and appreciated.
diff --git a/README.FIRST b/README.FIRST
new file mode 100644 (file)
index 0000000..cab7c99
--- /dev/null
@@ -0,0 +1,21 @@
+Upgrade information for the Webalizer Version 2.2x
+
+This release is, for the most part, a drop-in replacement for all
+installations currently running 2.01, and all users are encouraged
+to upgrade.  See the 'CHANGES' file for a full list of changes
+since version 2.01-10.
+
+Note: The history file format has changed in v2.20 in order to keep
+more than 12 months.  Existing history files will be automatically
+converted to the new format the first time they are read.
+
+Note: This version redefines the '-v' command line switch to mean
+'verbose', which will cause the program to display additional
+informational and debugging messages at run-time.  This should not
+cause any major problems, as previously it would simply cause the
+program to display its version information and then exit.
+
+Report bugs to 'brad at mrunix dot net' with "Webalizer" somewhere
+in the subject. Please do not send HTML formatted e-mails or e-mail
+containing HTML tags as my mail server will reject them.  Thanks!
+
diff --git a/configure b/configure
new file mode 100755 (executable)
index 0000000..28fe084
--- /dev/null
+++ b/configure
@@ -0,0 +1,7509 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.61 for webalizer V2.23.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+as_nl='
+'
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+if test "x$CONFIG_SHELL" = x; then
+  if (eval ":") 2>/dev/null; then
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+
+  if test $as_have_required = yes &&    (eval ":
+(as_func_return () {
+  (exit \$1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0) || { (exit 1); exit 1; }
+
+(
+  as_lineno_1=\$LINENO
+  as_lineno_2=\$LINENO
+  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
+  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
+") 2> /dev/null; then
+  :
+else
+  as_candidate_shells=
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  case $as_dir in
+        /*)
+          for as_base in sh bash ksh sh5; do
+            as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+          done;;
+       esac
+done
+IFS=$as_save_IFS
+
+
+      for as_shell in $as_candidate_shells $SHELL; do
+        # Try only shells that exist, to save several forks.
+        if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+               { ("$as_shell") 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+_ASEOF
+}; then
+  CONFIG_SHELL=$as_shell
+              as_have_required=yes
+              if { "$as_shell" 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+(as_func_return () {
+  (exit $1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = "$1" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test $exitcode = 0) || { (exit 1); exit 1; }
+
+(
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
+
+_ASEOF
+}; then
+  break
+fi
+
+fi
+
+      done
+
+      if test "x$CONFIG_SHELL" != x; then
+  for as_var in BASH_ENV ENV
+        do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+        done
+        export CONFIG_SHELL
+        exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+
+    if test $as_have_required = no; then
+  echo This script requires a shell more modern than all the
+      echo shells that I found on your system.  Please install a
+      echo modern shell, or manually run the script under such a
+      echo shell if you do have one.
+      { (exit 1); exit 1; }
+fi
+
+
+fi
+
+fi
+
+
+
+(eval "as_func_return () {
+  (exit \$1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0") || {
+  echo No shell found that supports shell functions.
+  echo Please tell autoconf@gnu.org about your system,
+  echo including any error possibly output before this
+  echo message
+}
+
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line after each line using $LINENO; the second 'sed'
+  # does the real work.  The second script uses 'N' to pair each
+  # line-number line with the line containing $LINENO, and appends
+  # trailing '-' during substitution so that $LINENO is not a special
+  # case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee
+  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir
+fi
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s='ln -s'
+  # ... but there are two gotchas:
+  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+  # In both cases, we have to default to `cp -p'.
+  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+    as_ln_s='cp -p'
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+        test -d "$1/.";
+      else
+       case $1 in
+        -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+
+exec 7<&0 </dev/null 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Identity of this package.
+PACKAGE_NAME='webalizer'
+PACKAGE_TARNAME='webalizer'
+PACKAGE_VERSION='V2.23'
+PACKAGE_STRING='webalizer V2.23'
+PACKAGE_BUGREPORT=''
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='SHELL
+PATH_SEPARATOR
+PACKAGE_NAME
+PACKAGE_TARNAME
+PACKAGE_VERSION
+PACKAGE_STRING
+PACKAGE_BUGREPORT
+exec_prefix
+prefix
+program_transform_name
+bindir
+sbindir
+libexecdir
+datarootdir
+datadir
+sysconfdir
+sharedstatedir
+localstatedir
+includedir
+oldincludedir
+docdir
+infodir
+htmldir
+dvidir
+pdfdir
+psdir
+libdir
+localedir
+mandir
+DEFS
+ECHO_C
+ECHO_N
+ECHO_T
+LIBS
+build_alias
+host_alias
+target_alias
+OPTS
+WCMGR_LIBS
+DEFAULT_LANG
+CC
+CFLAGS
+LDFLAGS
+CPPFLAGS
+ac_ct_CC
+EXEEXT
+OBJEXT
+LN_S
+INSTALL_PROGRAM
+INSTALL_SCRIPT
+INSTALL_DATA
+CPP
+GREP
+EGREP
+GEODB_LOC
+LIBOBJS
+LTLIBOBJS'
+ac_subst_files=''
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *)   ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
+    eval enable_$ac_feature=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
+    eval enable_$ac_feature=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
+    eval with_$ac_package=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
+    eval with_$ac_package=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute directory names.
+for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
+               datadir sysconfdir sharedstatedir localstatedir includedir \
+               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+               libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; }
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  { echo "$as_me: error: Working directory cannot be determined" >&2
+   { (exit 1); exit 1; }; }
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  { echo "$as_me: error: pwd does not report name of working directory" >&2
+   { (exit 1); exit 1; }; }
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$0" ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$0" : 'X\(//\)[^/]' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$0" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+       cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
+   { (exit 1); exit 1; }; }
+       pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures webalizer V2.23 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                         [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                         [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR           user executables [EPREFIX/bin]
+  --sbindir=DIR          system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR       program executables [EPREFIX/libexec]
+  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
+  --libdir=DIR           object code libraries [EPREFIX/lib]
+  --includedir=DIR       C header files [PREFIX/include]
+  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
+  --datarootdir=DIR      read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR          read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR          info documentation [DATAROOTDIR/info]
+  --localedir=DIR        locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR           man documentation [DATAROOTDIR/man]
+  --docdir=DIR           documentation root [DATAROOTDIR/doc/webalizer]
+  --htmldir=DIR          html documentation [DOCDIR]
+  --dvidir=DIR           dvi documentation [DOCDIR]
+  --pdfdir=DIR           pdf documentation [DOCDIR]
+  --psdir=DIR            ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of webalizer V2.23:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --disable-largefile     omit support for large files
+  --enable-static         Build as static executable       [default=no]
+  --enable-debug          Compile with debugging code      [default=no]
+  --enable-dns            Enable DNS/GeoDB lookup code     [default=yes]
+  --enable-bz2            Enable BZip2 decompression code  [default=no]
+  --enable-geoip          Enable GeoIP geolocation code    [default=no]
+  --enable-oldhash        Use old hash function (slower)   [default=no]
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-gd=DIR           Alternate location for gd header files
+  --with-gdlib=DIR        Alternate location for gd library
+  --with-png=DIR          Alternate location for png header files
+  --with-pnglib=DIR       Alternate location for png library
+  --with-z=DIR            Alternate location for libz header files
+  --with-zlib=DIR         Alternate location for z library
+  --with-db=DIR           Alternate location for libdb header files
+  --with-dblib=DIR        Alternate location for db library
+  --with-bz2=DIR          Alternate location for bz2 header files
+  --with-bz2lib=DIR       Alternate location for bz2 library
+  --with-geoip=DIR        Alternate location for libGeoIP header files
+  --with-geoiplib=DIR     Alternate location for geoip library
+  --with-geodb=DIR        Default GeoDB data dir [/usr/share/GeoDB]
+  --with-language=name    Use language 'name' (default is english)
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CPP         C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" || continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+webalizer configure V2.23
+generated by GNU Autoconf 2.61
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by webalizer $as_me V2.23, which was
+generated by GNU Autoconf 2.61.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  echo "PATH: $as_dir"
+done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    2)
+      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+       ac_must_keep_next=false # Got value, back to normal.
+      else
+       case $ac_arg in
+         *=* | --config-cache | -C | -disable-* | --disable-* \
+         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+         | -with-* | --with-* | -without-* | --without-* | --x)
+           case "$ac_configure_args0 " in
+             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+           esac
+           ;;
+         -* ) ac_must_keep_next=true ;;
+       esac
+      fi
+      ac_configure_args="$ac_configure_args '$ac_arg'"
+      ;;
+    esac
+  done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      *) $as_unset $ac_var ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+       "s/'\''/'\''\\\\'\'''\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+       eval ac_val=\$$ac_var
+       case $ac_val in
+       *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+       esac
+       echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      echo "$as_me: caught signal $ac_signal"
+    echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -n "$CONFIG_SITE"; then
+  set x "$CONFIG_SITE"
+elif test "x$prefix" != xNONE; then
+  set x "$prefix/share/config.site" "$prefix/etc/config.site"
+else
+  set x "$ac_default_prefix/share/config.site" \
+       "$ac_default_prefix/etc/config.site"
+fi
+shift
+for ac_site_file
+do
+  if test -r "$ac_site_file"; then
+    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+       { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+       { echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
+echo "$as_me:   former value:  $ac_old_val" >&2;}
+       { echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
+echo "$as_me:   current value: $ac_new_val" >&2;}
+       ac_cache_corrupted=:
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+OPTS=${DEFS}
+LIBS=${LIBS}
+
+
+
+
+DEFAULT_LANG="english"
+
+
+
+IN_CFLAGS=${CFLAGS}
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO: checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+#
+# List of possible output files, starting from the most likely.
+# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
+# only as a last resort.  b.out is created by i960 compilers.
+ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
+#
+# The IRIX 6 linker writes into existing files which may not be
+# executable, retaining their permissions.  Remove them first so a
+# subsequent execution test works.
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { (ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
+       ;;
+    [ab].out )
+       # We found the default executable, but exeext='' is most
+       # certainly right.
+       break;;
+    *.* )
+        if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       then :; else
+          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+       fi
+       # We set ac_cv_exeext here because the later test for it is not
+       # safe: cross compilers may not add the suffix if given an `-o'
+       # argument, so we may need to know it at that point already.
+       # Even if this section looks crufty: it has the advantage of
+       # actually working.
+       break;;
+    * )
+       break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+
+{ echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6; }
+if test -z "$ac_file"; then
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+       { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+  fi
+fi
+{ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6; }
+
+{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+         break;;
+    * ) break;;
+  esac
+done
+else
+  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
+if test "${ac_cv_objext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       CFLAGS=""
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS="-g"
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_c89=$ac_arg
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6; } ;;
+  xno)
+    { echo "$as_me:$LINENO: result: unsupported" >&5
+echo "${ECHO_T}unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+{ echo "$as_me:$LINENO: checking whether ln -s works" >&5
+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+echo "${ECHO_T}no, using $LN_S" >&6; }
+fi
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
+echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+       if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+         if test $ac_prog = install &&
+           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # AIX install.  It has an incompatible calling convention.
+           :
+         elif test $ac_prog = install &&
+           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # program-specific install script used by HP pwplus--don't use.
+           :
+         else
+           ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+           break 3
+         fi
+       fi
+      done
+    done
+    ;;
+esac
+done
+IFS=$as_save_IFS
+
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+
+
+
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then
+  enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+  { echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5
+echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6; }
+if test "${ac_cv_sys_largefile_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_sys_largefile_CC=no
+     if test "$GCC" != yes; then
+       ac_save_CC=$CC
+       while :; do
+        # IRIX 6.2 and later do not support large files by default,
+        # so use the C compiler's -n32 option if that helps.
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+        rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+        CC="$CC -n32"
+        rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_sys_largefile_CC=' -n32'; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+        break
+       done
+       CC=$ac_save_CC
+       rm -f conftest.$ac_ext
+    fi
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5
+echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6; }
+  if test "$ac_cv_sys_largefile_CC" != no; then
+    CC=$CC$ac_cv_sys_largefile_CC
+  fi
+
+  { echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6; }
+if test "${ac_cv_sys_file_offset_bits+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  while :; do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_sys_file_offset_bits=no; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_sys_file_offset_bits=64; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_cv_sys_file_offset_bits=unknown
+  break
+done
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5
+echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+;;
+esac
+rm -f conftest*
+  if test $ac_cv_sys_file_offset_bits = unknown; then
+    { echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5
+echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6; }
+if test "${ac_cv_sys_large_files+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  while :; do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_sys_large_files=no; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_sys_large_files=1; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_cv_sys_large_files=unknown
+  break
+done
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5
+echo "${ECHO_T}$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+;;
+esac
+rm -f conftest*
+  fi
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ echo "$as_me:$LINENO: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # Extract the first word of "grep ggrep" to use in msg output
+if test -z "$GREP"; then
+set dummy grep ggrep; ac_prog_name=$2
+if test "${ac_cv_path_GREP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_path_GREP_found=false
+# Loop through the user's path and test for each of PROGNAME-LIST
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_prog in grep ggrep; do
+  for ac_exec_ext in '' $ac_executable_extensions; do
+    ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+    { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+    # Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    ac_count=`expr $ac_count + 1`
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+
+    $ac_path_GREP_found && break 3
+  done
+done
+
+done
+IFS=$as_save_IFS
+
+
+fi
+
+GREP="$ac_cv_path_GREP"
+if test -z "$GREP"; then
+  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     # Extract the first word of "egrep" to use in msg output
+if test -z "$EGREP"; then
+set dummy egrep; ac_prog_name=$2
+if test "${ac_cv_path_EGREP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_path_EGREP_found=false
+# Loop through the user's path and test for each of PROGNAME-LIST
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_prog in egrep; do
+  for ac_exec_ext in '' $ac_executable_extensions; do
+    ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+    { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+    # Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    ac_count=`expr $ac_count + 1`
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+
+    $ac_path_EGREP_found && break 3
+  done
+done
+
+done
+IFS=$as_save_IFS
+
+
+fi
+
+EGREP="$ac_cv_path_EGREP"
+if test -z "$EGREP"; then
+  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+
+   fi
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_header_stdc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_header_stdc=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+                  (('a' <= (c) && (c) <= 'i') \
+                    || ('j' <= (c) && (c) <= 'r') \
+                    || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+       || toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                 inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+              { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+{ echo "$as_me:$LINENO: checking whether char is unsigned" >&5
+echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6; }
+if test "${ac_cv_c_char_unsigned+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((char) -1) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_c_char_unsigned=no
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_c_char_unsigned=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5
+echo "${ECHO_T}$ac_cv_c_char_unsigned" >&6; }
+if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then
+  cat >>confdefs.h <<\_ACEOF
+#define __CHAR_UNSIGNED__ 1
+_ACEOF
+
+fi
+
+{ echo "$as_me:$LINENO: checking for u_int64_t" >&5
+echo $ECHO_N "checking for u_int64_t... $ECHO_C" >&6; }
+if test "${ac_cv_type_u_int64_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+typedef u_int64_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+  return 0;
+if (sizeof (ac__type_new_))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_type_u_int64_t=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_type_u_int64_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_u_int64_t" >&5
+echo "${ECHO_T}$ac_cv_type_u_int64_t" >&6; }
+if test $ac_cv_type_u_int64_t = yes; then
+  :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define u_int64_t unsigned long long
+_ACEOF
+
+fi
+
+{ echo "$as_me:$LINENO: checking whether altzone is declared" >&5
+echo $ECHO_N "checking whether altzone is declared... $ECHO_C" >&6; }
+if test "${ac_cv_have_decl_altzone+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <time.h>
+
+int
+main ()
+{
+#ifndef altzone
+  (void) altzone;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_altzone=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_decl_altzone=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_altzone" >&5
+echo "${ECHO_T}$ac_cv_have_decl_altzone" >&6; }
+if test $ac_cv_have_decl_altzone = yes; then
+  OPTS="-DHAVE_ALTZONE ${OPTS}"
+fi
+
+
+
+if test "$GCC" = "yes"; then
+
+  # Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then
+  enableval=$enable_static; LDFLAGS="--static ${LDFLAGS}"
+fi
+
+
+  if test "$IN_CFLAGS" = ""; then
+    CFLAGS="-Wall -O2"
+  fi
+  if test "$ac_cv_c_char_unsigned" = "yes"; then
+    CFLAGS="-fsigned-char ${CFLAGS}"
+  fi
+
+  # Check whether --enable-debug was given.
+if test "${enable_debug+set}" = set; then
+  enableval=$enable_debug; CFLAGS="-g ${CFLAGS}"
+fi
+
+
+else
+  if test "$IN_CFLAGS" = ""; then
+    CFLAGS="-g"
+  fi
+fi
+
+
+
+# Check whether --with-gd was given.
+if test "${with_gd+set}" = set; then
+  withval=$with_gd; S_GD="${withval}"; CPPFLAGS="${CPPFLAGS} -I${withval}"
+fi
+
+
+# Check whether --with-gdlib was given.
+if test "${with_gdlib+set}" = set; then
+  withval=$with_gdlib; S_GDLIB="${withval}"; LDFLAGS="-L${withval} ${LDFLAGS}"
+fi
+
+
+# Check whether --with-png was given.
+if test "${with_png+set}" = set; then
+  withval=$with_png; S_PNG="${withval}"; CPPFLAGS="${CPPFLAGS} -I${withval}"
+fi
+
+
+# Check whether --with-pnglib was given.
+if test "${with_pnglib+set}" = set; then
+  withval=$with_pnglib; S_PNGLIB="${withval}"; LDFLAGS="-L${withval} ${LDFLAGS}"
+fi
+
+
+# Check whether --with-z was given.
+if test "${with_z+set}" = set; then
+  withval=$with_z; S_Z="${withval}"; CPPFLAGS="${CPPFLAGS} -I${withval}"
+fi
+
+
+# Check whether --with-zlib was given.
+if test "${with_zlib+set}" = set; then
+  withval=$with_zlib; S_ZLIB="${withval}"; LDFLAGS="-L${withval} ${LDFLAGS}"
+fi
+
+
+# Check whether --with-db was given.
+if test "${with_db+set}" = set; then
+  withval=$with_db; S_DB="${withval}"; CPPFLAGS="${CPPFLAGS} -I${withval}"
+fi
+
+
+# Check whether --with-dblib was given.
+if test "${with_dblib+set}" = set; then
+  withval=$with_dblib; S_DBLIB="${withval}"; LDFLAGS="-L${withval} ${LDFLAGS}"
+fi
+
+
+
+{ echo "$as_me:$LINENO: checking for main in -l44bsd" >&5
+echo $ECHO_N "checking for main in -l44bsd... $ECHO_C" >&6; }
+if test "${ac_cv_lib_44bsd_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l44bsd  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_44bsd_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_44bsd_main=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_44bsd_main" >&5
+echo "${ECHO_T}$ac_cv_lib_44bsd_main" >&6; }
+if test $ac_cv_lib_44bsd_main = yes; then
+  LIBS="-l44bsd ${LIBS}"
+fi
+
+
+for ac_header in getopt.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+              { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+              { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+{ echo "$as_me:$LINENO: checking for main in -lm" >&5
+echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6; }
+if test "${ac_cv_lib_m_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_m_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_m_main=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5
+echo "${ECHO_T}$ac_cv_lib_m_main" >&6; }
+if test $ac_cv_lib_m_main = yes; then
+  LIBS="-lm ${LIBS}"; HAVE_LIBM="1"
+fi
+
+if test "${HAVE_LIBM}" = "1"; then
+
+for ac_header in math.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+              { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+              { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+fi
+
+
+{ echo "$as_me:$LINENO: checking for main in -lz" >&5
+echo $ECHO_N "checking for main in -lz... $ECHO_C" >&6; }
+if test "${ac_cv_lib_z_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lz  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_z_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_z_main=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_z_main" >&5
+echo "${ECHO_T}$ac_cv_lib_z_main" >&6; }
+if test $ac_cv_lib_z_main = yes; then
+  LIBZ="yes"; LIBS="-lz ${LIBS}"
+fi
+
+if test "${LIBZ}" = "yes"; then
+  { echo "$as_me:$LINENO: checking for gzrewind in -lz" >&5
+echo $ECHO_N "checking for gzrewind in -lz... $ECHO_C" >&6; }
+if test "${ac_cv_lib_z_gzrewind+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lz  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gzrewind ();
+int
+main ()
+{
+return gzrewind ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_z_gzrewind=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_z_gzrewind=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_z_gzrewind" >&5
+echo "${ECHO_T}$ac_cv_lib_z_gzrewind" >&6; }
+if test $ac_cv_lib_z_gzrewind = yes; then
+  LIBZ="yes"
+else
+  LIBZ="no"
+fi
+
+  if test "${LIBZ}" = "no"; then
+    { { echo "$as_me:$LINENO: error: Old version of libz found.. please upgrade!" >&5
+echo "$as_me: error: Old version of libz found.. please upgrade!" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+else
+  { { echo "$as_me:$LINENO: error: z library not found.. please install libz" >&5
+echo "$as_me: error: z library not found.. please install libz" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+if test "${ac_cv_header_zlib_h+set}" = set; then
+  { echo "$as_me:$LINENO: checking for zlib.h" >&5
+echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_zlib_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5
+echo "${ECHO_T}$ac_cv_header_zlib_h" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking zlib.h usability" >&5
+echo $ECHO_N "checking zlib.h usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <zlib.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking zlib.h presence" >&5
+echo $ECHO_N "checking zlib.h presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <zlib.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: zlib.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: zlib.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: zlib.h: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: zlib.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: zlib.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: zlib.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: zlib.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: zlib.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: zlib.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: zlib.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: zlib.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: zlib.h: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for zlib.h" >&5
+echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_zlib_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_header_zlib_h=$ac_header_preproc
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5
+echo "${ECHO_T}$ac_cv_header_zlib_h" >&6; }
+
+fi
+if test $ac_cv_header_zlib_h = yes; then
+  HDR="yes"
+else
+  HDR="no"
+fi
+
+
+if test "${HDR}" = "no"; then
+  { { echo "$as_me:$LINENO: error: zlib.h header not found.. please install" >&5
+echo "$as_me: error: zlib.h header not found.. please install" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+
+{ echo "$as_me:$LINENO: checking for main in -lpng" >&5
+echo $ECHO_N "checking for main in -lpng... $ECHO_C" >&6; }
+if test "${ac_cv_lib_png_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpng  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_png_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_png_main=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_png_main" >&5
+echo "${ECHO_T}$ac_cv_lib_png_main" >&6; }
+if test $ac_cv_lib_png_main = yes; then
+  LIBPNG="yes"; LIBS="-lpng ${LIBS}"
+else
+  LIBPNG="no"
+fi
+
+if test "${LIBPNG}" = "no"; then
+  { { echo "$as_me:$LINENO: error: png library not found.. please install libpng" >&5
+echo "$as_me: error: png library not found.. please install libpng" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+
+{ echo "$as_me:$LINENO: checking for main in -lgd" >&5
+echo $ECHO_N "checking for main in -lgd... $ECHO_C" >&6; }
+if test "${ac_cv_lib_gd_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgd  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_gd_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_gd_main=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_gd_main" >&5
+echo "${ECHO_T}$ac_cv_lib_gd_main" >&6; }
+if test $ac_cv_lib_gd_main = yes; then
+  LIBGD="yes"; LIBS="-lgd ${LIBS}"
+fi
+
+if test "${LIBGD}" = "yes"; then
+  { echo "$as_me:$LINENO: checking for gdImagePng in -lgd" >&5
+echo $ECHO_N "checking for gdImagePng in -lgd... $ECHO_C" >&6; }
+if test "${ac_cv_lib_gd_gdImagePng+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgd  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gdImagePng ();
+int
+main ()
+{
+return gdImagePng ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_gd_gdImagePng=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_gd_gdImagePng=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_gd_gdImagePng" >&5
+echo "${ECHO_T}$ac_cv_lib_gd_gdImagePng" >&6; }
+if test $ac_cv_lib_gd_gdImagePng = yes; then
+  LIBGD="yes"
+else
+  LIBGD="no"
+fi
+
+  if test "${LIBGD}" = "no"; then
+    { { echo "$as_me:$LINENO: error: Old version of libgd found.. please upgrade!" >&5
+echo "$as_me: error: Old version of libgd found.. please upgrade!" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+else
+  { { echo "$as_me:$LINENO: error: gd library not found.. please install libgd" >&5
+echo "$as_me: error: gd library not found.. please install libgd" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+if test "${ac_cv_header_gd_h+set}" = set; then
+  { echo "$as_me:$LINENO: checking for gd.h" >&5
+echo $ECHO_N "checking for gd.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_gd_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_gd_h" >&5
+echo "${ECHO_T}$ac_cv_header_gd_h" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking gd.h usability" >&5
+echo $ECHO_N "checking gd.h usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <gd.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking gd.h presence" >&5
+echo $ECHO_N "checking gd.h presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <gd.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: gd.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: gd.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gd.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: gd.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: gd.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: gd.h: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gd.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: gd.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gd.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: gd.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gd.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: gd.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gd.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: gd.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: gd.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: gd.h: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for gd.h" >&5
+echo $ECHO_N "checking for gd.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_gd_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_header_gd_h=$ac_header_preproc
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_gd_h" >&5
+echo "${ECHO_T}$ac_cv_header_gd_h" >&6; }
+
+fi
+if test $ac_cv_header_gd_h = yes; then
+  HDR="yes"
+else
+  HDR="no"
+fi
+
+
+if test "${HDR}" = "no"; then
+  { { echo "$as_me:$LINENO: error: gd.h header not found.. please install" >&5
+echo "$as_me: error: gd.h header not found.. please install" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+
+# Check whether --enable-dns was given.
+if test "${enable_dns+set}" = set; then
+  enableval=$enable_dns; USE_DNS="${enableval}"
+else
+  USE_DNS="yes"
+fi
+
+
+if test "${USE_DNS}" = "yes"; then
+  { echo "$as_me:$LINENO: checking for main in -ldb" >&5
+echo $ECHO_N "checking for main in -ldb... $ECHO_C" >&6; }
+if test "${ac_cv_lib_db_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldb  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_db_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_db_main=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_db_main" >&5
+echo "${ECHO_T}$ac_cv_lib_db_main" >&6; }
+if test $ac_cv_lib_db_main = yes; then
+  USE_DNS="yes"
+else
+  USE_DNS="no"; { echo "$as_me:$LINENO: WARNING: libdb not found.. DNS/GeoDB code disabled!" >&5
+echo "$as_me: WARNING: libdb not found.. DNS/GeoDB code disabled!" >&2;}
+fi
+
+fi
+
+if test "${USE_DNS}" = "yes"; then
+  if test "${ac_cv_header_db_h+set}" = set; then
+  { echo "$as_me:$LINENO: checking for db.h" >&5
+echo $ECHO_N "checking for db.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_db_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_db_h" >&5
+echo "${ECHO_T}$ac_cv_header_db_h" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking db.h usability" >&5
+echo $ECHO_N "checking db.h usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <db.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking db.h presence" >&5
+echo $ECHO_N "checking db.h presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <db.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: db.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: db.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: db.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: db.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: db.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: db.h: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: db.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: db.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: db.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: db.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: db.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: db.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: db.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: db.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: db.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: db.h: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for db.h" >&5
+echo $ECHO_N "checking for db.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_db_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_header_db_h=$ac_header_preproc
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_db_h" >&5
+echo "${ECHO_T}$ac_cv_header_db_h" >&6; }
+
+fi
+if test $ac_cv_header_db_h = yes; then
+  USE_DNS="yes"
+else
+  USE_DNS="no"; { echo "$as_me:$LINENO: WARNING: db.h not found.. DNS/GeoDB code disabled!" >&5
+echo "$as_me: WARNING: db.h not found.. DNS/GeoDB code disabled!" >&2;}
+fi
+
+
+fi
+
+if test "${USE_DNS}" = "yes"; then
+    OPTS="-DUSE_DNS ${OPTS}"
+  LIBS="-ldb ${LIBS}"
+  WCMGR_LIBS="-ldb"
+  { echo "$as_me:$LINENO: checking for fdatasync" >&5
+echo $ECHO_N "checking for fdatasync... $ECHO_C" >&6; }
+if test "${ac_cv_func_fdatasync+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define fdatasync to an innocuous variant, in case <limits.h> declares fdatasync.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define fdatasync innocuous_fdatasync
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char fdatasync (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef fdatasync
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char fdatasync ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_fdatasync || defined __stub___fdatasync
+choke me
+#endif
+
+int
+main ()
+{
+return fdatasync ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func_fdatasync=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_func_fdatasync=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_fdatasync" >&5
+echo "${ECHO_T}$ac_cv_func_fdatasync" >&6; }
+if test $ac_cv_func_fdatasync = yes; then
+  DUMMY=""
+fi
+
+  if test "$ac_cv_func_fdatasync" = "no"; then
+    { echo "$as_me:$LINENO: checking for fdatasync in -lrt" >&5
+echo $ECHO_N "checking for fdatasync in -lrt... $ECHO_C" >&6; }
+if test "${ac_cv_lib_rt_fdatasync+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lrt  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char fdatasync ();
+int
+main ()
+{
+return fdatasync ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_rt_fdatasync=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_rt_fdatasync=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_rt_fdatasync" >&5
+echo "${ECHO_T}$ac_cv_lib_rt_fdatasync" >&6; }
+if test $ac_cv_lib_rt_fdatasync = yes; then
+  LIBS="-lrt ${LIBS}";WCMGR_LIBS="-lrt ${WCMGR_LIBS}"
+fi
+
+  fi
+  { echo "$as_me:$LINENO: checking for socket" >&5
+echo $ECHO_N "checking for socket... $ECHO_C" >&6; }
+if test "${ac_cv_func_socket+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define socket to an innocuous variant, in case <limits.h> declares socket.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define socket innocuous_socket
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char socket (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef socket
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char socket ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_socket || defined __stub___socket
+choke me
+#endif
+
+int
+main ()
+{
+return socket ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func_socket=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_func_socket=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_socket" >&5
+echo "${ECHO_T}$ac_cv_func_socket" >&6; }
+if test $ac_cv_func_socket = yes; then
+  DUMMY=""
+else
+  DUMMY=""
+fi
+
+  if test "$ac_cv_func_socket" = "no"; then
+    { echo "$as_me:$LINENO: checking for main in -lsocket" >&5
+echo $ECHO_N "checking for main in -lsocket... $ECHO_C" >&6; }
+if test "${ac_cv_lib_socket_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_socket_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_socket_main=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_main" >&5
+echo "${ECHO_T}$ac_cv_lib_socket_main" >&6; }
+if test $ac_cv_lib_socket_main = yes; then
+  LIBS="-lsocket ${LIBS}"
+fi
+
+  fi
+
+for ac_header in sys/socket.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+              { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+              { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+  { echo "$as_me:$LINENO: checking for inet_pton" >&5
+echo $ECHO_N "checking for inet_pton... $ECHO_C" >&6; }
+if test "${ac_cv_func_inet_pton+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define inet_pton to an innocuous variant, in case <limits.h> declares inet_pton.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define inet_pton innocuous_inet_pton
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char inet_pton (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef inet_pton
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char inet_pton ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_inet_pton || defined __stub___inet_pton
+choke me
+#endif
+
+int
+main ()
+{
+return inet_pton ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func_inet_pton=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_func_inet_pton=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_inet_pton" >&5
+echo "${ECHO_T}$ac_cv_func_inet_pton" >&6; }
+if test $ac_cv_func_inet_pton = yes; then
+  DUMMY=""
+else
+  DUMMY=""
+fi
+
+  if test "$ac_cv_func_inet_pton" = "no"; then
+    { echo "$as_me:$LINENO: checking for inet_pton in -lnsl" >&5
+echo $ECHO_N "checking for inet_pton in -lnsl... $ECHO_C" >&6; }
+if test "${ac_cv_lib_nsl_inet_pton+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char inet_pton ();
+int
+main ()
+{
+return inet_pton ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_nsl_inet_pton=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_nsl_inet_pton=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_inet_pton" >&5
+echo "${ECHO_T}$ac_cv_lib_nsl_inet_pton" >&6; }
+if test $ac_cv_lib_nsl_inet_pton = yes; then
+  LIBS="-lnsl ${LIBS}"
+fi
+
+  fi
+fi
+
+
+# Check whether --enable-bz2 was given.
+if test "${enable_bz2+set}" = set; then
+  enableval=$enable_bz2; USE_BZIP="${enableval}"
+else
+  USE_BZIP="no"
+fi
+
+
+
+# Check whether --with-bz2 was given.
+if test "${with_bz2+set}" = set; then
+  withval=$with_bz2; S_BZ2="${withval}"; CPPFLAGS="${CPPFLAGS} -I${withval}"
+fi
+
+
+# Check whether --with-bz2lib was given.
+if test "${with_bz2lib+set}" = set; then
+  withval=$with_bz2lib; S_BZ2LIB="${withval}"; LDFLAGS="-L${withval} ${LDFLAGS}"
+fi
+
+
+if test "${USE_BZIP}" = "yes"; then
+  { echo "$as_me:$LINENO: checking for main in -lbz2" >&5
+echo $ECHO_N "checking for main in -lbz2... $ECHO_C" >&6; }
+if test "${ac_cv_lib_bz2_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbz2  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_bz2_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_bz2_main=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_bz2_main" >&5
+echo "${ECHO_T}$ac_cv_lib_bz2_main" >&6; }
+if test $ac_cv_lib_bz2_main = yes; then
+  USE_BZIP="yes"
+else
+  USE_BZIP="no"; { echo "$as_me:$LINENO: WARNING: libbz2 not found.. bzip2 code will will be disabled!" >&5
+echo "$as_me: WARNING: libbz2 not found.. bzip2 code will will be disabled!" >&2;}
+fi
+
+fi
+
+if test "${USE_BZIP}" = "yes"; then
+  { echo "$as_me:$LINENO: checking for BZ2_bzopen in -lbz2" >&5
+echo $ECHO_N "checking for BZ2_bzopen in -lbz2... $ECHO_C" >&6; }
+if test "${ac_cv_lib_bz2_BZ2_bzopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbz2  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+&nbs