[Spread-cvs] cvs commit: spread/daemon Changelog Makefile.in acconfig.h config.h.in configure configure.in defines.h Readme.txt arch.c arch.h config_gram.l config_parse.y configuration.c data_link.c events.c session.c sp.c AIX_makefile BSDI_makefile FreeBSD_makefile LINUX_makefile MacOSX_makefile NetBSD_makefile OpenBSD_makefile PARSER_makefile SGI_makefile SOLARIS2.5_makefile SOLARIS8_makefile SOLARIS_CC_makefile SOLARIS_makefile SUNOS_makefile

jonathan at spread.org jonathan at spread.org
Mon Sep 16 12:59:07 EDT 2002


jonathan    02/09/16 16:59:07

  Modified:    daemon   Readme.txt arch.c arch.h config_gram.l
                        config_parse.y configuration.c data_link.c events.c
                        session.c sp.c
  Added:       daemon   Changelog Makefile.in acconfig.h config.h.in
                        configure configure.in defines.h
  Removed:     daemon   AIX_makefile BSDI_makefile FreeBSD_makefile
                        LINUX_makefile MacOSX_makefile NetBSD_makefile
                        OpenBSD_makefile PARSER_makefile SGI_makefile
                        SOLARIS2.5_makefile SOLARIS8_makefile
                        SOLARIS_CC_makefile SOLARIS_makefile SUNOS_makefile
  Log:
  Change Spread's build system to use autoconf instead of manual makefiles.
  This change includes Theo's autoconf patch which did all of the substantive
  changes required. I made some small modifications when I merged it.
  A few small bugs in his patch were fixed.
  The ETCDIR and _SPREAD_PATH_PIDDIR defines were changed from commandline to be
  included in config.h.
  The name of the spread library was changed from libsp to libspread.
  Programs to support building Spread were moved to a buildtools directory.
  
  The changelog that was in Readme.txt was split off into a separate Changelog file.
  
  Revision  Changes    Path
  1.21      +31 -373   spread/daemon/Readme.txt
  
  Index: Readme.txt
  ===================================================================
  RCS file: /storage/cvsroot/spread/daemon/Readme.txt,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- Readme.txt	29 Aug 2002 15:43:01 -0000	1.20
  +++ Readme.txt	16 Sep 2002 16:59:06 -0000	1.21
  @@ -3,7 +3,7 @@
   
   /===========================================================================\
   | The Spread Group Communication Toolkit.                                   |
  -| Copyright (c) 1993-2001 Spread Concepts LLC                               |
  +| Copyright (c) 1993-2002 Spread Concepts LLC                               |
   | All rights reserved.                                                      |
   |                                                                           |
   | The Spread package is licensed under the Spread Open-Source License.      |
  @@ -25,7 +25,7 @@
   |    Dan Schoenblum   dansch at cnds.jhu.edu - Java Interface Developer.       |
   |    John Schultz     jschultz at cnds.jhu.edu - contribution to process group |
   |							   membership.      |
  -|    Theo Schlossnagle theos at cnds.jhu.edu - Perl library and Skiplists      |
  +|    Theo Schlossnagle theos at cnds.jhu.edu - Perl, Skiplists, autoconf       |
   |                                                                           |
   | Special thanks to the following for providing ideas and/or code:          |
   |    Ken Birman, Danny Dolev, Mike Goodrich, Ben Laurie,                    |
  @@ -33,11 +33,12 @@
   |                                                                           |
   | Contributors:                                                             |
   |    Ben Laurie	       ben at algroup.co.uk - FreeBSD port and warning fixes   |
  +|    Cristina Nita-Rotaru crisn at cnds.jhu.edu - Security                     |
   |                                                                           |
   | WWW    : http://www.spread.org  and  http://www.cnds.jhu.edu              |
   | Contact: spread at spread.org                                                |
   |                                                                           |
  -| Version 3.16.2 Built 02/April/2002                                        |
  +| Version 3.17.0 Built 16/September/2002                                    |
   \===========================================================================/
   
   XXX X, 2002 Ver 3.17.0
  @@ -55,6 +56,11 @@
      With this change Spread should correctly handle groups with thousands
      of members and thousands of groups. Thanks to Ryan Caudy from JHU for
      doing this work.
  +*) Revamped build setup using autoconf instead of manual Makefiles. Thanks
  +   to Theo Schlossnagle for writing this and updating it. Some small changes
  +   were made to Theo's 3.16.2 patch when I applied it.
  +*) Change library name from libsp to libspread. This is both more descriptive
  +   and should fix the problem with library clashes with other libsp's.
   
   Bugfixes: 
   *) Make sure service_type is set to 0 before using it in SP_receive calls 
  @@ -63,386 +69,38 @@
   *) Fix GGT bug where Spread gets stuck or crashes if you reach GGT state.
   *) Fix Mem_Alloc blocks so they can be freed without assertion failure.
   
  -April 2, 2002 Ver 3.16.2 (The Almost April Fools Release)
  ----------------------------
  -Bugfixes:
  -1) All recv calls in session now check for EWOULDBLOCK, EAGAIN, EINTR 
  -   and retry the call later. This fixes problem on busy servers where 
  -   connections would be killed erroneously. Thanks to the Zope team 
  -   (Guido van Rossum, Tim Peters, and Jeremy Hylton) for discovering this
  -   and helping with fixing it.
  -2) log.c file operations now check for errors and handle them.
  -3) Windows bugs:
  -   a) close() does not close sockets, we need to call closesocket() to avoid
  -      memory leak.
  -   b) sockets are not consecutive fd's on windows, they can be > FD_SETSIZE.
  -      So fd mapping to sessions changed to use a hash instead of array. 
  -      As a side-effect it should be faster to connect/disconnect. 
  -      Thanks to Marc Zyngier for discovering the problem and writing and 
  -      testing a patch for it.
  -   c) Raise the FD_SETSIZE for windows to 1024 by #defining it in arch.h.
  -   d) Enhanced error handling to support WSAGetLastError, and define a
  -      sock_strerror() function to return nice error strings on windows.
  -   e) Include Visual C++ Project files to build Spread on Windows.
  -4) Included improved NetBSD makefile and warning fix from Patrick Welche.
  -5) Generalize the errno handling to support windows errors and other 
  -   odd cases. Also see fix 3d. Thanks to Marc Zyngier, Tim Peters, and
  -   David Holmer for help with this.
  -6) Improve the install targets for linux. Now install include headers
  -   and use standard PREFIX define for base directory.
  -7) Updates to man pages. New libsp manpage.
  -
  -December 11, 2001 Ver 3.16.1  
  -------------------------
  -Bugfixes:
  -1) Fix various races and bugs in the new authentication and access control 
  -   code. 
  -   a) Fix session establishment races with authentication
  -   b) Add more info for access control hooks to use (mess_type and num_groups)
  -   c) Fix so rejected messages are not still delivered to local group members.
  -   d) Make reject messages honor SELF_DISCARD.
  -   e) Fix bug that always allowed NULL connections.
  -2) SGI now builds using signed chars and reports errors correctly.
  -3) MacOSX build fixed. 
  -4) Fixed race at session establishment that caused the assertion failure
  -   "assert( xxxxx ) false "
  -5) Add MAX_MESSAGE_BODY_LEN to spread_params.h (used in sp.c checks), move
  -   MAX_PACKET_SIZE to spread_params.h from arch.h.
  -6) Fixed interface restrictions for daemons. 
  -7) Fixed crashes in user and flooder programs when wrong number of command
  -   line parameters were passed.
  -8) Added assertion check for Groups membership message with zero members in a group. (Theo)
  -9) Java library fixes and enhancements (Thanks to Dan Rall and Leonard
  -	Richardson )
  -10) Fix bug in group name validator G_private_to_names that caused crash.
  -11) Fix for reversed parameters to memset in groups.c (Thanks to Marc Zyngier)
  -12) Fix bug in session connection that confused closed, but not yet deleted file 
  -    descriptors with newly accepted connections. (Thanks to Dave Parker for discovering bug).
  -13) Fix significant memory leak when connections are disconnected. This
  -    leak has been present since at least 3.15.0. (Thanks to Dave Parker
  -    for discovering this and providing lots of assistance debugging it.)
  -14) Fix the binding to specific interfaces to work with broadcast packets. 
  -    (Thanks to Marc Zyngier for reporting the problem)
  -15) Updated man pages and Users Guide
  -16) Added makefile for OpenBSD contributed by Brandon Palmer.
  -17) Added makefile for Solaris 8 with Solaris cc compiler 6.1 contributed by Luc I. Suryo.
  -
  -
  -June 25, 2001 Ver 3.16.0
  --------------------------
  -Changes:
  -1) Add support for configuring multiple interfaces on daemons. Each daemon
  -   can now choose which interfaces to listen on for client connections, monitor
  -   requests, and daemon-to-daemon communication.
  -2) Added support for MacOSX. Thanks to Julien Defour and Dirk-Willem van Gulik.
  -3) Agreed messages for join/leave instead of SAFE messages.
  -4) Fixed bug with membership messages for more then 42 members in a group.
  -5) Document how to monitor packing effectiveness.
  -6) SP_connect assigns unique private name if user gives a zero length string as
  -   the user name.
  -7) Slightly loosen valid field checking for service_type field to allow
  -   flush and secure spread libraries to work.
  -8) Fix events to work with low priority events for Splash.
  -9) Adds modular access control and authentication system that allows the 
  -   daemon to authenticate client connections and allow or disallow various
  -   actions (such as joining groups, sending messages or connecting) based
  -   on the authenticated user. This changes the client-server network
  -   protocol, but is backward compatible with clients linked with old libraries.
  -   This also adds new functions to the API. A sample module that
  -   provides access control based on the IP address of the client is 
  -   included. Also a module that provides the same "allow all clients" 
  -   policy as older versions of Spread. The Java API has also been 
  -   updated to support the new access control framework.
  -10) New license for Spread. BSD based open-source license.
  -11) Updated Perl library with some bug fixes and compatibility with new C lib.
  -12) Added support for 64 bit platforms (alpha, ultrasparc & ia64) Note only
  -    alpha is actually tested.
  -13) Fix bug in sp.c where if a message was not completely received because 
  -    of a short buffer and the next call had an invalid message scatter the
  -    data in the messages would get corrupted. Probably difficult to trigger 
  -    unless you are trying hard.
  -14) Changed names of programs included with spread to have "sp" as a prefix.
  -    This should help avoid conflicts with all the other utilities called 
  -    "user" or "monitor".
  -15) Small bugfixes to the Java library. 
  -16) Bugfix which removes a costly, and unnecessary, recalculation when 
  -    several network level membership events occur in close (time) proximity.
  - 
  -March 20, 2001 Ver 3.15.2
  --------------------------
  -
  -Changes:
  -1) Bugfix to java library to fix exception caused when trying to establish
  -   connection. This is a new bug in 3.15.1. Thanks to Julien Dufour.
  -2) Add #define SPREAD_VERSION to sp.h so client applications can test for
  -   what version of the spread API to use. This allows applications to compile
  -   against multiple incompatible versions of the spread library. Specifically,
  -   this can be used for an app to support both the old 'float SP_version()'
  -   and new 'int SP_version(int, int, int)' functions.
  -3) Fix memory leak in Perl module. Thanks to Theo Schlossnagle.
  -
  -February 26, 2001 Ver. 3.15.1
  ------------------------------
  -Changes:
  -1) Make sess_read() non-blocking so slow clients sending messages don't slow
  -   or block daemon.
  -2) Implement input validation on all messages received from clients. This
  -   is to address the possibility of clients overflowing the servers buffers.
  -   These problems were uncovered in a security audit by Olaf Kirch of Caldera.
  -3) Use chroot to isolate spread and drop priveledges if spread is run by root.
  -   If it is run as a normal user, then no chroot is done and it runs just as 
  -   before. The user to run as and the location of the chroot jail can be 
  -   configured in the spread_params.h file at compile time.
  -4) Fix a bug that causes a significant memory leak when retransmissions are 
  -   required. This memory leak exists in versions 3.13, 3.14 and 3.15.0.
  -5) SP_version() no longer returns a float, instead it returns in 3 separate
  -   parameters the 3 components of the version number.
  - 
  -December 20, 2000 -- Unreleased 3.15.0
  ------------------
  -Changes:
  -1) New version number scheme with 3 components: Major, Minor, and Patch.
  -2) Small bugfix to prevent clients from sending to too many groups and
  -   crashing spread.
  -3) Copyright changed to Spread Concepts LLC for code by original
  -   developers.
  +Documentation:
  +*) Split the growing changelog at the beginning of Readme.txt into a 
  +   separate file.
   
  -0ctober 31, 2000 
  ----------------
  -Changes:
  -1) Bugfixes to skiplist implementation.
  -2) Critical fixes to group membership that removes bugs introduced in 
  -   optimization work of 3.13.
  -3) Critical bugfix to membership which solves problem introduced in 3.13 
  -   with using configurations of more then one segment.
  -4) Changes to spread.conf parser, but nothing that should be user visable.
  -5) Better error/problem reporting in a few cases.
  -6) Enforce message length limit. SP_mcast* will now return an error
  -   if a message body is too long.
  -7) Minor memory leak at initialization fixed.
  -8) Fix to events.c to prevent an illegal message bug. Bug is triggered
  -   when messages are sent very fast during a membership merge.
  -
  -August 07, 2000
  ----------------
  -Changes:
  -1) To compile the Linux version on systems based on glibc2.0 (such as 
  -   RedHat 5.2) you need to comment out the #define of HAVE_STDINT_H in the 
  -   arch.h file before compiling.
  -
  -2) Major scalability improvements. Should now support upto 990 connections
  -   to each daemon, thousands of groups, and faster throughput with
  -   small messages.
  -
  -3) Configuration file changes. 
  -	a) The default name of the configuration file 
  -	   has changed from config.dat to spread.conf. The default locations 
  -	   checked if nothing is specified on the command line is 
  -	   /etc/spread.conf and ./spread.conf (i.e. the current directory 
  -	   where the binary is run from).
  -	b) The format of the spread.conf file is improved. You no longer
  -	   have to specify the number of members of a segment or the number
  -	   of segments by hand. The format is also more standard and has a 
  -	   lex/yacc grammer defining it. See the sample.spread.conf file 
  -	   for an example or the documention for details.
  -	c) More configuration variables. 
  -		EventLogFile: You can now have all the Spread event messages 
  -			      that print to the screen print to a file instead.
  -			      To have each daemon log to a separate file use the
  -			      '%h' or '%H' special characters in the log filename.
  -			      Spread will replace those characters with the hostname
  -			      of the machine which the daemon is running on. An 
  -			      example can be found in the sample.spread.conf file.
  -		DebugFlags: The event mask that determines which messages
  -			    to print to the screen is now configurable at
  -			    runtime.
  -		EventTimeStamp: Add a timestamp in front of all logged event 
  -				messages and set the format of the timestamp.
  -
  -		DangerousMonitor: Certain monitor commands like partition, kill
  -				  and flow_control are disabled by default now.
  -				  To enable them set this to true.
  -
  -4) Fix membership bug when under high load and a late data message arrives.
  -   Also fix membership bug where the assertion 
  -"spread: membership.c:1835: Backoff_membership: Assertion `pack_entry != -1' failed."
  -   triggered.
  -   Also fix membership bug where several machines will get trapped in 
  -   State 3 (GATHER state) and will never complete the membership.
  -
  -5) Some documentation on how to tune Spread using some of the internal variables.
  -   This is contained in the new Spread User Guide Chapter 2 which can be 
  -   downloaded from www.spread.org.
  -
  -6) Fix bug in new No Drop semantics. When a BUFFER_TOO_SHORT error occured
  -   the endian_mismatch field was incorrectly set to the size of the app buffer
  -   instead of the size of the data message. So it was useless. This is fixed and
  -   the semantics are extended to set the num_groups and endian_mismatch fields to 0
  -   if the corresponding buffers ARE large enough, and to the needed size 
  -   (as a negative) when they are NOT large enough. This allows you to know when 
  -   you receive a GROUPS_TOO_SHORT whether the buffer is also too short without 
  -   any calculation...Just check if endian_mismatch is 0.
  -
  -7) License updated to version 1.2. The only change is a small addition to the
  -   attribution requirement, a capitalization of Spread, and a clarification of
  -   the Spread version.
   
  -May 01, 2000
  +SOURCE INSTALL:
   ---------------
  -Changes:
  -1) Integrated FreeBSD port. A Big thanks to Ben Laurie <ben at algroup.co.uk>
  -   for this port and a lot of compile warnings, type cleanups and 2 bugfixes.
  -
  -2) Removed some compile warnings.
  -
  -3) 2 bugs fixed. One in SP_group_ids_equal() and one in the 
  -   daemon that would never trigger in reality.
  -
  -4) Updated java interface to most recent version.
  -
  -5) Updated events (E_* functions) to most recent version. This
  -   adds the ability to attach to file descriptors for 
  -   Exceptions and Write events as well as reads. It also 
  -   adds a void* data pointer to the callback parameters.
  -
  -6) Change SP_recv semantics to be "No Drop" by default. The 
  -   old "drop" semantics are still available by setting the 
  -   service_type parameter to SP_recv to DROP_RECV before calling it.
  -   *** 
  -   See the file "Short_Buffer_Handling.txt" for detailed comments
  -   on this change and what application modifications might be necessary
  -   ***
  -
  -7) Documentation updates.
  -
  -8) Changed the way arch.h is implemented. This might require 
  -   some additions for Ports that we do not support natively.
  -
  -9) Added Is_self_leave() macro which matches documentation for testing
  -   self-leaves.
  -
  -10) Changed SP_* and E_* functions to use 'const' appropriately.
  -
  -11) Reserved fields are listed in sp.h to prevent collisions.
  -
  -12) Make MAX_PROC_NAME and MAX_PRIVATE_GROUP sizes available in sp.h.
  -
  -13) Added Perl library interface. You can now write Spread client 
  -    programs in perl. Thanks to Theo Schlossnagle <theos at cnds.jhu.edu>.
  -
  -14) License updated to version 1.1. Main change is a reformatting and 
  -    updated email addresses. 
  -
  -July 27, 1999 Official Release
  ----------------------------------------------------
  -
  -1) Has new license (license.txt) and copyright notices
  -
  -2) New Java interface included
  -
  -3) Location of license has moved to: 
  -	    http://www.spread.org/license/
  -	    http://www.cnds.jhu.edu/spread/license/
  -
  -4) Minor documentation and example program improvements.
  -
  -5) One minor bug fixed in group handling.
  -
  -May 26, 1999 Release:
  ----------------------
  -1) Expiration Date Removed from Binary version
  -   This release of the executatbles will not expire.
  -
  -2) New Copyright Statement
  -   The copyright of Spread has been finalized. The statement at the top of 
  -   this file shows it.
  -
  -3) Source release soon & new license
  -   a) As soon as a few final issues are resolved we will release the source
  -      to Spread under the CNDS Non-Commercial and Development License. 
  -   b) A draft of the new license can be found at 
  -      http://www.cnds.jhu.edu/spread/CNCL/.
  -      Please email us any comments or concerns you have at spread at spread.org
  -
  -4) Bugs Fixed:
  -   a) Bug fix to the SP_scatter_recv() call to make receives into 
  -      scatter structures of multiple entries of different sizes work.
  -   b) The Linux platform also had scatter-gather functionality enabled 
  -      (now that glibc has working sendmsg, recvmsg calls)
  -   c) Fixed bug where packets which are delayed a long time in the network
  -      but then actually arrive at a spread daemon cause a crash.
  -
  -
  -October 30,1998 Release:
  ------------
  -1) Multi-threading:
  -   Libsp.a has split into two libraries, libsp.a and libtsp.a, they
  -   are identical except that libtsp.a is thread-safe and libsp.a is not.
  -   Both versions are provided so that single-threaded programs who don't 
  -   need a safe library can avoid the (admittedly pretty small) overhead of 
  -   locking. The libtsp.a can be used identically with libsp.a with the 
  -   addition that all SP_* functions can be called by multiple threads 
  -   at the same time.  Thread safety in libtsp.a is provided optimally,
  -   with the most possible parallelism allowed.  Threads acting on separate
  -   mailboxes will never block each other, threads writing to a mailbox will
  -   never block other threads reading from the same mailbox and vice versa.
  -   The one time thread calls to SP_ functions will be serialzed is when 
  -   multiple threads are reading the same mailbox or writing the same mailbox.
  -   There is minimal locking of internal structures which can temporarily 
  -   block another thread, but since a thread never blocks while in one of 
  -   these structure critical sections and the duration of the lock is at 
  -   most a fewinstructions the delay should be minimal.  
  -   
  -2) IP-Multicast:
  -   Spread now allows you to specifiy IP-Multicast addresses(i.e. 224.0.0.1) 
  -   as the broadcast address for a segment in the spread.conf file. This will 
  -   work transparently in the same segment, and is guaranteed not to spill 
  -   multicast packets beyond that segment. If multi-segment ip-multicast is 
  -   desired, please contact us.
  -
  -3) Fixed several minor bugs.
  -
  -4) Included man pages for SP functions. The old html documentation is also 
  -   included.
   
  -5) None of these changes effect the Java version which has not changed.
  +The source install uses autoconf and make to support many Unix and unix-like 
  +platforms as well as Windows 95+.
   
  -SOURCE INSTALL:
  ----------------
  +Windows is supported by a set of Visual Studio desktop and project files in
  +the win32 subdirectory. These files build the daemon, libraries, and user
  +programs.
   
  -The source install is a work in progress, but the included makefiles should
  -build spread on any currently supported platform. Any not-currently supported
  +Any not-specifically supported
   platform that has reasonably close to normal sockets networking should also 
   be easily portable. See the file PORTING for hints on porting.
   
   From the directory where you unpacked the Spread source distribution do 
   the following:
   
  -1) Pick the appropriate makefile for your platform and symlink it to 
  -Makefile. For example, on linux do:
  -	     [jonathan at commedia]$ ln -s LINUX_makefile Makefile
  +1) Run "./configure"
   
   2) Run "make"
   
  -3) Copy the resulting "spread,spflooder,spmonitor,spuser,sptuser" binaries to 
  -wherever you want.
  -Probably somewhere in your path like /usr/local/bin/
  -
  -4) Copy the library "libsp.a, libtsp.a" to a library location, 
  -like /usr/local/lib.
  -
  -5) Copy the man pages to the appropriate location (i.e. 
  -/usr/local/man/man{1,3} )
  -
  -6) Copy the header files "sp.h", "sp_func.h" and "sp_events.h"  to /usr/local/include.
  -
  -7) Create a spread.conf file appropriate to your local configuration. For 
  -more info on how to do this look below in the binary install instructions.
  +3) Run "make install" as a user with rights to write to the selected
  +installation location. (/usr/local/{bin,man,sbin,include,lib} by default)
   
  -To build on Windows (95/NT) we use a MSVC project. We currently do not 
  -include the project files in the source distribution, but talk to us if 
  -you want to build it there.
  -It is not too hard, just a few quirks about linking and DEFINE flags.
  +4) Create a spread.conf file appropriate to your local configuration. For 
  +more info on how to do this look at the sample file "sample.spread.conf"
  +or below in the binary install instructions.
   
   
   BINARY INSTALL:
  @@ -479,12 +137,12 @@
      Replace "ARCH" with the directory for your architecure.
   
   	cp -p include/* /usr/local/include/
  -	cp -p ARCH/libsp.a /usr/local/lib/
  +	cp -p ARCH/libspread.a /usr/local/lib/
  +	cp -p ARCH/libtspread.a /usr/local/lib/
   	cp -p ARCH/spread /usr/local/bin/
   	cp -p ARCH/spmonitor /usr/local/bin/
   	cp -p ARCH/spuser /usr/local/bin/
   	cp -p ARCH/sptuser /usr/local/bin/
  -	cp -p ARCH/simple_user /usr/local/bin/
   	cp -p ARCH/spflooder /usr/local/bin/
   	cp -p docs/*.3 /usr/local/man/man3/
   	cp -p docs/*.1 /usr/local/man/man1/
  @@ -534,10 +192,10 @@
   managing all applications which are connected to each daemon.
   
   	Each application utilizing the spread system needs to link with 
  -the 'libsp.a', 'libtsp.a', 'libtsp.lib' or 'libsp.lib' library and needs 
  -to use the calls defined in the 'sp.h' and 'sp_func.h' header files.  
  -Documentation for the interface is currenly incomplete, but a basic 
  -application must do at least the following:
  +the 'libspread.a', 'libtspread.a', 'libtspread.lib' or 'libspread.lib' 
  +library and needs to use the calls defined in the 'sp.h' and 'sp_func.h' 
  +header files. Documentation for the interface is currenly incomplete, but 
  +a basic application must do at least the following:
   
   1) Before using any other spread calls you need to 'connect' to a daemon 
      by calling the
  
  
  
  1.5       +1 -1      spread/daemon/arch.c
  
  Index: arch.c
  ===================================================================
  RCS file: /storage/cvsroot/spread/daemon/arch.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- arch.c	5 Feb 2002 18:36:31 -0000	1.4
  +++ arch.c	16 Sep 2002 16:59:06 -0000	1.5
  @@ -38,7 +38,7 @@
   #include <winsock.h>
   #endif
   
  -#ifdef ARCH_SPARC_SUNOS
  +#ifndef HAVE_STRERROR
   /* return value only valid until next call to strerror */
   
   char    *strerror(int err)
  
  
  
  1.10      +52 -460   spread/daemon/arch.h
  
  Index: arch.h
  ===================================================================
  RCS file: /storage/cvsroot/spread/daemon/arch.h,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- arch.h	5 Feb 2002 02:37:39 -0000	1.9
  +++ arch.h	16 Sep 2002 16:59:06 -0000	1.10
  @@ -33,7 +33,8 @@
   #ifndef INC_ARCH
   #define INC_ARCH
   
  -#include <limits.h>
  +#include "config.h"
  +
   /*
    * Each record in this file represents an architecture.
    * Each record contains the following fields:
  @@ -53,404 +54,70 @@
    *      #define         sock_set_errno { sock_unix_set_errno or WSASetLastError for windows }
    */
   
  -#ifdef _AIX
  -#ifdef _IBMR2
  -#ifdef _POWER
  -#define ARCH_POWER_AIX
  -#endif
  -#endif
  -#endif
  -
  -#ifdef __NetBSD__
  -#define ARCH_ALL_NETBSD
  -#endif
  -
  -#ifdef __alpha__
  -#ifdef __linux__
  -#define ARCH_ALPHA_LINUX
  -#endif
  -#endif /* __alpha__ */
  -
  -#ifdef __ia64__
  -#ifdef __linux__
  -#define ARCH_IA64_LINUX
  -#endif
  -#endif /* __ia64__ */
  -
  -#ifdef __i386__
  -#ifdef __bsdi__
  -#define ARCH_PC_BSDI
  -#endif
  -
  -#ifdef __FreeBSD__
  -#if __FreeBSD__ == 4
  -#define ARCH_PC_FREEBSD4
  -#else
  -#define ARCH_PC_FREEBSD3
  -#endif
  -#endif
  -
  -#ifdef __OpenBSD__
  -#define ARCH_PC_OPENBSD
  -#endif
  -
  -#ifdef __linux__
  -#define ARCH_PC_LINUX
  -#endif
  -
  -#ifdef __svr4__
  -#define ARCH_PC_SOLARIS
  -#endif
  -#endif /* __i386__ */
  -
  -#ifdef __ppc__
  -#ifdef __APPLE__
  -#ifdef __MACH__
  -#define ARCH_PPC_DARWIN
  -#endif
  -#endif
  -#endif
  -
  -#ifdef __sparc__
  -#ifdef __svr4__
  -#define ARCH_SPARC_SOLARIS
  -#endif
  -
  -#ifdef  __linux__
  -#define ARCH_SPARC_LINUX
  -#endif
  -
  -#ifdef  __sun__
  -#ifndef __svr4__
  -#define ARCH_SPARC_SUNOS
  -#endif
  -#endif
  -
  -#endif	/* __sparc__ */
  -
  -#ifdef __sgi
  -#define ARCH_SGI_IRIX
  -#endif
  -
  -#ifdef __m68k__
  -
  -#ifdef __NetBSD__
  -#define ARCH_M68K_NETBSD
  -#endif
  -
  -#endif /* __m68k */
  -
   #undef          INTSIZE32
   #undef          INTSIZE64
   #undef          INTSIZE16
   
   
  -#ifdef ARCH_POWER_AIX
  -#define		INTSIZE32
  -#define		ARCH_SCATTER_CONTROL
  -#define		ARCH_ENDIAN	0x00000000
  -/* Do not need accept, set/getsockopt defines */
  -#define         ARCH_SCATTER_SIZE       64 /* UNKNOWN -- Check value */
  -#define         HAVE_LRAND48
  -typedef         unsigned long  sockopt_len_t;
  -#define         ERR_TIMEDOUT    ETIMEDOUT
  -#define         sock_errno      errno
  -#define         sock_strerror   strerror
  -#define         sock_set_errno  sock_unix_set_errno
  -#endif /* ARCH_POWER_AIX */
  -
  -#ifdef ARCH_ALPHA_LINUX
  -#define         INTSIZE64
  -#define		ARCH_SCATTER_CONTROL /* should be control if supported */
  -#define		ARCH_ENDIAN	0x80000080
  -#define         LOC_INLINE      __inline__
  -#include        <sys/uio.h>
  -#define         ARCH_SCATTER_SIZE       UIO_MAXIOV
  -#define         HAVE_GOOD_VARGS
  -#define         HAVE_LRAND48
  -typedef         int     sockopt_len_t;
  -/* Already defined in linux
  -   typedef         int     socklen_t;
  -*/
  -/* this define is needed for glibc2.1 but should be turned off for glibc2.0 and earlier. */
  -#define         HAVE_STDINT_H
  -#define         ERR_TIMEDOUT    ETIMEDOUT
  -#define         sock_errno      errno
  -#define         sock_strerror   strerror
  -#define         sock_set_errno  sock_unix_set_errno
  -#endif /* ARCH_ALPHA_LINUX */
  -
  -#ifdef ARCH_IA64_LINUX
  -#define         INTSIZE64
  -#define		ARCH_SCATTER_CONTROL /* should be control if supported */
  -#define		ARCH_ENDIAN	0x80000080
  -#define         LOC_INLINE      __inline__
  -#include        <sys/uio.h>
  -#define         ARCH_SCATTER_SIZE       UIO_MAXIOV
  -#define         HAVE_GOOD_VARGS
  -#define         HAVE_LRAND48
  -typedef         int     sockopt_len_t;
  -/* Already defined in linux
  -   typedef         int     socklen_t;
  -*/
  -/* this define is needed for glibc2.1 but should be turned off for glibc2.0 and earlier. */
  -#define         HAVE_STDINT_H
  -#define         ERR_TIMEDOUT    ETIMEDOUT
  -#define         sock_errno      errno
  -#define         sock_strerror   strerror
  -#define         sock_set_errno  sock_unix_set_errno
  -#endif /* ARCH_ALPHA_LINUX */
  -
  -#ifdef ARCH_PC_BSDI
  -#define         INTSIZE32
  -#define		ARCH_SCATTER_CONTROL
  -#define		ARCH_ENDIAN	0x80000080
  -#define         LOC_INLINE      __inline__
  -#include        <sys/types.h>
  -#include	<sys/uio.h>
  -#define         ARCH_SCATTER_SIZE       1024 /* Should be UIO_MAXIOV but there is a problem is sys/uio.h */
  -#define         HAVE_LRAND48
  -typedef         size_t  sockopt_len_t;
  -/* Already defined in BSDI
  -   typedef         int       socklen_t;
  -*/
  -#define         ERR_TIMEDOUT    ETIMEDOUT
  -#define         sock_errno      errno
  -#define         sock_strerror   strerror
  -#define         sock_set_errno  sock_unix_set_errno
  -#endif /* ARCH_PC_BSDI */
  -
  -#ifdef ARCH_PC_OPENBSD
  -#define         INTSIZE32
  -#define         ARCH_SCATTER_CONTROL
  -#define         ARCH_ENDIAN     0x80000080
  -#define         LOC_INLINE      __inline__
  -#include        <sys/types.h>
  -#include        <sys/uio.h>
  -#define         ARCH_SCATTER_SIZE       1024 /* should be UIO_MAXIOV but it isn't actually declared in system includes */
  -#define         HAVE_GOOD_VARGS
  -#define         HAVE_LRAND48
  -typedef         int     sockopt_len_t;
  -/* Already defined
  -  typedef         u_int32_t   socklen_t;
  -*/
  -#define         ERR_TIMEDOUT    ETIMEDOUT
  -#define         sock_errno      errno
  -#define         sock_strerror   strerror
  -#define         sock_set_errno  sock_unix_set_errno
  -#endif /* ARCH_PC_OPENBSD */
  -
  -#ifdef ARCH_PC_FREEBSD4
  -#define		INTSIZE32
  -#define		ARCH_SCATTER_CONTROL
  -#define		ARCH_ENDIAN	0x80000080
  -#define         LOC_INLINE      __inline__
  -#include        <sys/types.h>
  -#include	<sys/uio.h>
  -#define         ARCH_SCATTER_SIZE       1024 /* should be UIO_MAXIOV but it isn't actually declared in system includes */
  -#define         HAVE_GOOD_VARGS
  -#define         HAVE_LRAND48
  -typedef         int     sockopt_len_t;
  -/* Already defined in freebsd 4.0
  -  typedef         u_int32_t   socklen_t;
  -*/
  -#define         ERR_TIMEDOUT    ETIMEDOUT
  -#define         sock_errno      errno
  -#define         sock_strerror   strerror
  -#define         sock_set_errno  sock_unix_set_errno
  -#endif /* ARCH_PC_FREEBSD */
  -
  -#ifdef ARCH_PC_FREEBSD3
  -#define		INTSIZE32
  -#define		ARCH_SCATTER_CONTROL
  -#define		ARCH_ENDIAN	0x80000080
  -#define         LOC_INLINE      __inline__
  -#include        <sys/types.h>
  -#include	<sys/uio.h>
  -#define         ARCH_SCATTER_SIZE       1024 /* should be UIO_MAXIOV but it isn't actually declared in system includes */
  -#define         HAVE_GOOD_VARGS
  -#define         HAVE_LRAND48
  -typedef         int     sockopt_len_t;
  -typedef         u_int32_t   socklen_t;
  -#define         ERR_TIMEDOUT    ETIMEDOUT
  -#define         sock_errno      errno
  -#define         sock_strerror   strerror
  -#define         sock_set_errno  sock_unix_set_errno
  -#endif /* ARCH_PC_FREEBSD3 */
  -
  -#ifdef ARCH_PC_LINUX
  -#define         INTSIZE32
  -#define		ARCH_SCATTER_CONTROL /* should be control if supported */
  -#define		ARCH_ENDIAN	0x80000080
  -#define         LOC_INLINE      __inline__
  -#include        <sys/uio.h>
  -#define         ARCH_SCATTER_SIZE       UIO_MAXIOV
  -#define         HAVE_GOOD_VARGS
  -#define         HAVE_LRAND48
  -typedef         int     sockopt_len_t;
  -/* Already defined in linux
  -   typedef         int     socklen_t;
  -*/
  -/* this define is needed for glibc2.1 but should be turned off for glibc2.0 and earlier. */
  -#define         HAVE_STDINT_H
  -#define         ERR_TIMEDOUT    ETIMEDOUT
  -#define         sock_errno      errno
  -#define         sock_strerror   strerror
  -#define         sock_set_errno  sock_unix_set_errno
  -#endif /* ARCH_PC_LINUX */
  -
  -#ifdef ARCH_PPC_DARWIN
  -#define         INTSIZE32
  -#define         ARCH_SCATTER_CONTROL
  +#ifndef ARCH_PC_WIN95
  +/* If we aren't using windows... we can use autoconf */
  +#ifdef WORDS_BIGENDIAN
   #define         ARCH_ENDIAN     0x00000000
  +#else
  +#define		ARCH_ENDIAN	0x80000080
  +#endif
  +  
   #define         LOC_INLINE      __inline__
  -#include        <sys/types.h>
  -#include        <sys/uio.h>
  -#define         ARCH_SCATTER_SIZE       1024 /* Should be UIO_MAXIOV when defining KERNEL before including uio.h */
  -#define         HAVE_GOOD_VARGS
  -typedef         int sockopt_len_t;
  -typedef         int socklen_t;
  -#define         ERR_TIMEDOUT    ETIMEDOUT
  -#define         sock_errno      errno
  -#define         sock_strerror   strerror
  -#define         sock_set_errno  sock_unix_set_errno
  -#endif  /* ARCH_PPC_DARWIN */
  -
  -
  -#ifdef ARCH_PC_SOLARIS
  -#define         INTSIZE32
  -#define         ARCH_SCATTER_ACCRIGHTS
  -#define         ARCH_ENDIAN     0x80000080
  -#define         LOC_INLINE
  -#include        <sys/socket.h>
  +  
  +/* Need to add special cases, SUNOS gets 64, IRIX gets 512 */  
  +#ifdef MSG_MAXIOVLEN
   #define         ARCH_SCATTER_SIZE       MSG_MAXIOVLEN
  -#define         BSD_COMP 
  -#define         HAVE_LRAND48
  -typedef         size_t  sockopt_len_t;
  -#ifdef NEED_SOCKLEN_T
  -/* Already defined in solaris 5.7, maybe needed for earlier versions */
  -   typedef         int     socklen_t;
  -#endif /* NEED_SOCKLEN_T */
  -/* this define is needed for solaris 5.[67] but maybe should be turned off for earlier. */
  -#define         HAVE_SYS_INTTYPES_H
  -#define         ERR_TIMEDOUT    ETIMEDOUT
  -#define         sock_errno      errno
  -#define         sock_strerror   strerror
  -#define         sock_set_errno  sock_unix_set_errno
  +#else
  +#define         ARCH_SCATTER_SIZE       1024
   #endif
   
  -#ifdef	ARCH_SPARC_SOLARIS
  -#define         INTSIZE32
  -#define		ARCH_SCATTER_ACCRIGHTS
  -#define		ARCH_ENDIAN	0x00000000
  -#define         LOC_INLINE      
  -#include        <sys/socket.h>
  -#define         ARCH_SCATTER_SIZE       MSG_MAXIOVLEN
  -#define         BSD_COMP 
  -#define         HAVE_LRAND48
  -typedef         size_t  sockopt_len_t;
  -#ifdef NEED_SOCKLEN_T
  -/* Already defined in solaris 5.7, maybe needed for earlier versions */
  -   typedef         int     socklen_t;
  -#endif /* NEED_SOCKLEN_T */
  -#define         HAVE_SYS_INTTYPES_H
  -#define         ERR_TIMEDOUT    ETIMEDOUT
  -#define         sock_errno      errno
  -#define         sock_strerror   strerror
  -#define         sock_set_errno  sock_unix_set_errno
  -#endif /* ARCH_SUN_UNIX */
  -
  -#ifdef ARCH_SPARC_LINUX
  -#define         INTSIZE32
  -#define		ARCH_SCATTER_CONTROL /* should be control if supported */
  -#define		ARCH_ENDIAN	0x00000000
  -#define         LOC_INLINE      __inline__
  -#include        <sys/uio.h>
  -#define         ARCH_SCATTER_SIZE       UIO_MAXIOV
   #define         HAVE_GOOD_VARGS
  -#define         HAVE_LRAND48
  -typedef         int     sockopt_len_t;
  -typedef         int     socklen_t;
  +  
  +#ifndef ERR_TIMEDOUT
   #define         ERR_TIMEDOUT    ETIMEDOUT
  -#define         sock_errno      errno
  -#define         sock_strerror   strerror
  -#define         sock_set_errno  sock_unix_set_errno
  -#endif /* ARCH_SPARC_LINUX */
  -
  -#ifdef	ARCH_SPARC_SUNOS
  -#define         INTSIZE32
  -#define		ARCH_SCATTER_NONE
  -#define		ARCH_ENDIAN	0x00000000
  -#define         LOC_INLINE      
  -typedef         int     sockopt_len_t;
  -typedef         int     socklen_t;
  -/* HACKS to fix OS bugs */
  +#endif
  +  
  +#ifndef RAND_MAX
   #define         RAND_MAX        2147483647
  -/* This size is for packing several messages into one packet */
  -#define         ARCH_SCATTER_SIZE       64
  -#define         ERR_TIMEDOUT    ETIMEDOUT
  +#endif
  +  
  +#ifdef HAVE_LRAND48
  +#define get_rand lrand48
  +#else
  +#define get_rand rand
  +#endif
  +  
   #define         sock_errno      errno
   #define         sock_strerror   strerror
  -#define         sock_set_errno  sock_unix_set_errno
  -#endif /* ARCH_SPARC_SUNOS */
  +#define         sock_set_errno(a)   (errno = (a)) 
  +  
  +#ifndef byte
  +#define byte u_int_8
  +#endif
   
  -#ifdef ARCH_SGI_IRIX
  -#define         INTSIZE32
  -#define		ARCH_SCATTER_ACCRIGHTS
  -#define		ARCH_ENDIAN	0x00000000
  -#define         LOC_INLINE      
  -/* Irix only appears to define IOV_MAX through the runtime
  - * function 'sysconf' and does not have an includeable variable
  - * as best as I can tell. The man page says all irix have at
  - * least 512
  - */
  -#define         ARCH_SCATTER_SIZE       512
  -#define         HAVE_LRAND48
  -typedef         int     sockopt_len_t;
  -typedef         int     socklen_t;
  -#define         ERR_TIMEDOUT    ETIMEDOUT
  -#define         sock_errno      errno
  -#define         sock_strerror   strerror
  -#define         sock_set_errno  sock_unix_set_errno
  -#endif /* ARCH_SGI_UNIX */
  +#ifndef int16
  +#define int16 int16_t
  +#endif
   
  -#ifdef ARCH_ALL_NETBSD
  -#include        <machine/limits.h>
  -#if LONG_BIT == 64
  -#  define       INTSIZE64
  -#elif LONG_BIT == 32
  -#  define       INTSIZE32
  -#elif LONG_BIT == 16
  -#  define       INTSIZE16
  -#else
  -#  error LONG_BIT not defined.
  -#endif /* LONG_BIT */
  +#ifndef int16u
  +#define int16u u_int16_t
  +#endif
   
  -#define         ARCH_SCATTER_CONTROL
  +#ifndef int32
  +#define int32 int32_t
  +#endif
   
  -#include        <machine/endian.h>
  -#if   BYTE_ORDER == BIG_ENDIAN
  -#  define       ARCH_ENDIAN 0x00000000
  -#elif BYTE_ORDER == LITTLE_ENDIAN
  -#  define       ARCH_ENDIAN 0x80000080
  +#ifndef int32u
  +#define int32u u_int32_t
  +#endif
  +  
   #else
  -#  error BYTE_ORDER not defined.
  -#endif /* BYTE_ORDER */
  -
  -#define         LOC_INLINE      __inline__
  -#include        <sys/uio.h>
  -#define         ARCH_SCATTER_SIZE	UIO_MAXIOV
  -#define         HAVE_GOOD_VARGS
  -/* #undef       HAVE_LRAND48 */
  -#define         HAVE_STDINT_H
  -typedef         int sockopt_len_t;
  -#define         ERR_TIMEDOUT    ETIMEDOUT
  -#define         sock_errno      errno
  -#define         sock_strerror   strerror
  -#define         sock_set_errno  sock_unix_set_errno
  -#endif  /* ARCH_ALL_NETBSD */
  - 
  -#ifdef ARCH_PC_WIN95 
  +/* We are using windows... */
   #define         INTSIZE32
   #define		ARCH_SCATTER_NONE
   #define		ARCH_ENDIAN	0x80000080
  @@ -473,7 +140,7 @@
    * can be raised by defining a larger constant before including windows.h winsock.h
    */
   #define         FD_SETSIZE      1024
  -/* Use winsock constants since we are dealing with sockets 
  +/* Use winsock constants since we are dealing with sockets
    * Note: If we ever need file IO with errno's we will have conflicts
    * since the WSA version and the basic E versions may not have the same
    * number. Right now we don't need the E versions for windows so we just
  @@ -488,79 +155,7 @@
   
   #endif /* ARCH_PC_WIN95 */
   
  -/* to grab UINT32_MAX definitions if they exist */
  -#ifdef HAVE_STDINT_H
  -#include <stdint.h>
  -#endif
  -#ifdef HAVE_SYS_INTTYPES_H
  -#include <sys/inttypes.h>
  -#endif
  -
  -#ifdef HAVE_LRAND48
  -#define get_rand lrand48
  -#else
  -#define get_rand rand
  -#endif
  -
  -/* Figure out which version of EAGAIN or EWOULDBLOCK this OS uses.
  - * End up with both constants defined.
  - */
  -#ifndef ARCH_PC_WIN95
  -#include <errno.h>
  -#endif
  -
  -#ifdef EWOULDBLOCK
  -#  ifndef EAGAIN
  -#    define EAGAIN EWOULDBLOCK
  -#  endif
  -#else
  -#  ifdef EAGAIN
  -#    define EWOULDBLOCK EAGAIN
  -#  else
  -#    error Neither EAGAIN nor EWOULDBLOCK exist
  -#  endif
  -#endif
  -
  -/* Define the unix sock_unix_set_errno macro */
  -#define sock_unix_set_errno(errno_to_set) (errno = (errno_to_set) )
  -
  -#ifdef  INTSIZE64
  -
  -#define 	int16	short
  -#define		int32	int
  -#ifndef UINT32_MAX
  -#define         UINT32_MAX      UINT_MAX
  -#endif
  -#ifndef INT32_MAX
  -#define         INT32_MAX       INT_MAX
  -#endif
  -#endif /* INTSIZE64 */
  -
  -#ifdef  INTSIZE32
  -
  -#define 	int16	short
  -#define		int32	int
  -#ifndef UINT32_MAX
  -#define         UINT32_MAX      UINT_MAX
  -#endif
  -#ifndef INT32_MAX
  -#define         INT32_MAX       INT_MAX
  -#endif
  -
  -#endif /* INTSIZE32 */
  -
  -#ifdef  INTSIZE16
  -#define 	int16	short
  -#define		int32	long
  -#define         UINT32_MAX      ULONG_MAX
  -#define         INT32_MAX       LONG_MAX
  -#endif
  -
  -/* 
  - * Endian : big and little
  - */
  -
  -#define		ENDIAN_TYPE		0x80000080
  +#define         ENDIAN_TYPE             0x80000080
   
   #define		Get_endian( type )	( (type) &  ENDIAN_TYPE )
   #define		Set_endian( type )	( ( (type) & ~ENDIAN_TYPE )| ARCH_ENDIAN )
  @@ -571,10 +166,6 @@
   
   #define		Flip_int32( type )	( ( ((type) >>24) & 0x000000ff) | ( ((type) >> 8) & 0x0000ff00) | ( ((type) << 8) & 0x00ff0000) | ( ((type) <<24) & 0xff000000) )
   
  -/*
  - * Network definitions
  - */
  -
   #define		channel			int
   #define		mailbox			int
   
  @@ -592,11 +183,12 @@
    * General Useful Types
    */
   
  -typedef         unsigned int32  int32u;
  -typedef         unsigned int16  int16u;
  -typedef         unsigned char   byte;
   typedef         short           bool;
  +#ifndef TRUE
   #define         TRUE            1
  +#endif
  +#ifndef FALSE
   #define         FALSE           0
  +#endif
   
   #endif	/* INC_ARCH */
  
  
  
  1.3       +1 -2      spread/daemon/config_gram.l
  
  Index: config_gram.l
  ===================================================================
  RCS file: /storage/cvsroot/spread/daemon/config_gram.l,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- config_gram.l	27 Aug 2002 01:10:52 -0000	1.2
  +++ config_gram.l	16 Sep 2002 16:59:06 -0000	1.3
  @@ -184,5 +184,4 @@
                                     return STRING; }
   {string}                        { yylval.string = strdup(yytext);
                                     return STRING; }
  -%%
  -
  +%%
  \ No newline at end of file
  
  
  
  1.3       +0 -2      spread/daemon/config_parse.y
  
  Index: config_parse.y
  ===================================================================
  RCS file: /storage/cvsroot/spread/daemon/config_parse.y,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- config_parse.y	27 Aug 2002 01:10:52 -0000	1.2
  +++ config_parse.y	16 Sep 2002 16:59:06 -0000	1.3
  @@ -69,8 +69,6 @@
    static int     segments = 0;
    static int     rvec_num = 0;
    static int     procs_interfaces = 0;
  - static proc    *new_proc;
  - static int32   temp_seg_list[MAX_PROCS_SEGMENT];
   
    static int     authentication_configured = 0;
   
  
  
  
  1.4       +2 -2      spread/daemon/configuration.c
  
  Index: configuration.c
  ===================================================================
  RCS file: /storage/cvsroot/spread/daemon/configuration.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- configuration.c	27 Aug 2002 01:10:52 -0000	1.3
  +++ configuration.c	16 Sep 2002 16:59:06 -0000	1.4
  @@ -117,8 +117,8 @@
   		if (NULL != (yyin = fopen("./spread.conf", "r")) )
                           Alarm( PRINT, "Conf_init: using file: ./spread.conf\n");
   	if (yyin == NULL)
  -		if (NULL != (yyin = fopen("/etc/spread.conf", "r")) )
  -                        Alarm( PRINT, "Conf_init: using file: /etc/spread.conf\n");
  +		if (NULL != (yyin = fopen(SPREAD_ETCDIR "/spread.conf", "r")) )
  +                        Alarm( PRINT, "Conf_init: using file: " SPREAD_ETCDIR "/spread.conf\n");
   	if (yyin == NULL)
   		Alarm( EXIT, "Conf_init: error opening config file %s\n",
   			file_name);
  
  
  
  1.7       +7 -5      spread/daemon/data_link.c
  
  Index: data_link.c
  ===================================================================
  RCS file: /storage/cvsroot/spread/daemon/data_link.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- data_link.c	27 Aug 2002 01:10:52 -0000	1.6
  +++ data_link.c	16 Sep 2002 16:59:06 -0000	1.7
  @@ -65,7 +65,9 @@
   	struct  sockaddr_in	soc_addr;
   	int			on=1;
           int			i1,i2,i3,i4;
  +#ifdef	IP_MUTLICAST_TTL
   	unsigned char		ttl_val;
  +#endif
   
   	if((chan = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
   		Alarm( EXIT, "DL_init_channel: socket error for port %d\n", port );
  @@ -77,7 +79,7 @@
               		Alarm( EXIT, "DL_init_channel: setsockopt error for port %d\n",port);
   		Alarm( DATA_LINK, "DL_init_channel: setsockopt for send and broadcast went ok\n");
   
  -#ifndef	ARCH_SPARC_SUNOS	/* no support for IP multicast in old SunOS */
  +#ifdef	IP_MUTLICAST_TTL
   		/* ### Isn't this for sending??? */
   		ttl_val = 1;
           	if (setsockopt(chan, IPPROTO_IP, IP_MULTICAST_TTL, (void *)&ttl_val, 
  @@ -86,7 +88,7 @@
   			Alarm( DATA_LINK, "DL_init_channel: problem in setsockopt of multicast ttl %d - ignore in WinNT or Win95\n", ttl_val );
   		}
   		Alarm( DATA_LINK, "DL_init_channel: setting Mcast TTL to %d\n",ttl_val);
  -#endif	/* ARCH_SPARC_SUNOS */
  +#endif
   	}
   
   	if ( channel_type & RECV_CHANNEL )
  @@ -112,7 +114,7 @@
   		i4 =  mcast_address & 0x000000ff;
   		if( i1 >=224 && i1 < 240 )
   		{
  -#ifndef ARCH_SPARC_SUNOS	/* no support for IP multicast in old SunOS */
  +#ifdef IP_MUTLICAST_TTL
   			struct ip_mreq	mreq;
   
   			mreq.imr_multiaddr.s_addr = htonl( mcast_address );
  @@ -127,9 +129,9 @@
   			}
   
   			Alarm( DATA_LINK, "DL_init_channel: Joining multicast address %d.%d.%d.%d went ok\n",i1,i2,i3,i4);
  -#else	/* ARCH_SPARC_SUNOS */
  +#else	/* no multicast support */
   			Alarm( EXIT, "DL_init_channel: Old SunOS architecture does not support IP multicast: %d.%d.%d.%d\n",i1,i2,i3,i4);
  -#endif	/* ARCH_SPARC_SUNOS */
  +#endif
   		} else {
                       if (setsockopt(chan, SOL_SOCKET, SO_BROADCAST, (char *)&on, 
                                      sizeof(on)) < 0) 
  
  
  
  1.4       +1 -5      spread/daemon/events.c
  
  Index: events.c
  ===================================================================
  RCS file: /storage/cvsroot/spread/daemon/events.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- events.c	5 Feb 2002 18:34:17 -0000	1.3
  +++ events.c	16 Sep 2002 16:59:06 -0000	1.4
  @@ -126,11 +126,7 @@
   
   #ifndef	ARCH_PC_WIN95
   
  -#if   defined(ARCH_PC_LINUX) || defined(ARCH_ALPHA_LINUX)
  -        /* used to be 
  -         * #if   defined(ARCH_PC_LINUX) || defined(ARCH_PC_BSDI)
  -         * but bsdi started complaining about not finding dummy_tz type
  -         */
  +#if HAVE_STRUCT_TIMEZONE
           struct timezone dummy_tz;
   #else
   	sp_time		dummy_tz;
  
  
  
  1.10      +1 -7      spread/daemon/session.c
  
  Index: session.c
  ===================================================================
  RCS file: /storage/cvsroot/spread/daemon/session.c,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- session.c	29 Aug 2002 15:43:01 -0000	1.9
  +++ session.c	16 Sep 2002 16:59:06 -0000	1.10
  @@ -46,7 +46,7 @@
   #include <sys/socket.h>
   #include <sys/stat.h>
   
  -#ifdef  ARCH_SPARC_SOLARIS
  +#ifdef HAVE_SYS_UIO_H
   #include <sys/uio.h>
   #endif
   
  @@ -566,12 +566,6 @@
           }
   	for( i=10; i <= 200; i+=5 )
   	{
  -#ifdef ARCH_PC_LINUX
  -/*	### Bug in Linux 2.0.0 - inet STREAM sockets 
  -
  -        if( domain == AF_INET && i > 30 ) break; */
  -
  -#endif /* ARCH_PC_LINUX */
   	    on = 1024*i;
   	    onlen = sizeof(on);
   
  
  
  
  1.4       +0 -7      spread/daemon/sp.c
  
  Index: sp.c
  ===================================================================
  RCS file: /storage/cvsroot/spread/daemon/sp.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- sp.c	5 Feb 2002 02:37:39 -0000	1.3
  +++ sp.c	16 Sep 2002 16:59:06 -0000	1.4
  @@ -430,13 +430,6 @@
   		for( i=10; i <= 200; i+=5 )
   		{
   
  -#ifdef ARCH_PC_LINUX
  -/*	### Bug in Linux 2.0.0 - inet STREAM sockets 
  -
  -	if( i > 30 ) break; */
  -
  -#endif /* ARCH_PC_LINUX */
  -
   		    on = 1024*i;
   
   		    ret = setsockopt( s, SOL_SOCKET, SO_SNDBUF, (void *)&on, 4);
  
  
  
  1.1                  spread/daemon/Changelog
  
  Index: Changelog
  ===================================================================
  April 2, 2002 Ver 3.16.2 (The Almost April Fools Release)
  ---------------------------
  Bugfixes:
  1) All recv calls in session now check for EWOULDBLOCK, EAGAIN, EINTR 
     and retry the call later. This fixes problem on busy servers where 
     connections would be killed erroneously. Thanks to the Zope team 
     (Guido van Rossum, Tim Peters, and Jeremy Hylton) for discovering this
     and helping with fixing it.
  2) log.c file operations now check for errors and handle them.
  3) Windows bugs:
     a) close() does not close sockets, we need to call closesocket() to avoid
        memory leak.
     b) sockets are not consecutive fd's on windows, they can be > FD_SETSIZE.
        So fd mapping to sessions changed to use a hash instead of array. 
        As a side-effect it should be faster to connect/disconnect. 
        Thanks to Marc Zyngier for discovering the problem and writing and 
        testing a patch for it.
     c) Raise the FD_SETSIZE for windows to 1024 by #defining it in arch.h.
     d) Enhanced error handling to support WSAGetLastError, and define a
        sock_strerror() function to return nice error strings on windows.
     e) Include Visual C++ Project files to build Spread on Windows.
  4) Included improved NetBSD makefile and warning fix from Patrick Welche.
  5) Generalize the errno handling to support windows errors and other 
     odd cases. Also see fix 3d. Thanks to Marc Zyngier, Tim Peters, and
     David Holmer for help with this.
  6) Improve the install targets for linux. Now install include headers
     and use standard PREFIX define for base directory.
  7) Updates to man pages. New libsp manpage.
  
  December 11, 2001 Ver 3.16.1  
  ------------------------
  Bugfixes:
  1) Fix various races and bugs in the new authentication and access control 
     code. 
     a) Fix session establishment races with authentication
     b) Add more info for access control hooks to use (mess_type and num_groups)
     c) Fix so rejected messages are not still delivered to local group members.
     d) Make reject messages honor SELF_DISCARD.
     e) Fix bug that always allowed NULL connections.
  2) SGI now builds using signed chars and reports errors correctly.
  3) MacOSX build fixed. 
  4) Fixed race at session establishment that caused the assertion failure
     "assert( xxxxx ) false "
  5) Add MAX_MESSAGE_BODY_LEN to spread_params.h (used in sp.c checks), move
     MAX_PACKET_SIZE to spread_params.h from arch.h.
  6) Fixed interface restrictions for daemons. 
  7) Fixed crashes in user and flooder programs when wrong number of command
     line parameters were passed.
  8) Added assertion check for Groups membership message with zero members in a group. (Theo)
  9) Java library fixes and enhancements (Thanks to Dan Rall and Leonard
  	Richardson )
  10) Fix bug in group name validator G_private_to_names that caused crash.
  11) Fix for reversed parameters to memset in groups.c (Thanks to Marc Zyngier)
  12) Fix bug in session connection that confused closed, but not yet deleted file 
      descriptors with newly accepted connections. (Thanks to Dave Parker for discovering bug).
  13) Fix significant memory leak when connections are disconnected. This
      leak has been present since at least 3.15.0. (Thanks to Dave Parker
      for discovering this and providing lots of assistance debugging it.)
  14) Fix the binding to specific interfaces to work with broadcast packets. 
      (Thanks to Marc Zyngier for reporting the problem)
  15) Updated man pages and Users Guide
  16) Added makefile for OpenBSD contributed by Brandon Palmer.
  17) Added makefile for Solaris 8 with Solaris cc compiler 6.1 contributed by Luc I. Suryo.
  
  
  June 25, 2001 Ver 3.16.0
  -------------------------
  Changes:
  1) Add support for configuring multiple interfaces on daemons. Each daemon
     can now choose which interfaces to listen on for client connections, monitor
     requests, and daemon-to-daemon communication.
  2) Added support for MacOSX. Thanks to Julien Defour and Dirk-Willem van Gulik.
  3) Agreed messages for join/leave instead of SAFE messages.
  4) Fixed bug with membership messages for more then 42 members in a group.
  5) Document how to monitor packing effectiveness.
  6) SP_connect assigns unique private name if user gives a zero length string as
     the user name.
  7) Slightly loosen valid field checking for service_type field to allow
     flush and secure spread libraries to work.
  8) Fix events to work with low priority events for Splash.
  9) Adds modular access control and authentication system that allows the 
     daemon to authenticate client connections and allow or disallow various
     actions (such as joining groups, sending messages or connecting) based
     on the authenticated user. This changes the client-server network
     protocol, but is backward compatible with clients linked with old libraries.
     This also adds new functions to the API. A sample module that
     provides access control based on the IP address of the client is 
     included. Also a module that provides the same "allow all clients" 
     policy as older versions of Spread. The Java API has also been 
     updated to support the new access control framework.
  10) New license for Spread. BSD based open-source license.
  11) Updated Perl library with some bug fixes and compatibility with new C lib.
  12) Added support for 64 bit platforms (alpha, ultrasparc & ia64) Note only
      alpha is actually tested.
  13) Fix bug in sp.c where if a message was not completely received because 
      of a short buffer and the next call had an invalid message scatter the
      data in the messages would get corrupted. Probably difficult to trigger 
      unless you are trying hard.
  14) Changed names of programs included with spread to have "sp" as a prefix.
      This should help avoid conflicts with all the other utilities called 
      "user" or "monitor".
  15) Small bugfixes to the Java library. 
  16) Bugfix which removes a costly, and unnecessary, recalculation when 
      several network level membership events occur in close (time) proximity.
   
  March 20, 2001 Ver 3.15.2
  -------------------------
  
  Changes:
  1) Bugfix to java library to fix exception caused when trying to establish
     connection. This is a new bug in 3.15.1. Thanks to Julien Dufour.
  2) Add #define SPREAD_VERSION to sp.h so client applications can test for
     what version of the spread API to use. This allows applications to compile
     against multiple incompatible versions of the spread library. Specifically,
     this can be used for an app to support both the old 'float SP_version()'
     and new 'int SP_version(int, int, int)' functions.
  3) Fix memory leak in Perl module. Thanks to Theo Schlossnagle.
  
  February 26, 2001 Ver. 3.15.1
  -----------------------------
  Changes:
  1) Make sess_read() non-blocking so slow clients sending messages don't slow
     or block daemon.
  2) Implement input validation on all messages received from clients. This
     is to address the possibility of clients overflowing the servers buffers.
     These problems were uncovered in a security audit by Olaf Kirch of Caldera.
  3) Use chroot to isolate spread and drop priveledges if spread is run by root.
     If it is run as a normal user, then no chroot is done and it runs just as 
     before. The user to run as and the location of the chroot jail can be 
     configured in the spread_params.h file at compile time.
  4) Fix a bug that causes a significant memory leak when retransmissions are 
     required. This memory leak exists in versions 3.13, 3.14 and 3.15.0.
  5) SP_version() no longer returns a float, instead it returns in 3 separate
     parameters the 3 components of the version number.
   
  December 20, 2000 -- Unreleased 3.15.0
  -----------------
  Changes:
  1) New version number scheme with 3 components: Major, Minor, and Patch.
  2) Small bugfix to prevent clients from sending to too many groups and
     crashing spread.
  3) Copyright changed to Spread Concepts LLC for code by original
     developers.
  
  0ctober 31, 2000 
  ---------------
  Changes:
  1) Bugfixes to skiplist implementation.
  2) Critical fixes to group membership that removes bugs introduced in 
     optimization work of 3.13.
  3) Critical bugfix to membership which solves problem introduced in 3.13 
     with using configurations of more then one segment.
  4) Changes to spread.conf parser, but nothing that should be user visable.
  5) Better error/problem reporting in a few cases.
  6) Enforce message length limit. SP_mcast* will now return an error
     if a message body is too long.
  7) Minor memory leak at initialization fixed.
  8) Fix to events.c to prevent an illegal message bug. Bug is triggered
     when messages are sent very fast during a membership merge.
  
  August 07, 2000
  ---------------
  Changes:
  1) To compile the Linux version on systems based on glibc2.0 (such as 
     RedHat 5.2) you need to comment out the #define of HAVE_STDINT_H in the 
     arch.h file before compiling.
  
  2) Major scalability improvements. Should now support upto 990 connections
     to each daemon, thousands of groups, and faster throughput with
     small messages.
  
  3) Configuration file changes. 
  	a) The default name of the configuration file 
  	   has changed from config.dat to spread.conf. The default locations 
  	   checked if nothing is specified on the command line is 
  	   /etc/spread.conf and ./spread.conf (i.e. the current directory 
  	   where the binary is run from).
  	b) The format of the spread.conf file is improved. You no longer
  	   have to specify the number of members of a segment or the number
  	   of segments by hand. The format is also more standard and has a 
  	   lex/yacc grammer defining it. See the sample.spread.conf file 
  	   for an example or the documention for details.
  	c) More configuration variables. 
  		EventLogFile: You can now have all the Spread event messages 
  			      that print to the screen print to a file instead.
  			      To have each daemon log to a separate file use the
  			      '%h' or '%H' special characters in the log filename.
  			      Spread will replace those characters with the hostname
  			      of the machine which the daemon is running on. An 
  			      example can be found in the sample.spread.conf file.
  		DebugFlags: The event mask that determines which messages
  			    to print to the screen is now configurable at
  			    runtime.
  		EventTimeStamp: Add a timestamp in front of all logged event 
  				messages and set the format of the timestamp.
  
  		DangerousMonitor: Certain monitor commands like partition, kill
  				  and flow_control are disabled by default now.
  				  To enable them set this to true.
  
  4) Fix membership bug when under high load and a late data message arrives.
     Also fix membership bug where the assertion 
  "spread: membership.c:1835: Backoff_membership: Assertion `pack_entry != -1' failed."
     triggered.
     Also fix membership bug where several machines will get trapped in 
     State 3 (GATHER state) and will never complete the membership.
  
  5) Some documentation on how to tune Spread using some of the internal variables.
     This is contained in the new Spread User Guide Chapter 2 which can be 
     downloaded from www.spread.org.
  
  6) Fix bug in new No Drop semantics. When a BUFFER_TOO_SHORT error occured
     the endian_mismatch field was incorrectly set to the size of the app buffer
     instead of the size of the data message. So it was useless. This is fixed and
     the semantics are extended to set the num_groups and endian_mismatch fields to 0
     if the corresponding buffers ARE large enough, and to the needed size 
     (as a negative) when they are NOT large enough. This allows you to know when 
     you receive a GROUPS_TOO_SHORT whether the buffer is also too short without 
     any calculation...Just check if endian_mismatch is 0.
  
  7) License updated to version 1.2. The only change is a small addition to the
     attribution requirement, a capitalization of Spread, and a clarification of
     the Spread version.
  
  May 01, 2000
  ---------------
  Changes:
  1) Integrated FreeBSD port. A Big thanks to Ben Laurie <ben at algroup.co.uk>
     for this port and a lot of compile warnings, type cleanups and 2 bugfixes.
  
  2) Removed some compile warnings.
  
  3) 2 bugs fixed. One in SP_group_ids_equal() and one in the 
     daemon that would never trigger in reality.
  
  4) Updated java interface to most recent version.
  
  5) Updated events (E_* functions) to most recent version. This
     adds the ability to attach to file descriptors for 
     Exceptions and Write events as well as reads. It also 
     adds a void* data pointer to the callback parameters.
  
  6) Change SP_recv semantics to be "No Drop" by default. The 
     old "drop" semantics are still available by setting the 
     service_type parameter to SP_recv to DROP_RECV before calling it.
     *** 
     See the file "Short_Buffer_Handling.txt" for detailed comments
     on this change and what application modifications might be necessary
     ***
  
  7) Documentation updates.
  
  8) Changed the way arch.h is implemented. This might require 
     some additions for Ports that we do not support natively.
  
  9) Added Is_self_leave() macro which matches documentation for testing
     self-leaves.
  
  10) Changed SP_* and E_* functions to use 'const' appropriately.
  
  11) Reserved fields are listed in sp.h to prevent collisions.
  
  12) Make MAX_PROC_NAME and MAX_PRIVATE_GROUP sizes available in sp.h.
  
  13) Added Perl library interface. You can now write Spread client 
      programs in perl. Thanks to Theo Schlossnagle <theos at cnds.jhu.edu>.
  
  14) License updated to version 1.1. Main change is a reformatting and 
      updated email addresses. 
  
  July 27, 1999 Official Release
  ---------------------------------------------------
  
  1) Has new license (license.txt) and copyright notices
  
  2) New Java interface included
  
  3) Location of license has moved to: 
  	    http://www.spread.org/license/
  	    http://www.cnds.jhu.edu/spread/license/
  
  4) Minor documentation and example program improvements.
  
  5) One minor bug fixed in group handling.
  
  May 26, 1999 Release:
  ---------------------
  1) Expiration Date Removed from Binary version
     This release of the executatbles will not expire.
  
  2) New Copyright Statement
     The copyright of Spread has been finalized. The statement at the top of 
     this file shows it.
  
  3) Source release soon & new license
     a) As soon as a few final issues are resolved we will release the source
        to Spread under the CNDS Non-Commercial and Development License. 
     b) A draft of the new license can be found at 
        http://www.cnds.jhu.edu/spread/CNCL/.
        Please email us any comments or concerns you have at spread at spread.org
  
  4) Bugs Fixed:
     a) Bug fix to the SP_scatter_recv() call to make receives into 
        scatter structures of multiple entries of different sizes work.
     b) The Linux platform also had scatter-gather functionality enabled 
        (now that glibc has working sendmsg, recvmsg calls)
     c) Fixed bug where packets which are delayed a long time in the network
        but then actually arrive at a spread daemon cause a crash.
  
  
  October 30,1998 Release:
  -----------
  1) Multi-threading:
     Libsp.a has split into two libraries, libsp.a and libtsp.a, they
     are identical except that libtsp.a is thread-safe and libsp.a is not.
     Both versions are provided so that single-threaded programs who don't 
     need a safe library can avoid the (admittedly pretty small) overhead of 
     locking. The libtsp.a can be used identically with libsp.a with the 
     addition that all SP_* functions can be called by multiple threads 
     at the same time.  Thread safety in libtsp.a is provided optimally,
     with the most possible parallelism allowed.  Threads acting on separate
     mailboxes will never block each other, threads writing to a mailbox will
     never block other threads reading from the same mailbox and vice versa.
     The one time thread calls to SP_ functions will be serialzed is when 
     multiple threads are reading the same mailbox or writing the same mailbox.
     There is minimal locking of internal structures which can temporarily 
     block another thread, but since a thread never blocks while in one of 
     these structure critical sections and the duration of the lock is at 
     most a fewinstructions the delay should be minimal.  
     
  2) IP-Multicast:
     Spread now allows you to specifiy IP-Multicast addresses(i.e. 224.0.0.1) 
     as the broadcast address for a segment in the spread.conf file. This will 
     work transparently in the same segment, and is guaranteed not to spill 
     multicast packets beyond that segment. If multi-segment ip-multicast is 
     desired, please contact us.
  
  3) Fixed several minor bugs.
  
  4) Included man pages for SP functions. The old html documentation is also 
     included.
  
  5) None of these changes effect the Java version which has not changed.
  
  
  
  1.1                  spread/daemon/Makefile.in
  
  Index: Makefile.in
  ===================================================================
  .SUFFIXES: .lo .to .tlo
  
  prefix=@prefix@
  exec_prefix=@exec_prefix@
  bindir=@bindir@
  sbindir=@sbindir@
  libdir=@libdir@
  mandir=@mandir@
  mansubdir=@mansubdir@
  sysconfdir=@sysconfdir@
  piddir=@piddir@
  srcdir=@srcdir@
  top_srcdir=@top_srcdir@
  
  DESTDIR=
  VPATH=@srcdir@
  SPREAD_PROGRAM=@sbindir@/spread
  SP_MAJOR_VERSION=@SP_MAJOR_VERSION@
  SP_MINOR_VERSION=@SP_MINOR_VERSION@
  SP_PATCH_VERSION=@SP_PATCH_VERSION@
  VERSION=@SP_MAJOR_VERSION at .@SP_MINOR_VERSION at .@SP_PATCH_VERSION@
  
  #Shared Library version -- Must be changed upon each release 
  #Rules: major  -- inc for incompatible change
  #     : minor  -- inc for bugfix or forward compatible change
  
  LIBVERSION=1.0
  
  PATHS= 
  
  CC=@CC@
  LD=@LD@
  CFLAGS=@CFLAGS@
  CPPFLAGS=-I. -I$(srcdir) @CPPFLAGS@ $(PATHS) @DEFS@
  LDFLAGS=@LDFLAGS@
  LIBS=@LIBS@
  THLDFLAGS=@THLDFLAGS@
  THLIBS=@THLIBS@
  AR=@AR@
  LEX=@LEX@
  SHCC=@SHCC@
  SHLD=@SHLD@
  SHCFLAGS=@SHCFLAGS@
  SHCPPFLAGS=@SHCPPFLAGS@ -I. -I$(srcdir) 
  SHLDFLAGS=@SHLDFLAGS@
  SHLIBS=@SHLIBS@
  RANLIB=@RANLIB@
  INSTALL=@INSTALL@
  SOFTLINK=@LN_S@
  PERL=@PERL@
  ENT=@ENT@
  EXEEXT=@EXEEXT@
  
  TARGETS=spread$(EXEEXT) spuser$(EXEEXT) spflooder$(EXEEXT) spmonitor$(EXEEXT) sptuser${EXEEXT} @LIBSPSO@ @LIBTSPSO@
  
  LIBSP_OBJS= alarm.o events.o memory.o sp.o
  
  LIBSP_SHOBJS= alarm.lo events.lo memory.lo sp.lo
  
  LIBTSP_OBJS= alarm.to events.to memory.to sp.to
  
  LIBTSP_SHOBJS= alarm.tlo events.tlo memory.tlo sp.tlo
  
  SPREADOBJS= spread.o protocol.o session.o groups.o alarm.o events.o memory.o membership.o data_link.o network.o status.o log.o flow_control.o message.o lex.yy.o y.tab.o configuration.o skiplist.o acm.o acp-permit.o auth-null.o auth-ip.o
  
  MONITOROBJS= monitor.o  alarm.o events.o memory.o data_link.o lex.yy.o y.tab.o configuration.o skiplist.o acm.o
  
  MANPAGES	= docs/SP_connect.3.out docs/SP_disconnect.3.out docs/SP_equal_group_ids.3.out docs/SP_error.3.out docs/SP_join.3.out docs/SP_leave.3.out docs/SP_multicast.3.out docs/SP_multigroup_multicast.3.out docs/SP_multigroup_scat_multicast.3.out docs/SP_poll.3.out docs/SP_receive.3.out docs/SP_scat_multicast.3.out docs/SP_scat_receive.3.out docs/spread.1.out
  MANPAGES_IN	= docs/SP_connect.3 docs/SP_disconnect.3 docs/SP_equal_group_ids.3 docs/SP_error.3 docs/SP_join.3 docs/SP_leave.3 docs/SP_multicast.3 docs/SP_multigroup_multicast.3 docs/SP_multigroup_scat_multicast.3 docs/SP_poll.3 docs/SP_receive.3 docs/SP_scat_multicast.3 docs/SP_scat_receive.3 docs/spread.1
  MANTYPE		= @MANTYPE@
  
  PATHSUBS	= \
  	-D/etc/spread.conf=$(sysconfdir)/spread.conf \
          -D/var/run/spread.pid=$(piddir)/spread.pid
  
  FIXPATHSCMD	= $(PERL) $(srcdir)/buildtools/fixpaths $(PATHSUBS)
  
  all: $(CONFIGFILES) $(MANPAGES) $(TARGETS)
  
  $(SPREADOBJS): config.h
  $(MONITOROBJS): config.h
  
  .c.o:
  	$(CC) $(CFLAGS) $(CPPFLAGS) -c $<
  
  .c.to:
  	$(CC) $(CFLAGS) $(CPPFLAGS) -D_REENTRANT -c $*.c -o $*.to
  
  .c.lo:
  	$(SHCC) $(SHCFLAGS) $(SHCPPFLAGS) -c $< -o $*.lo
  
  .c.tlo:
  	$(SHCC) $(SHCFLAGS) $(SHCPPFLAGS) -D_REENTRANT -c $< -o $*.tlo
  
  lex.yy.c:       config_gram.l y.tab.c
  	$(LEX) config_gram.l
  
  y.tab.c:        config_parse.y
  	$(YACC) -d config_parse.y
  
  libspread.a: $(LIBSP_OBJS)
  	$(AR) rv $@ $(LIBSP_OBJS)
  	$(RANLIB) $@
  
  none:	
  	@echo "Skipping shared library creation."
  
  install-none:
  	@echo "Skipping shared library installation."
  
  libspread.dylib:	$(LIBSP_SHOBJS)
  	$(SHLD) -o libspread.$(LIBVERSION).dylib $(LIBSP_SHOBJS) $(SHLDFLAGS) $(SHLIBS)
  	$(SOFTLINK) libspread.$(LIBVERSION).dylib $@
  
  install-libspread.dylib:	libspread.dylib
  	$(INSTALL) -m 0755 -s libspread.$(LIBVERSION).dylib $(DESTDIR)$(libdir)/libspread.$(LIBVERSION).dylib
  	(cd $(DESTDIR)$(libdir); $(SOFTLINK) libspread.$(LIBVERSION).dylib libspread.dylib)
  
  libspread.so:	$(LIBSP_SHOBJS)
  	$(SHLD) -o $@ $(LIBSP_SHOBJS) $(SHLDFLAGS) $(SHLIBS)
  
  install-libspread.so:	libspread.so
  	$(INSTALL) -m 0755 -s libspread.so $(DESTDIR)$(libdir)/libspread.so.$(LIBVERSION)
  	(cd $(DESTDIR)$(libdir); $(SOFTLINK) libspread.so.$(LIBVERSION) libspread.so)
  
  libtspread.a: $(LIBTSP_OBJS)
  	$(AR) rv $@ $(LIBTSP_OBJS)
  	$(RANLIB) $@
  
  libtspread.dylib:	$(LIBTSP_SHOBJS)
  	$(SHLD) -o libtspread.$(LIBVERSION).dylib $(LIBSP_SHOBJS) $(SHLDFLAGS) $(SHLIBS) $(THLIBS)
  	$(SOFTLINK) libtspread.$(LIBVERSION).dylib $@
  
  install-libtspread.dylib:	libtspread.dylib
  	$(INSTALL) -m 0755 -s libtspread.$(LIBVERSION).dylib $(DESTDIR)$(libdir)/libtspread.$(LIBVERSION).dylib
  	(cd $(DESTDIR)$(libdir); $(SOFTLINK) libtspread.$(LIBVERSION).dylib libtspread.dylib)
  
  libtspread.so:	$(LIBTSP_SHOBJS)
  	$(SHLD) -o $@ $(LIBTSP_SHOBJS) $(SHLDFLAGS) $(SHLIBS) $(THLIBS)
  
  install-libtspread.so:	libtspread.so
  	$(INSTALL) -m 0755 -s libtspread.so $(DESTDIR)$(libdir)/libtspread.so.$(LIBVERSION)
  	(cd $(DESTDIR)$(libdir); $(SOFTLINK) libtspread.so.$(LIBVERSION) libtspread.so)
  
  spread$(EXEEXT): $(SPREADOBJS)
  	$(LD) -o $@ $(SPREADOBJS) $(LDFLAGS) $(LIBS)
  
  spuser$(EXEEXT): libspread.a	user.o
  	$(LD) -o $@ user.o $(LDFLAGS) libspread.a $(LIBS)
  
  spflooder$(EXEEXT): libspread.a flooder.o
  	$(LD) -o $@ flooder.o $(LDFLAGS) libspread.a $(LIBS)
  
  spmonitor$(EXEEXT): $(MONITOROBJS)
  	$(LD) -o $@ $(MONITOROBJS) $(LDFLAGS) $(LIBS) 
  
  sptuser$(EXEEXT): user.to libtspread.a
  	$(LD) $(THLDFLAGS) -o $@ user.to libtspread.a $(LDFLAGS) $(LIBS) $(THLIBS)
  
  spsimple_user$(EXEEXT): simple_user.o libspread.a
  	$(LD) -o $@ simple_user.o $(LDFLAGS) libspread.a $(LIBS) 
  
  $(MANPAGES): $(MANPAGES_IN)
  	@if test "$(MANTYPE)" = "cat"; then \
  		manpage=$(srcdir)/`echo $@ | sed 's/\.[1-9]\.out$$/\.0/'`; \
  	else \
  		manpage=$(srcdir)/`echo $@ | sed 's/\.out$$//'`; \
  	fi; \
  	if test "$(MANTYPE)" = "man"; then \
  		$(FIXPATHSCMD) $${manpage} | $(PERL) $(srcdir)/buildtools/mdoc2man.pl > $@; \
  	else \
  		$(FIXPATHSCMD) $${manpage} > $@; \
  	fi
  
  clean:
  	rm -f *.lo *.tlo *.to *.o *.a *.dylib $(TARGETS) spsimple_user
  	rm -f config.cache config.log docs/*.out core
  	rm -rf autom4te.cache
  
  distclean: clean
  	rm -f Makefile config.h config.status *~
  
  mrproper: distclean
  
  veryclean: distclean
  	rm -f configure
  
  catman-do:
  	@for f in $(MANPAGES_IN) ; do \
  		base=`echo $$f | sed 's/\..*$$//'` ; \
  		echo "$$f -> $$base.0" ; \
  		nroff -mandoc $$f | cat -v | sed -e 's/.\^H//g' \
  			>$$base.0 ; \
  	done
  
  distprep: catman-do
  	autoreconf
  
  install: $(TARGETS) install-files install- at LIBSPSO@ install- at LIBTSPSO@
  
  install-files:
  	$(srcdir)/mkinstalldirs $(DESTDIR)$(bindir)
  	$(srcdir)/mkinstalldirs $(DESTDIR)$(sbindir)
  	$(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)
  	$(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)1
  	$(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)3
  	$(srcdir)/mkinstalldirs $(DESTDIR)$(libdir)
  	$(INSTALL) -m 0755 -s spmonitor $(DESTDIR)$(bindir)/spmonitor
  	$(INSTALL) -m 0755 -s spuser $(DESTDIR)$(bindir)/spuser
  	$(INSTALL) -m 0755 -s sptuser $(DESTDIR)$(bindir)/sptuser
  	$(INSTALL) -m 0755 -s spflooder $(DESTDIR)$(bindir)/spflooder
  	$(INSTALL) -m 0755 -s spread $(DESTDIR)$(sbindir)/spread
  	$(INSTALL) -m 644 docs/spread.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/spread.1
  	for page in connect disconnect equal_group_ids error join leave multicast multigroup_multicast multigroup_scat_multicast poll receive scat_multicast scat_receive; \
  	do \
  	  $(INSTALL) -m 644 docs/SP_$$page.3.out $(DESTDIR)$(mandir)/$(mansubdir)3/SP_$$page.3; \
  	done
  	if [ ! -d $(DESTDIR)$(sysconfdir) ]; then \
  		$(srcdir)/mkinstalldirs $(DESTDIR)$(sysconfdir); \
  	fi
  	if [ ! -f $(DESTDIR)$(sysconfdir)/spread.conf ]; then \
  		$(INSTALL) -m 644 sample.spread.conf $(DESTDIR)$(sysconfdir)/spread.conf; \
  	else \
  		echo "$(DESTDIR)$(sysconfdir)/spread.conf already exists, install will not overwrite"; \
  	fi
  
  uninstallall:	uninstall
  	-rm -f $(DESTDIR)$(sysconfdir)/spread.conf
  	-rmdir $(DESTDIR)$(sysconfdir)
  	-rmdir $(DESTDIR)$(bindir)
  	-rmdir $(DESTDIR)$(sbindir)
  	-rmdir $(DESTDIR)$(mandir)/$(mansubdir)1
  	-rmdir $(DESTDIR)$(mandir)/$(mansubdir)3
  	-rmdir $(DESTDIR)$(mandir)
  	-rmdir $(DESTDIR)$(libdir)
  
  uninstall: 
  	-rm -f $(DESTDIR)$(bindir)/spuser$(EXEEXT)
  	-rm -f $(DESTDIR)$(bindir)/spmonitor$(EXEEXT)
  	-rm -f $(DESTDIR)$(bindir)/spflooder$(EXEEXT)
  	-rm -f $(DESTDIR)$(bindir)/sptuser$(EXEEXT)
  	-rm -f $(DESTDIR)$(sbindir)/spread
  	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)3/SP_*.3
  	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/spread.1
  
  
  
  1.1                  spread/daemon/acconfig.h
  
  Index: acconfig.h
  ===================================================================
  /* $Id: acconfig.h,v 1.1 2002/09/16 16:59:06 jonathan Exp $ */
  
  #ifndef _CONFIG_H
  #define _CONFIG_H
  
  /* Comments for config.h.in file */
  /* Generated automatically from acconfig.h by autoheader. */
  /* Please make your changes there */
  
  @TOP@
  
  /* Define if your system's struct sockaddr_un has a sun_len member */
  #undef HAVE_SUN_LEN_IN_SOCKADDR_UN
  
  /* Define if you system's inet_ntoa is busted (e.g. Irix gcc issue) */
  #undef BROKEN_INET_NTOA
  
  /* Define if your system defines sys_errlist[] */
  #undef HAVE_SYS_ERRLIST
  
  /* Define if your system defines sys_nerr */
  #undef HAVE_SYS_NERR
  
  /* Define if your snprintf is busted */
  #undef BROKEN_SNPRINTF
  
  #undef HAVE_CYGWIN
  
  /* Define if you are on NeXT */
  #undef HAVE_NEXT
  
  /* Define if you want to install preformatted manpages.*/
  #undef MANTYPE
  
  /* struct timeval */
  #undef HAVE_STRUCT_TIMEVAL
  
  /* Define if libc defines __progname */
  #undef HAVE___PROGNAME
  
  /* Define if your libraries define daemon() */
  #undef HAVE_DAEMON
  
  /* Defined if in_systm.h needs to be included with netinet/ip.h (HPUX - <sigh/>) */
  #undef NEED_IN_SYSTM_H
  
  /* Data types */
  #undef ARCH_PC_WIN95
  #undef ARCH_SCATTER_NONE
  #undef ARCH_SCATTER_CONTROL
  #undef ARCH_SCATTER_ACCRIGHTS
  #undef HAVE_SOCKOPT_LEN_T
  #undef HAVE_STRUCT_TIMEZONE
  #undef HAVE_U_INT
  #undef HAVE_INTXX_T
  #undef HAVE_U_INTXX_T
  #undef HAVE_UINTXX_T
  #undef HAVE_INT64_T
  #undef HAVE_U_INT64_T
  #undef HAVE_SOCKLEN_T
  #undef HAVE_SIZE_T
  #undef HAVE_SSIZE_T
  #undef HAVE_CLOCK_T
  #undef HAVE_MODE_T
  #undef HAVE_PID_T
  #undef HAVE_SA_FAMILY_T
  #undef HAVE_STRUCT_SOCKADDR_STORAGE
  #undef HAVE_STRUCT_ADDRINFO
  #undef HAVE_STRUCT_IN6_ADDR
  #undef HAVE_STRUCT_SOCKADDR_IN6
  
  /* Fields in struct sockaddr_storage */
  #undef HAVE_SS_FAMILY_IN_SS
  #undef HAVE___SS_FAMILY_IN_SS
  
  /* Specify location of spread.pid */
  #undef _PATH_SPREAD_PIDDIR
  
  /* Specify location of spread.conf and other configuration files */
  #undef SPREAD_ETCDIR
  
  @BOTTOM@
  
  /* ******************* Shouldn't need to edit below this line ************** */
  
  #include "defines.h"
  
  #endif /* _CONFIG_H */
  
  
  
  1.1                  spread/daemon/config.h.in
  
  Index: config.h.in
  ===================================================================
  /* config.h.in.  Generated automatically from configure.in by autoheader.  */
  /* $Id: config.h.in,v 1.1 2002/09/16 16:59:06 jonathan Exp $ */
  
  #ifndef _CONFIG_H
  #define _CONFIG_H
  
  /* Comments for config.h.in file */
  /* Generated automatically from acconfig.h by autoheader. */
  /* Please make your changes there */
  
  
  /* Define if you have the strftime function.  */
  #undef HAVE_STRFTIME
  
  /* Define as __inline if that's what the C compiler calls it.  */
  #undef inline
  
  /* Define if your processor stores words with the most significant
     byte first (like Motorola and SPARC, unlike Intel and VAX).  */
  #undef WORDS_BIGENDIAN
  
  /* Define if your system's struct sockaddr_un has a sun_len member */
  #undef HAVE_SUN_LEN_IN_SOCKADDR_UN
  
  /* Define if your system defines sys_errlist[] */
  #undef HAVE_SYS_ERRLIST
  
  /* Define if your system defines sys_nerr */
  #undef HAVE_SYS_NERR
  
  /* Define if your snprintf is busted */
  #undef BROKEN_SNPRINTF
  
  /* struct timeval */
  #undef HAVE_STRUCT_TIMEVAL
  
  /* Define if libc defines __progname */
  #undef HAVE___PROGNAME
  
  /* Data types */
  #undef ARCH_PC_WIN95
  #undef ARCH_SCATTER_NONE
  #undef ARCH_SCATTER_CONTROL
  #undef ARCH_SCATTER_ACCRIGHTS
  #undef HAVE_SOCKOPT_LEN_T
  #undef HAVE_STRUCT_TIMEZONE
  #undef HAVE_U_INT
  #undef HAVE_INTXX_T
  #undef HAVE_U_INTXX_T
  #undef HAVE_UINTXX_T
  #undef HAVE_INT64_T
  #undef HAVE_U_INT64_T
  #undef HAVE_SOCKLEN_T
  #undef HAVE_SIZE_T
  #undef HAVE_SSIZE_T
  #undef HAVE_CLOCK_T
  #undef HAVE_MODE_T
  #undef HAVE_PID_T
  #undef HAVE_SA_FAMILY_T
  #undef HAVE_STRUCT_SOCKADDR_STORAGE
  #undef HAVE_STRUCT_ADDRINFO
  #undef HAVE_STRUCT_IN6_ADDR
  #undef HAVE_STRUCT_SOCKADDR_IN6
  
  /* Fields in struct sockaddr_storage */
  #undef HAVE_SS_FAMILY_IN_SS
  #undef HAVE___SS_FAMILY_IN_SS
  
  /* Specify location of spread.pid */
  #undef _PATH_SPREAD_PIDDIR
  
  /* Specify location of spread.conf and other configuration files */
  #undef SPREAD_ETCDIR
  
  /* The number of bytes in a char.  */
  #undef SIZEOF_CHAR
  
  /* The number of bytes in a int.  */
  #undef SIZEOF_INT
  
  /* The number of bytes in a long int.  */
  #undef SIZEOF_LONG_INT
  
  /* The number of bytes in a long long int.  */
  #undef SIZEOF_LONG_LONG_INT
  
  /* The number of bytes in a short int.  */
  #undef SIZEOF_SHORT_INT
  
  /* Define if you have the bcopy function.  */
  #undef HAVE_BCOPY
  
  /* Define if you have the gettimeofday function.  */
  #undef HAVE_GETTIMEOFDAY
  
  /* Define if you have the inet_aton function.  */
  #undef HAVE_INET_ATON
  
  /* Define if you have the inet_ntoa function.  */
  #undef HAVE_INET_NTOA
  
  /* Define if you have the inet_ntop function.  */
  #undef HAVE_INET_NTOP
  
  /* Define if you have the lrand48 function.  */
  #undef HAVE_LRAND48
  
  /* Define if you have the memmove function.  */
  #undef HAVE_MEMMOVE
  
  /* Define if you have the setsid function.  */
  #undef HAVE_SETSID
  
  /* Define if you have the snprintf function.  */
  #undef HAVE_SNPRINTF
  
  /* Define if you have the strerror function.  */
  #undef HAVE_STRERROR
  
  /* Define if you have the time function.  */
  #undef HAVE_TIME
  
  /* Define if you have the <arpa/inet.h> header file.  */
  #undef HAVE_ARPA_INET_H
  
  /* Define if you have the <assert.h> header file.  */
  #undef HAVE_ASSERT_H
  
  /* Define if you have the <errno.h> header file.  */
  #undef HAVE_ERRNO_H
  
  /* Define if you have the <grp.h> header file.  */
  #undef HAVE_GRP_H
  
  /* Define if you have the <limits.h> header file.  */
  #undef HAVE_LIMITS_H
  
  /* Define if you have the <netdb.h> header file.  */
  #undef HAVE_NETDB_H
  
  /* Define if you have the <netinet/in.h> header file.  */
  #undef HAVE_NETINET_IN_H
  
  /* Define if you have the <netinet/tcp.h> header file.  */
  #undef HAVE_NETINET_TCP_H
  
  /* Define if you have the <process.h> header file.  */
  #undef HAVE_PROCESS_H
  
  /* Define if you have the <pthread.h> header file.  */
  #undef HAVE_PTHREAD_H
  
  /* Define if you have the <pwd.h> header file.  */
  #undef HAVE_PWD_H
  
  /* Define if you have the <signal.h> header file.  */
  #undef HAVE_SIGNAL_H
  
  /* Define if you have the <stdarg.h> header file.  */
  #undef HAVE_STDARG_H
  
  /* Define if you have the <stdint.h> header file.  */
  #undef HAVE_STDINT_H
  
  /* Define if you have the <stdio.h> header file.  */
  #undef HAVE_STDIO_H
  
  /* Define if you have the <stdlib.h> header file.  */
  #undef HAVE_STDLIB_H
  
  /* Define if you have the <string.h> header file.  */
  #undef HAVE_STRING_H
  
  /* Define if you have the <sys/filio.h> header file.  */
  #undef HAVE_SYS_FILIO_H
  
  /* Define if you have the <sys/inttypes.h> header file.  */
  #undef HAVE_SYS_INTTYPES_H
  
  /* Define if you have the <sys/ioctl.h> header file.  */
  #undef HAVE_SYS_IOCTL_H
  
  /* Define if you have the <sys/param.h> header file.  */
  #undef HAVE_SYS_PARAM_H
  
  /* Define if you have the <sys/socket.h> header file.  */
  #undef HAVE_SYS_SOCKET_H
  
  /* Define if you have the <sys/stat.h> header file.  */
  #undef HAVE_SYS_STAT_H
  
  /* Define if you have the <sys/time.h> header file.  */
  #undef HAVE_SYS_TIME_H
  
  /* Define if you have the <sys/timeb.h> header file.  */
  #undef HAVE_SYS_TIMEB_H
  
  /* Define if you have the <sys/types.h> header file.  */
  #undef HAVE_SYS_TYPES_H
  
  /* Define if you have the <sys/uio.h> header file.  */
  #undef HAVE_SYS_UIO_H
  
  /* Define if you have the <sys/un.h> header file.  */
  #undef HAVE_SYS_UN_H
  
  /* Define if you have the <time.h> header file.  */
  #undef HAVE_TIME_H
  
  /* Define if you have the <unistd.h> header file.  */
  #undef HAVE_UNISTD_H
  
  /* Define if you have the <windows.h> header file.  */
  #undef HAVE_WINDOWS_H
  
  /* Define if you have the <winsock.h> header file.  */
  #undef HAVE_WINSOCK_H
  
  /* Define if you have the nsl library (-lnsl).  */
  #undef HAVE_LIBNSL
  
  /* Define if you have the posix4 library (-lposix4).  */
  #undef HAVE_LIBPOSIX4
  
  /* Define if you have the pthread library (-lpthread).  */
  #undef HAVE_LIBPTHREAD
  
  /* Define if you have the socket library (-lsocket).  */
  #undef HAVE_LIBSOCKET
  
  /* Define if you have the thread library (-lthread).  */
  #undef HAVE_LIBTHREAD
  
  /* ******************* Shouldn't need to edit below this line ************** */
  
  #include "defines.h"
  
  #endif /* _CONFIG_H */
  
  
  
  1.1                  spread/daemon/configure
  
  Index: configure
  ===================================================================
  #! /bin/sh
  
  # Guess values for system-dependent variables and create Makefiles.
  # Generated automatically using autoconf version 2.13 
  # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
  #
  # This configure script is free software; the Free Software Foundation
  # gives unlimited permission to copy, distribute and modify it.
  
  # Defaults:
  ac_help=
  ac_default_prefix=/usr/local
  # Any additions from configure.in:
  ac_help="$ac_help
    --with-cflags           Specify additional flags to pass to compiler"
  ac_help="$ac_help
    --with-cppflags         Specify additional flags to pass to preprocessor "
  ac_help="$ac_help
    --with-ldflags          Specify additional flags to pass to linker"
  ac_help="$ac_help
    --with-libs             Specify additional libraries to link with"
  ac_help="$ac_help
    --with-mantype=man|cat|doc  Set man page type"
  ac_help="$ac_help
    --with-pid-dir=PATH     Specify location of spread.pid file"
  
  # Initialize some variables set by options.
  # The variables have the same names as the options, with
  # dashes changed to underlines.
  build=NONE
  cache_file=./config.cache
  exec_prefix=NONE
  host=NONE
  no_create=
  nonopt=NONE
  no_recursion=
  prefix=NONE
  program_prefix=NONE
  program_suffix=NONE
  program_transform_name=s,x,x,
  silent=
  site=
  srcdir=
  target=NONE
  verbose=
  x_includes=NONE
  x_libraries=NONE
  bindir='${exec_prefix}/bin'
  sbindir='${exec_prefix}/sbin'
  libexecdir='${exec_prefix}/libexec'
  datadir='${prefix}/share'
  sysconfdir='${prefix}/etc'
  sharedstatedir='${prefix}/com'
  localstatedir='${prefix}/var'
  libdir='${exec_prefix}/lib'
  includedir='${prefix}/include'
  oldincludedir='/usr/include'
  infodir='${prefix}/info'
  mandir='${prefix}/man'
  
  # Initialize some other variables.
  subdirs=
  MFLAGS= MAKEFLAGS=
  SHELL=${CONFIG_SHELL-/bin/sh}
  # Maximum number of lines to put in a shell here document.
  ac_max_here_lines=12
  
  ac_prev=
  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=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
    *) ac_optarg= ;;
    esac
  
    # Accept the important Cygnus configure options, so we can diagnose typos.
  
    case "$ac_option" in
  
    -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 ;;
    -build=* | --build=* | --buil=* | --bui=* | --bu=*)
      build="$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" ;;
  
    -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
      ac_prev=datadir ;;
    -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
    | --da=*)
      datadir="$ac_optarg" ;;
  
    -disable-* | --disable-*)
      ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
      # Reject names that are not valid shell variable names.
      if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
        { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
      fi
      ac_feature=`echo $ac_feature| sed 's/-/_/g'`
      eval "enable_${ac_feature}=no" ;;
  
    -enable-* | --enable-*)
      ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
      # Reject names that are not valid shell variable names.
      if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
        { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
      fi
      ac_feature=`echo $ac_feature| sed 's/-/_/g'`
      case "$ac_option" in
        *=*) ;;
        *) ac_optarg=yes ;;
      esac
      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)
      # 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 << EOF
  Usage: configure [options] [host]
  Options: [defaults in brackets after descriptions]
  Configuration:
    --cache-file=FILE       cache test results in FILE
    --help                  print this message
    --no-create             do not create output files
    --quiet, --silent       do not print \`checking...' messages
    --version               print the version of autoconf that created configure
  Directory and file names:
    --prefix=PREFIX         install architecture-independent files in PREFIX
                            [$ac_default_prefix]
    --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                            [same as prefix]
    --bindir=DIR            user executables in DIR [EPREFIX/bin]
    --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
    --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
    --datadir=DIR           read-only architecture-independent data in DIR
                            [PREFIX/share]
    --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
    --sharedstatedir=DIR    modifiable architecture-independent data in DIR
                            [PREFIX/com]
    --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
    --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
    --includedir=DIR        C header files in DIR [PREFIX/include]
    --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
    --infodir=DIR           info documentation in DIR [PREFIX/info]
    --mandir=DIR            man documentation in DIR [PREFIX/man]
    --srcdir=DIR            find the sources in DIR [configure dir or ..]
    --program-prefix=PREFIX prepend PREFIX to installed program names
    --program-suffix=SUFFIX append SUFFIX to installed program names
    --program-transform-name=PROGRAM
                            run sed PROGRAM on installed program names
  EOF
      cat << EOF
  Host type:
    --build=BUILD           configure for building on BUILD [BUILD=HOST]
    --host=HOST             configure for HOST [guessed]
    --target=TARGET         configure for TARGET [TARGET=HOST]
  Features and packages:
    --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
    --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
    --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
    --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
    --x-includes=DIR        X include files are in DIR
    --x-libraries=DIR       X library files are in DIR
  EOF
      if test -n "$ac_help"; then
        echo "--enable and --with options recognized:$ac_help"
      fi
      exit 0 ;;
  
    -host | --host | --hos | --ho)
      ac_prev=host ;;
    -host=* | --host=* | --hos=* | --ho=*)
      host="$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" ;;
  
    -localstatedir | --localstatedir | --localstatedi | --localstated \
    | --localstate | --localstat | --localsta | --localst \
    | --locals | --local | --loca | --loc | --lo)
      ac_prev=localstatedir ;;
    -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
    | --localstate=* | --localstat=* | --localsta=* | --localst=* \
    | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
      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)
      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" ;;
  
    -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 ;;
    -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
      target="$ac_optarg" ;;
  
    -v | -verbose | --verbose | --verbos | --verbo | --verb)
      verbose=yes ;;
  
    -version | --version | --versio | --versi | --vers)
      echo "configure generated by autoconf version 2.13"
      exit 0 ;;
  
    -with-* | --with-*)
      ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
      # Reject names that are not valid shell variable names.
      if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
        { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
      fi
      ac_package=`echo $ac_package| sed 's/-/_/g'`
      case "$ac_option" in
        *=*) ;;
        *) ac_optarg=yes ;;
      esac
      eval "with_${ac_package}='$ac_optarg'" ;;
  
    -without-* | --without-*)
      ac_package=`echo $ac_option|sed -e 's/-*without-//'`
      # Reject names that are not valid shell variable names.
      if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
        { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
      fi
      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 "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
      ;;
  
    *)
      if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
        echo "configure: warning: $ac_option: invalid host type" 1>&2
      fi
      if test "x$nonopt" != xNONE; then
        { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
      fi
      nonopt="$ac_option"
      ;;
  
    esac
  done
  
  if test -n "$ac_prev"; then
    { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
  fi
  
  trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
  
  # File descriptor usage:
  # 0 standard input
  # 1 file creation
  # 2 errors and warnings
  # 3 some systems may open it to /dev/tty
  # 4 used on the Kubota Titan
  # 6 checking for... messages and results
  # 5 compiler messages saved in config.log
  if test "$silent" = yes; then
    exec 6>/dev/null
  else
    exec 6>&1
  fi
  exec 5>./config.log
  
  echo "\
  This file contains any messages produced by compilers while
  running configure, to aid debugging if configure makes a mistake.
  " 1>&5
  
  # Strip out --no-create and --no-recursion so they do not pile up.
  # Also quote any args containing shell metacharacters.
  ac_configure_args=
  for ac_arg
  do
    case "$ac_arg" in
    -no-create | --no-create | --no-creat | --no-crea | --no-cre \
    | --no-cr | --no-c) ;;
    -no-recursion | --no-recursion | --no-recursio | --no-recursi \
    | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
    ac_configure_args="$ac_configure_args '$ac_arg'" ;;
    *) ac_configure_args="$ac_configure_args $ac_arg" ;;
    esac
  done
  
  # NLS nuisances.
  # Only set these to C if already set.  These must not be set unconditionally
  # because not all systems understand e.g. LANG=C (notably SCO).
  # Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
  # Non-C LC_CTYPE values break the ctype check.
  if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
  if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
  if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
  if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
  
  # confdefs.h avoids OS command line length limits that DEFS can exceed.
  rm -rf conftest* confdefs.h
  # AIX cpp loses on an empty file, so make sure it contains at least a newline.
  echo > confdefs.h
  
  # A filename unique to this package, relative to the directory that
  # configure is in, which we can look for to find out if srcdir is correct.
  ac_unique_file=spread.c
  
  # 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 its parent.
    ac_prog=$0
    ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
    test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
    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
    if test "$ac_srcdir_defaulted" = yes; then
      { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
    else
      { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
    fi
  fi
  srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
  
  # Prefer explicitly selected file to automatically selected ones.
  if test -z "$CONFIG_SITE"; then
    if test "x$prefix" != xNONE; then
      CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
    else
      CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
    fi
  fi
  for ac_site_file in $CONFIG_SITE; do
    if test -r "$ac_site_file"; then
      echo "loading site script $ac_site_file"
      . "$ac_site_file"
    fi
  done
  
  if test -r "$cache_file"; then
    echo "loading cache $cache_file"
    . $cache_file
  else
    echo "creating cache $cache_file"
    > $cache_file
  fi
  
  ac_ext=c
  # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
  ac_cpp='$CPP $CPPFLAGS'
  ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
  ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
  cross_compiling=$ac_cv_prog_cc_cross
  
  ac_exeext=
  ac_objext=o
  if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
    # Stardent Vistra SVR4 grep lacks -e, says ghazi at caip.rutgers.edu.
    if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
      ac_n= ac_c='
  ' ac_t='	'
    else
      ac_n=-n ac_c= ac_t=
    fi
  else
    ac_n= ac_c='\c' ac_t=
  fi
  
  
  
  ac_aux_dir=
  for ac_dir in buildtools $srcdir/buildtools; 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
    fi
  done
  if test -z "$ac_aux_dir"; then
    { echo "configure: error: can not find install-sh or install.sh in buildtools $srcdir/buildtools" 1>&2; exit 1; }
  fi
  ac_config_guess=$ac_aux_dir/config.guess
  ac_config_sub=$ac_aux_dir/config.sub
  ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
  
  
  # Extract the first word of "gcc", so it can be a program name with args.
  set dummy gcc; ac_word=$2
  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
  echo "configure:561: checking for $ac_word" >&5
  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    if test -n "$CC"; then
    ac_cv_prog_CC="$CC" # Let the user override the test.
  else
    IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
    ac_dummy="$PATH"
    for ac_dir in $ac_dummy; do
      test -z "$ac_dir" && ac_dir=.
      if test -f $ac_dir/$ac_word; then
        ac_cv_prog_CC="gcc"
        break
      fi
    done
    IFS="$ac_save_ifs"
  fi
  fi
  CC="$ac_cv_prog_CC"
  if test -n "$CC"; then
    echo "$ac_t""$CC" 1>&6
  else
    echo "$ac_t""no" 1>&6
  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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
  echo "configure:591: checking for $ac_word" >&5
  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    if test -n "$CC"; then
    ac_cv_prog_CC="$CC" # Let the user override the test.
  else
    IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
    ac_prog_rejected=no
    ac_dummy="$PATH"
    for ac_dir in $ac_dummy; do
      test -z "$ac_dir" && ac_dir=.
      if test -f $ac_dir/$ac_word; then
        if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
          ac_prog_rejected=yes
  	continue
        fi
        ac_cv_prog_CC="cc"
        break
      fi
    done
    IFS="$ac_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 $# -gt 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
      set dummy "$ac_dir/$ac_word" "$@"
      shift
      ac_cv_prog_CC="$@"
    fi
  fi
  fi
  fi
  CC="$ac_cv_prog_CC"
  if test -n "$CC"; then
    echo "$ac_t""$CC" 1>&6
  else
    echo "$ac_t""no" 1>&6
  fi
  
    if test -z "$CC"; then
      case "`uname -s`" in
      *win32* | *WIN32*)
        # Extract the first word of "cl", so it can be a program name with args.
  set dummy cl; ac_word=$2
  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
  echo "configure:642: checking for $ac_word" >&5
  if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    if test -n "$CC"; then
    ac_cv_prog_CC="$CC" # Let the user override the test.
  else
    IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
    ac_dummy="$PATH"
    for ac_dir in $ac_dummy; do
      test -z "$ac_dir" && ac_dir=.
      if test -f $ac_dir/$ac_word; then
        ac_cv_prog_CC="cl"
        break
      fi
    done
    IFS="$ac_save_ifs"
  fi
  fi
  CC="$ac_cv_prog_CC"
  if test -n "$CC"; then
    echo "$ac_t""$CC" 1>&6
  else
    echo "$ac_t""no" 1>&6
  fi
   ;;
      esac
    fi
    test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
  fi
  
  echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
  echo "configure:674: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
  
  ac_ext=c
  # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
  ac_cpp='$CPP $CPPFLAGS'
  ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
  ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
  cross_compiling=$ac_cv_prog_cc_cross
  
  cat > conftest.$ac_ext << EOF
  
  #line 685 "configure"
  #include "confdefs.h"
  
  main(){return(0);}
  EOF
  if { (eval echo configure:690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    ac_cv_prog_cc_works=yes
    # If we can't run a trivial program, we are probably using a cross compiler.
    if (./conftest; exit) 2>/dev/null; then
      ac_cv_prog_cc_cross=no
    else
      ac_cv_prog_cc_cross=yes
    fi
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    ac_cv_prog_cc_works=no
  fi
  rm -fr conftest*
  ac_ext=c
  # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
  ac_cpp='$CPP $CPPFLAGS'
  ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
  ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
  cross_compiling=$ac_cv_prog_cc_cross
  
  echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
  if test $ac_cv_prog_cc_works = no; then
    { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
  fi
  echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
  echo "configure:716: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
  echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
  cross_compiling=$ac_cv_prog_cc_cross
  
  echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
  echo "configure:721: checking whether we are using GNU C" >&5
  if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.c <<EOF
  #ifdef __GNUC__
    yes;
  #endif
  EOF
  if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:730: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
    ac_cv_prog_gcc=yes
  else
    ac_cv_prog_gcc=no
  fi
  fi
  
  echo "$ac_t""$ac_cv_prog_gcc" 1>&6
  
  if test $ac_cv_prog_gcc = yes; then
    GCC=yes
  else
    GCC=
  fi
  
  ac_test_CFLAGS="${CFLAGS+set}"
  ac_save_CFLAGS="$CFLAGS"
  CFLAGS=
  echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
  echo "configure:749: checking whether ${CC-cc} accepts -g" >&5
  if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    echo 'void f(){}' > conftest.c
  if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
    ac_cv_prog_cc_g=yes
  else
    ac_cv_prog_cc_g=no
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_prog_cc_g" 1>&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
  
  
  # Make sure we can run config.sub.
  if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
  else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
  fi
  
  echo $ac_n "checking host system type""... $ac_c" 1>&6
  echo "configure:787: checking host system type" >&5
  
  host_alias=$host
  case "$host_alias" in
  NONE)
    case $nonopt in
    NONE)
      if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
      else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
      fi ;;
    *) host_alias=$nonopt ;;
    esac ;;
  esac
  
  host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
  host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
  host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
  host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
  echo "$ac_t""$host" 1>&6
  
  echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
  echo "configure:808: checking whether byte ordering is bigendian" >&5
  if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    ac_cv_c_bigendian=unknown
  # See if sys/param.h defines the BYTE_ORDER macro.
  cat > conftest.$ac_ext <<EOF
  #line 815 "configure"
  #include "confdefs.h"
  #include <sys/types.h>
  #include <sys/param.h>
  int main() {
  
  #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
   bogus endian macros
  #endif
  ; return 0; }
  EOF
  if { (eval echo configure:826: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
    # It does; now see whether it defined to BIG_ENDIAN or not.
  cat > conftest.$ac_ext <<EOF
  #line 830 "configure"
  #include "confdefs.h"
  #include <sys/types.h>
  #include <sys/param.h>
  int main() {
  
  #if BYTE_ORDER != BIG_ENDIAN
   not big endian
  #endif
  ; return 0; }
  EOF
  if { (eval echo configure:841: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
    ac_cv_c_bigendian=yes
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
    ac_cv_c_bigendian=no
  fi
  rm -f conftest*
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
  fi
  rm -f conftest*
  if test $ac_cv_c_bigendian = unknown; then
  if test "$cross_compiling" = yes; then
      { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
  else
    cat > conftest.$ac_ext <<EOF
  #line 861 "configure"
  #include "confdefs.h"
  main () {
    /* Are we little or big endian?  From Harbison&Steele.  */
    union
    {
      long l;
      char c[sizeof (long)];
    } u;
    u.l = 1;
    exit (u.c[sizeof (long) - 1] == 1);
  }
  EOF
  if { (eval echo configure:874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
  then
    ac_cv_c_bigendian=no
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -fr conftest*
    ac_cv_c_bigendian=yes
  fi
  rm -fr conftest*
  fi
  
  fi
  fi
  
  echo "$ac_t""$ac_cv_c_bigendian" 1>&6
  if test $ac_cv_c_bigendian = yes; then
    cat >> confdefs.h <<\EOF
  #define WORDS_BIGENDIAN 1
  EOF
  
  fi
  
  
  # Checks for programs.
  echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
  echo "configure:900: checking how to run the C preprocessor" >&5
  # On Suns, sometimes $CPP names a directory.
  if test -n "$CPP" && test -d "$CPP"; then
    CPP=
  fi
  if test -z "$CPP"; then
  if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
      # This must be in double quotes, not single quotes, because CPP may get
    # substituted into the Makefile and "${CC-cc}" will confuse make.
    CPP="${CC-cc} -E"
    # On the NeXT, cc -E runs the code through the compiler's parser,
    # not just through cpp.
    cat > conftest.$ac_ext <<EOF
  #line 915 "configure"
  #include "confdefs.h"
  #include <assert.h>
  Syntax Error
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
  { (eval echo configure:921: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    :
  else
    echo "$ac_err" >&5
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
    CPP="${CC-cc} -E -traditional-cpp"
    cat > conftest.$ac_ext <<EOF
  #line 932 "configure"
  #include "confdefs.h"
  #include <assert.h>
  Syntax Error
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
  { (eval echo configure:938: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    :
  else
    echo "$ac_err" >&5
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
    CPP="${CC-cc} -nologo -E"
    cat > conftest.$ac_ext <<EOF
  #line 949 "configure"
  #include "confdefs.h"
  #include <assert.h>
  Syntax Error
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
  { (eval echo configure:955: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    :
  else
    echo "$ac_err" >&5
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
    CPP=/lib/cpp
  fi
  rm -f conftest*
  fi
  rm -f conftest*
  fi
  rm -f conftest*
    ac_cv_prog_CPP="$CPP"
  fi
    CPP="$ac_cv_prog_CPP"
  else
    ac_cv_prog_CPP="$CPP"
  fi
  echo "$ac_t""$CPP" 1>&6
  
  # Extract the first word of "ranlib", so it can be a program name with args.
  set dummy ranlib; ac_word=$2
  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
  echo "configure:982: checking for $ac_word" >&5
  if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    if test -n "$RANLIB"; then
    ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
  else
    IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
    ac_dummy="$PATH"
    for ac_dir in $ac_dummy; do
      test -z "$ac_dir" && ac_dir=.
      if test -f $ac_dir/$ac_word; then
        ac_cv_prog_RANLIB="ranlib"
        break
      fi
    done
    IFS="$ac_save_ifs"
    test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
  fi
  fi
  RANLIB="$ac_cv_prog_RANLIB"
  if test -n "$RANLIB"; then
    echo "$ac_t""$RANLIB" 1>&6
  else
    echo "$ac_t""no" 1>&6
  fi
  
  # 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
  # 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"
  # ./install, which can be erroneously created by make from ./install.sh.
  echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
  echo "configure:1021: checking for a BSD compatible install" >&5
  if test -z "$INSTALL"; then
  if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
      IFS="${IFS= 	}"; ac_save_IFS="$IFS"; IFS=":"
    for ac_dir in $PATH; do
      # Account for people who put trailing slashes in PATH elements.
      case "$ac_dir/" in
      /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/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
          if test -f $ac_dir/$ac_prog; then
  	  if test $ac_prog = install &&
              grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
  	    # AIX install.  It has an incompatible calling convention.
  	    :
  	  else
  	    ac_cv_path_install="$ac_dir/$ac_prog -c"
  	    break 2
  	  fi
  	fi
        done
        ;;
      esac
    done
    IFS="$ac_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.  We don't cache a
      # path for INSTALL within a source directory, because that will
      # break other packages using the cache if that directory is
      # removed, or if the path is relative.
      INSTALL="$ac_install_sh"
    fi
  fi
  echo "$ac_t""$INSTALL" 1>&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_PROGRAM}'
  
  test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
  
  echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
  echo "configure:1074: checking whether ln -s works" >&5
  if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    rm -f conftestdata
  if ln -s X conftestdata 2>/dev/null
  then
    rm -f conftestdata
    ac_cv_prog_LN_S="ln -s"
  else
    ac_cv_prog_LN_S=ln
  fi
  fi
  LN_S="$ac_cv_prog_LN_S"
  if test "$ac_cv_prog_LN_S" = "ln -s"; then
    echo "$ac_t""yes" 1>&6
  else
    echo "$ac_t""no" 1>&6
  fi
  
  for ac_prog in 'bison -y' byacc
  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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
  echo "configure:1099: checking for $ac_word" >&5
  if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    if test -n "$YACC"; then
    ac_cv_prog_YACC="$YACC" # Let the user override the test.
  else
    IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
    ac_dummy="$PATH"
    for ac_dir in $ac_dummy; do
      test -z "$ac_dir" && ac_dir=.
      if test -f $ac_dir/$ac_word; then
        ac_cv_prog_YACC="$ac_prog"
        break
      fi
    done
    IFS="$ac_save_ifs"
  fi
  fi
  YACC="$ac_cv_prog_YACC"
  if test -n "$YACC"; then
    echo "$ac_t""$YACC" 1>&6
  else
    echo "$ac_t""no" 1>&6
  fi
  
  test -n "$YACC" && break
  done
  test -n "$YACC" || YACC="yacc"
  
  # Extract the first word of "flex", so it can be a program name with args.
  set dummy flex; ac_word=$2
  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
  echo "configure:1132: checking for $ac_word" >&5
  if eval "test \"`echo '$''{'ac_cv_path_LEX'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    case "$LEX" in
    /*)
    ac_cv_path_LEX="$LEX" # Let the user override the test with a path.
    ;;
    ?:/*)			 
    ac_cv_path_LEX="$LEX" # Let the user override the test with a dos path.
    ;;
    *)
    IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
    ac_dummy="$PATH"
    for ac_dir in $ac_dummy; do 
      test -z "$ac_dir" && ac_dir=.
      if test -f $ac_dir/$ac_word; then
        ac_cv_path_LEX="$ac_dir/$ac_word"
        break
      fi
    done
    IFS="$ac_save_ifs"
    ;;
  esac
  fi
  LEX="$ac_cv_path_LEX"
  if test -n "$LEX"; then
    echo "$ac_t""$LEX" 1>&6
  else
    echo "$ac_t""no" 1>&6
  fi
  
  
  # Extract the first word of "ar", so it can be a program name with args.
  set dummy ar; ac_word=$2
  echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
  echo "configure:1168: checking for $ac_word" >&5
  if eval "test \"`echo '$''{'ac_cv_path_AR'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    case "$AR" in
    /*)
    ac_cv_path_AR="$AR" # Let the user override the test with a path.
    ;;
    ?:/*)			 
    ac_cv_path_AR="$AR" # Let the user override the test with a dos path.
    ;;
    *)
    IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
    ac_dummy="$PATH"
    for ac_dir in $ac_dummy; do 
      test -z "$ac_dir" && ac_dir=.
      if test -f $ac_dir/$ac_word; then
        ac_cv_path_AR="$ac_dir/$ac_word"
        break
      fi
    done
    IFS="$ac_save_ifs"
    ;;
  esac
  fi
  AR="$ac_cv_path_AR"
  if test -n "$AR"; then
    echo "$ac_t""$AR" 1>&6
  else
    echo "$ac_t""no" 1>&6
  fi
  
  for ac_prog in perl5 perl
  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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
  echo "configure:1205: checking for $ac_word" >&5
  if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    case "$PERL" in
    /*)
    ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
    ;;
    ?:/*)			 
    ac_cv_path_PERL="$PERL" # Let the user override the test with a dos path.
    ;;
    *)
    IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
    ac_dummy="$PATH"
    for ac_dir in $ac_dummy; do 
      test -z "$ac_dir" && ac_dir=.
      if test -f $ac_dir/$ac_word; then
        ac_cv_path_PERL="$ac_dir/$ac_word"
        break
      fi
    done
    IFS="$ac_save_ifs"
    ;;
  esac
  fi
  PERL="$ac_cv_path_PERL"
  if test -n "$PERL"; then
    echo "$ac_t""$PERL" 1>&6
  else
    echo "$ac_t""no" 1>&6
  fi
  
  test -n "$PERL" && break
  done
  
  
  
  if test -z "$AR" ; then
  	{ echo "configure: error: *** 'ar' missing, please install or fix your \$PATH ***" 1>&2; exit 1; }
  fi
  
  if test -z "$LD" ; then
  	LD=$CC
  fi
  
  	
  # C Compiler features
  echo $ac_n "checking for inline""... $ac_c" 1>&6
  echo "configure:1253: checking for inline" >&5
  if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    ac_cv_c_inline=no
  for ac_kw in inline __inline__ __inline; do
    cat > conftest.$ac_ext <<EOF
  #line 1260 "configure"
  #include "confdefs.h"
  
  int main() {
  } $ac_kw foo() {
  ; return 0; }
  EOF
  if { (eval echo configure:1267: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
    ac_cv_c_inline=$ac_kw; break
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
  fi
  rm -f conftest*
  done
  
  fi
  
  echo "$ac_t""$ac_cv_c_inline" 1>&6
  case "$ac_cv_c_inline" in
    inline | yes) ;;
    no) cat >> confdefs.h <<\EOF
  #define inline 
  EOF
   ;;
    *)  cat >> confdefs.h <<EOF
  #define inline $ac_cv_c_inline
  EOF
   ;;
  esac
  
  if test "$GCC" = "yes"; then 
  	CFLAGS="$CFLAGS -Wall"
  fi
  
  # Allow user to specify flags
  # Check whether --with-cflags or --without-cflags was given.
  if test "${with_cflags+set}" = set; then
    withval="$with_cflags"
    
  		if test "x$withval" != "xno" ; then
  			CFLAGS="$CFLAGS $withval"
  		fi
  		
  
  fi
  
  # Check whether --with-cppflags or --without-cppflags was given.
  if test "${with_cppflags+set}" = set; then
    withval="$with_cppflags"
    
  		if test "x$withval" != "xno"; then
  			CPPFLAGS="$CPPFLAGS $withval"
  		fi
  	
  
  fi
  
  # Check whether --with-ldflags or --without-ldflags was given.
  if test "${with_ldflags+set}" = set; then
    withval="$with_ldflags"
    
  		if test "x$withval" != "xno" ; then
  			LDFLAGS="$LDFLAGS $withval"
  		fi
  		
  
  fi
  
  # Check whether --with-libs or --without-libs was given.
  if test "${with_libs+set}" = set; then
    withval="$with_libs"
    
  		if test "x$withval" != "xno" ; then
  			LIBS="$LIBS $withval"
  		fi
  		
  
  fi
  
  
  # Checks for libraries.
   OLDLDFLAGS=$LDFLAGS
   LDFLAGS=
  echo $ac_n "checking if we need -pthread for threads""... $ac_c" 1>&6
  echo "configure:1346: checking if we need -pthread for threads" >&5
  if eval "test \"`echo '$''{'ac_ldflag_pthread'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    ac_save_LDFLAGS="$LDFLAGS"
  LDFLAGS="-pthread $LDFLAGS"
  cat > conftest.$ac_ext <<EOF
  #line 1353 "configure"
  #include "confdefs.h"
  
  char pthread_create();
  
  int main() {
  pthread_create();
  ; return 0; }
  EOF
  if { (eval echo configure:1362: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_ldflag_pthread=yes"
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
    eval "ac_ldflag_pthread=no"
  fi
  rm -f conftest*,
  LIBS="$ac_save_LDFLAGS"
  
  fi
  
  if eval "test \"`echo $ac_ldflag_pthread`\" = yes"; then
  	echo "$ac_t""yes" 1>&6
  else
  	echo "$ac_t""no" 1>&6
  fi
  
   THLDFLAGS=$LDFLAGS
  
   LDFLAGS=$OLDLDFLAGS
  
   OLDLIBS=$LIBS
   LIBS=
  echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6
  echo "configure:1389: checking for pthread_create in -lpthread" >&5
  ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'`
  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    ac_save_LIBS="$LIBS"
  LIBS="-lpthread  $LIBS"
  cat > conftest.$ac_ext <<EOF
  #line 1397 "configure"
  #include "confdefs.h"
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
      builtin and then its argument prototype would still apply.  */
  char pthread_create();
  
  int main() {
  pthread_create()
  ; return 0; }
  EOF
  if { (eval echo configure:1408: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_lib_$ac_lib_var=yes"
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
    eval "ac_cv_lib_$ac_lib_var=no"
  fi
  rm -f conftest*
  LIBS="$ac_save_LIBS"
  
  fi
  if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
    echo "$ac_t""yes" 1>&6
      ac_tr_lib=HAVE_LIB`echo pthread | sed -e 's/[^a-zA-Z0-9_]/_/g' \
      -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
    cat >> confdefs.h <<EOF
  #define $ac_tr_lib 1
  EOF
  
    LIBS="-lpthread $LIBS"
  
  else
    echo "$ac_t""no" 1>&6
  fi
  
  echo $ac_n "checking for thr_create in -lthread""... $ac_c" 1>&6
  echo "configure:1436: checking for thr_create in -lthread" >&5
  ac_lib_var=`echo thread'_'thr_create | sed 'y%./+-%__p_%'`
  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    ac_save_LIBS="$LIBS"
  LIBS="-lthread  $LIBS"
  cat > conftest.$ac_ext <<EOF
  #line 1444 "configure"
  #include "confdefs.h"
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
      builtin and then its argument prototype would still apply.  */
  char thr_create();
  
  int main() {
  thr_create()
  ; return 0; }
  EOF
  if { (eval echo configure:1455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_lib_$ac_lib_var=yes"
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
    eval "ac_cv_lib_$ac_lib_var=no"
  fi
  rm -f conftest*
  LIBS="$ac_save_LIBS"
  
  fi
  if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
    echo "$ac_t""yes" 1>&6
      ac_tr_lib=HAVE_LIB`echo thread | sed -e 's/[^a-zA-Z0-9_]/_/g' \
      -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
    cat >> confdefs.h <<EOF
  #define $ac_tr_lib 1
  EOF
  
    LIBS="-lthread $LIBS"
  
  else
    echo "$ac_t""no" 1>&6
  fi
  
  echo $ac_n "checking for sem_wait in -lposix4""... $ac_c" 1>&6
  echo "configure:1483: checking for sem_wait in -lposix4" >&5
  ac_lib_var=`echo posix4'_'sem_wait | sed 'y%./+-%__p_%'`
  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    ac_save_LIBS="$LIBS"
  LIBS="-lposix4  $LIBS"
  cat > conftest.$ac_ext <<EOF
  #line 1491 "configure"
  #include "confdefs.h"
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
      builtin and then its argument prototype would still apply.  */
  char sem_wait();
  
  int main() {
  sem_wait()
  ; return 0; }
  EOF
  if { (eval echo configure:1502: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_lib_$ac_lib_var=yes"
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
    eval "ac_cv_lib_$ac_lib_var=no"
  fi
  rm -f conftest*
  LIBS="$ac_save_LIBS"
  
  fi
  if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
    echo "$ac_t""yes" 1>&6
      ac_tr_lib=HAVE_LIB`echo posix4 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
      -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
    cat >> confdefs.h <<EOF
  #define $ac_tr_lib 1
  EOF
  
    LIBS="-lposix4 $LIBS"
  
  else
    echo "$ac_t""no" 1>&6
  fi
  
   THLIBS=$LIBS
  
   LIBS=$OLDLIBS
  
  echo $ac_n "checking for gethostbyaddr in -lnsl""... $ac_c" 1>&6
  echo "configure:1534: checking for gethostbyaddr in -lnsl" >&5
  ac_lib_var=`echo nsl'_'gethostbyaddr | sed 'y%./+-%__p_%'`
  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    ac_save_LIBS="$LIBS"
  LIBS="-lnsl  $LIBS"
  cat > conftest.$ac_ext <<EOF
  #line 1542 "configure"
  #include "confdefs.h"
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
      builtin and then its argument prototype would still apply.  */
  char gethostbyaddr();
  
  int main() {
  gethostbyaddr()
  ; return 0; }
  EOF
  if { (eval echo configure:1553: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_lib_$ac_lib_var=yes"
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
    eval "ac_cv_lib_$ac_lib_var=no"
  fi
  rm -f conftest*
  LIBS="$ac_save_LIBS"
  
  fi
  if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
    echo "$ac_t""yes" 1>&6
      ac_tr_lib=HAVE_LIB`echo nsl | sed -e 's/[^a-zA-Z0-9_]/_/g' \
      -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
    cat >> confdefs.h <<EOF
  #define $ac_tr_lib 1
  EOF
  
    LIBS="-lnsl $LIBS"
  
  else
    echo "$ac_t""no" 1>&6
  fi
  
  echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
  echo "configure:1581: checking for socket in -lsocket" >&5
  ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    ac_save_LIBS="$LIBS"
  LIBS="-lsocket  $LIBS"
  cat > conftest.$ac_ext <<EOF
  #line 1589 "configure"
  #include "confdefs.h"
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
      builtin and then its argument prototype would still apply.  */
  char socket();
  
  int main() {
  socket()
  ; return 0; }
  EOF
  if { (eval echo configure:1600: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_lib_$ac_lib_var=yes"
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
    eval "ac_cv_lib_$ac_lib_var=no"
  fi
  rm -f conftest*
  LIBS="$ac_save_LIBS"
  
  fi
  if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
    echo "$ac_t""yes" 1>&6
      ac_tr_lib=HAVE_LIB`echo socket | sed -e 's/[^a-zA-Z0-9_]/_/g' \
      -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
    cat >> confdefs.h <<EOF
  #define $ac_tr_lib 1
  EOF
  
    LIBS="-lsocket $LIBS"
  
  else
    echo "$ac_t""no" 1>&6
  fi
  
  
  echo $ac_n "checking for strftime""... $ac_c" 1>&6
  echo "configure:1629: checking for strftime" >&5
  if eval "test \"`echo '$''{'ac_cv_func_strftime'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
  #line 1634 "configure"
  #include "confdefs.h"
  /* System header to define __stub macros and hopefully few prototypes,
      which can conflict with char strftime(); below.  */
  #include <assert.h>
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
      builtin and then its argument prototype would still apply.  */
  char strftime();
  
  int main() {
  
  /* The GNU C library defines this for functions which it implements
      to always fail with ENOSYS.  Some functions are actually named
      something starting with __ and the normal name is an alias.  */
  #if defined (__stub_strftime) || defined (__stub___strftime)
  choke me
  #else
  strftime();
  #endif
  
  ; return 0; }
  EOF
  if { (eval echo configure:1657: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_func_strftime=yes"
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
    eval "ac_cv_func_strftime=no"
  fi
  rm -f conftest*
  fi
  
  if eval "test \"`echo '$ac_cv_func_'strftime`\" = yes"; then
    echo "$ac_t""yes" 1>&6
    cat >> confdefs.h <<\EOF
  #define HAVE_STRFTIME 1
  EOF
  
  else
    echo "$ac_t""no" 1>&6
  # strftime is in -lintl on SCO UNIX.
  echo $ac_n "checking for strftime in -lintl""... $ac_c" 1>&6
  echo "configure:1679: checking for strftime in -lintl" >&5
  ac_lib_var=`echo intl'_'strftime | sed 'y%./+-%__p_%'`
  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    ac_save_LIBS="$LIBS"
  LIBS="-lintl  $LIBS"
  cat > conftest.$ac_ext <<EOF
  #line 1687 "configure"
  #include "confdefs.h"
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
      builtin and then its argument prototype would still apply.  */
  char strftime();
  
  int main() {
  strftime()
  ; return 0; }
  EOF
  if { (eval echo configure:1698: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_lib_$ac_lib_var=yes"
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
    eval "ac_cv_lib_$ac_lib_var=no"
  fi
  rm -f conftest*
  LIBS="$ac_save_LIBS"
  
  fi
  if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
    echo "$ac_t""yes" 1>&6
    cat >> confdefs.h <<\EOF
  #define HAVE_STRFTIME 1
  EOF
  
  LIBS="-lintl $LIBS"
  else
    echo "$ac_t""no" 1>&6
  fi
  
  fi
  
  
  # Checks for header files.
  for ac_hdr in arpa/inet.h assert.h errno.h grp.h limits.h netdb.h netinet/in.h netinet/tcp.h process.h pthread.h pwd.h signal.h stdarg.h stdint.h stdio.h stdlib.h string.h sys/inttypes.h sys/ioctl.h sys/param.h sys/socket.h sys/stat.h sys/time.h sys/timeb.h sys/types.h sys/uio.h sys/un.h sys/filio.h time.h unistd.h windows.h winsock.h
  do
  ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
  echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
  echo "configure:1730: checking for $ac_hdr" >&5
  if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
  #line 1735 "configure"
  #include "confdefs.h"
  #include <$ac_hdr>
  EOF
  ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
  { (eval echo configure:1740: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
  ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
  if test -z "$ac_err"; then
    rm -rf conftest*
    eval "ac_cv_header_$ac_safe=yes"
  else
    echo "$ac_err" >&5
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
    eval "ac_cv_header_$ac_safe=no"
  fi
  rm -f conftest*
  fi
  if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
    echo "$ac_t""yes" 1>&6
      ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
    cat >> confdefs.h <<EOF
  #define $ac_tr_hdr 1
  EOF
   
  else
    echo "$ac_t""no" 1>&6
  fi
  done
  
  
  for ac_func in bcopy inet_aton inet_ntoa inet_ntop memmove setsid snprintf strerror lrand48
  do
  echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
  echo "configure:1770: checking for $ac_func" >&5
  if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
  #line 1775 "configure"
  #include "confdefs.h"
  /* System header to define __stub macros and hopefully few prototypes,
      which can conflict with char $ac_func(); below.  */
  #include <assert.h>
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
      builtin and then its argument prototype would still apply.  */
  char $ac_func();
  
  int main() {
  
  /* The GNU C library defines this for functions which it implements
      to always fail with ENOSYS.  Some functions are actually named
      something starting with __ and the normal name is an alias.  */
  #if defined (__stub_$ac_func) || defined (__stub___$ac_func)
  choke me
  #else
  $ac_func();
  #endif
  
  ; return 0; }
  EOF
  if { (eval echo configure:1798: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_func_$ac_func=yes"
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
    eval "ac_cv_func_$ac_func=no"
  fi
  rm -f conftest*
  fi
  
  if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
    echo "$ac_t""yes" 1>&6
      ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
    cat >> confdefs.h <<EOF
  #define $ac_tr_func 1
  EOF
   
  else
    echo "$ac_t""no" 1>&6
  fi
  done
  
  for ac_func in gettimeofday time
  do
  echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
  echo "configure:1825: checking for $ac_func" >&5
  if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
  #line 1830 "configure"
  #include "confdefs.h"
  /* System header to define __stub macros and hopefully few prototypes,
      which can conflict with char $ac_func(); below.  */
  #include <assert.h>
  /* Override any gcc2 internal prototype to avoid an error.  */
  /* We use char because int might match the return type of a gcc2
      builtin and then its argument prototype would still apply.  */
  char $ac_func();
  
  int main() {
  
  /* The GNU C library defines this for functions which it implements
      to always fail with ENOSYS.  Some functions are actually named
      something starting with __ and the normal name is an alias.  */
  #if defined (__stub_$ac_func) || defined (__stub___$ac_func)
  choke me
  #else
  $ac_func();
  #endif
  
  ; return 0; }
  EOF
  if { (eval echo configure:1853: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
    eval "ac_cv_func_$ac_func=yes"
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
    eval "ac_cv_func_$ac_func=no"
  fi
  rm -f conftest*
  fi
  
  if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
    echo "$ac_t""yes" 1>&6
      ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
    cat >> confdefs.h <<EOF
  #define $ac_tr_func 1
  EOF
   
  else
    echo "$ac_t""no" 1>&6
  fi
  done
  
  
  # Check for broken snprintf
  if test "x$ac_cv_func_snprintf" = "xyes" ; then
  	echo $ac_n "checking whether snprintf correctly terminates long strings""... $ac_c" 1>&6
  echo "configure:1881: checking whether snprintf correctly terminates long strings" >&5
  	if test "$cross_compiling" = yes; then
      { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
  else
    cat > conftest.$ac_ext <<EOF
  #line 1886 "configure"
  #include "confdefs.h"
  
  #include <stdio.h>
  int main(void){char b[5];snprintf(b,5,"123456789");return(b[4]!='\0');}
  		
  EOF
  if { (eval echo configure:1893: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
  then
    echo "$ac_t""yes" 1>&6
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -fr conftest*
    
  			echo "$ac_t""no" 1>&6
  			cat >> confdefs.h <<\EOF
  #define BROKEN_SNPRINTF 1
  EOF
  
  			echo "configure: warning: ****** Your snprintf() function is broken, complain to your vendor" 1>&2
  		
  	
  fi
  rm -fr conftest*
  fi
  
  fi
  
  # Cheap hack to ensure NEWS-OS libraries are arranged right.
  if test ! -z "$SONY" ; then
    LIBS="$LIBS -liberty";
  fi
  
  # Checks for data types
  echo $ac_n "checking size of char""... $ac_c" 1>&6
  echo "configure:1922: checking size of char" >&5
  if eval "test \"`echo '$''{'ac_cv_sizeof_char'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    if test "$cross_compiling" = yes; then
    ac_cv_sizeof_char=1
  else
    cat > conftest.$ac_ext <<EOF
  #line 1930 "configure"
  #include "confdefs.h"
  #include <stdio.h>
  main()
  {
    FILE *f=fopen("conftestval", "w");
    if (!f) exit(1);
    fprintf(f, "%d\n", sizeof(char));
    exit(0);
  }
  EOF
  if { (eval echo configure:1941: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
  then
    ac_cv_sizeof_char=`cat conftestval`
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -fr conftest*
    ac_cv_sizeof_char=0
  fi
  rm -fr conftest*
  fi
  
  fi
  echo "$ac_t""$ac_cv_sizeof_char" 1>&6
  cat >> confdefs.h <<EOF
  #define SIZEOF_CHAR $ac_cv_sizeof_char
  EOF
  
  
  echo $ac_n "checking size of short int""... $ac_c" 1>&6
  echo "configure:1961: checking size of short int" >&5
  if eval "test \"`echo '$''{'ac_cv_sizeof_short_int'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    if test "$cross_compiling" = yes; then
    ac_cv_sizeof_short_int=2
  else
    cat > conftest.$ac_ext <<EOF
  #line 1969 "configure"
  #include "confdefs.h"
  #include <stdio.h>
  main()
  {
    FILE *f=fopen("conftestval", "w");
    if (!f) exit(1);
    fprintf(f, "%d\n", sizeof(short int));
    exit(0);
  }
  EOF
  if { (eval echo configure:1980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
  then
    ac_cv_sizeof_short_int=`cat conftestval`
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -fr conftest*
    ac_cv_sizeof_short_int=0
  fi
  rm -fr conftest*
  fi
  
  fi
  echo "$ac_t""$ac_cv_sizeof_short_int" 1>&6
  cat >> confdefs.h <<EOF
  #define SIZEOF_SHORT_INT $ac_cv_sizeof_short_int
  EOF
  
  
  echo $ac_n "checking size of int""... $ac_c" 1>&6
  echo "configure:2000: checking size of int" >&5
  if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    if test "$cross_compiling" = yes; then
    ac_cv_sizeof_int=4
  else
    cat > conftest.$ac_ext <<EOF
  #line 2008 "configure"
  #include "confdefs.h"
  #include <stdio.h>
  main()
  {
    FILE *f=fopen("conftestval", "w");
    if (!f) exit(1);
    fprintf(f, "%d\n", sizeof(int));
    exit(0);
  }
  EOF
  if { (eval echo configure:2019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
  then
    ac_cv_sizeof_int=`cat conftestval`
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -fr conftest*
    ac_cv_sizeof_int=0
  fi
  rm -fr conftest*
  fi
  
  fi
  echo "$ac_t""$ac_cv_sizeof_int" 1>&6
  cat >> confdefs.h <<EOF
  #define SIZEOF_INT $ac_cv_sizeof_int
  EOF
  
  
  echo $ac_n "checking size of long int""... $ac_c" 1>&6
  echo "configure:2039: checking size of long int" >&5
  if eval "test \"`echo '$''{'ac_cv_sizeof_long_int'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    if test "$cross_compiling" = yes; then
    ac_cv_sizeof_long_int=4
  else
    cat > conftest.$ac_ext <<EOF
  #line 2047 "configure"
  #include "confdefs.h"
  #include <stdio.h>
  main()
  {
    FILE *f=fopen("conftestval", "w");
    if (!f) exit(1);
    fprintf(f, "%d\n", sizeof(long int));
    exit(0);
  }
  EOF
  if { (eval echo configure:2058: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
  then
    ac_cv_sizeof_long_int=`cat conftestval`
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -fr conftest*
    ac_cv_sizeof_long_int=0
  fi
  rm -fr conftest*
  fi
  
  fi
  echo "$ac_t""$ac_cv_sizeof_long_int" 1>&6
  cat >> confdefs.h <<EOF
  #define SIZEOF_LONG_INT $ac_cv_sizeof_long_int
  EOF
  
  
  echo $ac_n "checking size of long long int""... $ac_c" 1>&6
  echo "configure:2078: checking size of long long int" >&5
  if eval "test \"`echo '$''{'ac_cv_sizeof_long_long_int'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    if test "$cross_compiling" = yes; then
    ac_cv_sizeof_long_long_int=8
  else
    cat > conftest.$ac_ext <<EOF
  #line 2086 "configure"
  #include "confdefs.h"
  #include <stdio.h>
  main()
  {
    FILE *f=fopen("conftestval", "w");
    if (!f) exit(1);
    fprintf(f, "%d\n", sizeof(long long int));
    exit(0);
  }
  EOF
  if { (eval echo configure:2097: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
  then
    ac_cv_sizeof_long_long_int=`cat conftestval`
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -fr conftest*
    ac_cv_sizeof_long_long_int=0
  fi
  rm -fr conftest*
  fi
  
  fi
  echo "$ac_t""$ac_cv_sizeof_long_long_int" 1>&6
  cat >> confdefs.h <<EOF
  #define SIZEOF_LONG_LONG_INT $ac_cv_sizeof_long_long_int
  EOF
  
  
  
  # More checks for data types
  echo $ac_n "checking for windows arch""... $ac_c" 1>&6
  echo "configure:2119: checking for windows arch" >&5
  if eval "test \"`echo '$''{'ac_cv_arch_win'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 2125 "configure"
  #include "confdefs.h"
   #include <process.h> 
  int main() {
   CRITICAL_SECTION mutex; InitializeCriticalSection(mutex); 
  ; return 0; }
  EOF
  if { (eval echo configure:2132: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_arch_win="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_arch_win="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_arch_win" 1>&6
  if test "x$ac_cv_arch_win" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define ARCH_PC_WIN95 1
  EOF
  
  fi
  
  echo $ac_n "checking for struct timezone type""... $ac_c" 1>&6
  echo "configure:2155: checking for struct timezone type" >&5
  if eval "test \"`echo '$''{'ac_cv_have_struct_timezone'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 2161 "configure"
  #include "confdefs.h"
   #include <time.h>
  		  #include <sys/types.h> 
  int main() {
   struct timezone opt; 
  ; return 0; }
  EOF
  if { (eval echo configure:2169: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_struct_timezone="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_struct_timezone="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_struct_timezone" 1>&6
  if test "x$ac_cv_have_struct_timezone" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_STRUCT_TIMEZONE 1
  EOF
  
  fi
  
  echo $ac_n "checking for struct sockopt_len_t type""... $ac_c" 1>&6
  echo "configure:2192: checking for struct sockopt_len_t type" >&5
  if eval "test \"`echo '$''{'ac_cv_have_sockopt_len_t'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 2198 "configure"
  #include "confdefs.h"
   #include <sys/types.h>
  		  #include <sys/socket.h> 
  int main() {
   static sockopt_len_t opt; opt=0; 
  ; return 0; }
  EOF
  if { (eval echo configure:2206: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_sockopt_len_t="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_sockopt_len_t="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_sockopt_len_t" 1>&6
  if test "x$ac_cv_have_sockopt_len_t" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_SOCKOPT_LEN_T 1
  EOF
  
  fi
  
  echo $ac_n "checking for struct msghdr type""... $ac_c" 1>&6
  echo "configure:2229: checking for struct msghdr type" >&5
  if eval "test \"`echo '$''{'ac_cv_have_struct_msghdr'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 2235 "configure"
  #include "confdefs.h"
   #include <sys/types.h>
  		  #include <sys/socket.h> 
  int main() {
   static  struct  msghdr msg; msg.msg_namelen = 1; 
  ; return 0; }
  EOF
  if { (eval echo configure:2243: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_struct_msghdr="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_struct_msghdr="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_struct_msghdr" 1>&6
  if test "x$ac_cv_have_struct_msghdr" = "xno" ; then
  	cat >> confdefs.h <<\EOF
  #define ARCH_SCATTER_NONE 1
  EOF
  
  else
    have_scatter="no"
    echo $ac_n "checking for struct msghdr control""... $ac_c" 1>&6
  echo "configure:2266: checking for struct msghdr control" >&5
  if eval "test \"`echo '$''{'ac_cv_have_struct_msghdr_ctl'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
          cat > conftest.$ac_ext <<EOF
  #line 2272 "configure"
  #include "confdefs.h"
   #include <sys/types.h>
  		  #include <sys/socket.h> 
  int main() {
   static  struct  msghdr msg; msg.msg_controllen = 0; 
  ; return 0; }
  EOF
  if { (eval echo configure:2280: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_struct_msghdr_ctl="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_struct_msghdr_ctl="no" 
          
  fi
  rm -f conftest*
    
  fi
  
  echo "$ac_t""$ac_cv_have_struct_msghdr_ctl" 1>&6
    if test "x$ac_cv_have_struct_msghdr_ctl" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define ARCH_SCATTER_CONTROL 1
  EOF
  
  	have_scatter="yes"
    fi
    echo $ac_n "checking for struct msghdr accrights""... $ac_c" 1>&6
  echo "configure:2303: checking for struct msghdr accrights" >&5
  if eval "test \"`echo '$''{'ac_cv_have_struct_msghdr_acc'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
          cat > conftest.$ac_ext <<EOF
  #line 2309 "configure"
  #include "confdefs.h"
   #include <sys/types.h>
  		  #include <sys/socket.h> 
  int main() {
   static  struct  msghdr msg; msg.msg_accrightslen = 0; 
  ; return 0; }
  EOF
  if { (eval echo configure:2317: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_struct_msghdr_acc="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_struct_msghdr_acc="no" 
          
  fi
  rm -f conftest*
    
  fi
  
  echo "$ac_t""$ac_cv_have_struct_msghdr_acc" 1>&6
    if test "x$ac_cv_have_struct_msghdr_acc" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define ARCH_SCATTER_ACCRIGHTS 1
  EOF
  
  	have_scatter="yes"
    fi
    if test "x$have_scatter" = "xno" ; then
          { echo "configure: error: *** cannot determine which scatter type to use ***" 1>&2; exit 1; }
    fi
  fi
  
  echo $ac_n "checking for u_int type""... $ac_c" 1>&6
  echo "configure:2345: checking for u_int type" >&5
  if eval "test \"`echo '$''{'ac_cv_have_u_int'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 2351 "configure"
  #include "confdefs.h"
   #include <sys/types.h> 
  int main() {
   u_int a; a = 1;
  ; return 0; }
  EOF
  if { (eval echo configure:2358: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_u_int="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_u_int="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_u_int" 1>&6
  if test "x$ac_cv_have_u_int" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_U_INT 1
  EOF
  
  	have_u_int=1
  fi
  
  echo $ac_n "checking for intXX_t types""... $ac_c" 1>&6
  echo "configure:2382: checking for intXX_t types" >&5
  if eval "test \"`echo '$''{'ac_cv_have_intxx_t'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 2388 "configure"
  #include "confdefs.h"
   #include <sys/types.h> 
  int main() {
   int8_t a; int16_t b; int32_t c; a = b = c = 1;
  ; return 0; }
  EOF
  if { (eval echo configure:2395: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_intxx_t="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_intxx_t="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_intxx_t" 1>&6
  if test "x$ac_cv_have_intxx_t" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_INTXX_T 1
  EOF
  
  	have_intxx_t=1
  fi
  	
  echo $ac_n "checking for int64_t type""... $ac_c" 1>&6
  echo "configure:2419: checking for int64_t type" >&5
  if eval "test \"`echo '$''{'ac_cv_have_int64_t'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 2425 "configure"
  #include "confdefs.h"
   #include <sys/types.h> 
  int main() {
   int64_t a; a = 1;
  ; return 0; }
  EOF
  if { (eval echo configure:2432: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_int64_t="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_int64_t="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_int64_t" 1>&6
  if test "x$ac_cv_have_int64_t" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_INT64_T 1
  EOF
  
  	have_int64_t=1
  fi
  	
  echo $ac_n "checking for u_intXX_t types""... $ac_c" 1>&6
  echo "configure:2456: checking for u_intXX_t types" >&5
  if eval "test \"`echo '$''{'ac_cv_have_u_intxx_t'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 2462 "configure"
  #include "confdefs.h"
   #include <sys/types.h> 
  int main() {
   u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;
  ; return 0; }
  EOF
  if { (eval echo configure:2469: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_u_intxx_t="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_u_intxx_t="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_u_intxx_t" 1>&6
  if test "x$ac_cv_have_u_intxx_t" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_U_INTXX_T 1
  EOF
  
  	have_u_intxx_t=1
  fi
  
  echo $ac_n "checking for u_int64_t types""... $ac_c" 1>&6
  echo "configure:2493: checking for u_int64_t types" >&5
  if eval "test \"`echo '$''{'ac_cv_have_u_int64_t'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 2499 "configure"
  #include "confdefs.h"
   #include <sys/types.h> 
  int main() {
   u_int64_t a; a = 1;
  ; return 0; }
  EOF
  if { (eval echo configure:2506: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_u_int64_t="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_u_int64_t="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_u_int64_t" 1>&6
  if test "x$ac_cv_have_u_int64_t" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_U_INT64_T 1
  EOF
  
  	have_u_int64_t=1
  fi
  
  if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \
             test "x$ac_cv_header_sys_bitypes_h" = "xyes")
  then
  	echo $ac_n "checking for intXX_t and u_intXX_t types in sys/bitypes.h""... $ac_c" 1>&6
  echo "configure:2533: checking for intXX_t and u_intXX_t types in sys/bitypes.h" >&5
  	cat > conftest.$ac_ext <<EOF
  #line 2535 "configure"
  #include "confdefs.h"
  
  #include <sys/bitypes.h>
  		
  int main() {
  
  			int8_t a; int16_t b; int32_t c;
  			u_int8_t e; u_int16_t f; u_int32_t g;
  			a = b = c = e = f = g = 1;
  		
  ; return 0; }
  EOF
  if { (eval echo configure:2548: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
    
  			cat >> confdefs.h <<\EOF
  #define HAVE_U_INTXX_T 1
  EOF
  
  			cat >> confdefs.h <<\EOF
  #define HAVE_INTXX_T 1
  EOF
  
  			echo "$ac_t""yes" 1>&6
  		
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
    echo "$ac_t""no" 1>&6
  	
  fi
  rm -f conftest* 
  fi
  
  if test -z "$have_u_intxx_t" ; then
  	echo $ac_n "checking for uintXX_t types""... $ac_c" 1>&6
  echo "configure:2573: checking for uintXX_t types" >&5
  if eval "test \"`echo '$''{'ac_cv_have_uintxx_t'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  		cat > conftest.$ac_ext <<EOF
  #line 2579 "configure"
  #include "confdefs.h"
  
  #include <sys/types.h>
  			
  int main() {
   uint8_t a; uint16_t b; uint32_t c; a = b = c = 1; 
  ; return 0; }
  EOF
  if { (eval echo configure:2588: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_uintxx_t="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_uintxx_t="no" 
  		
  fi
  rm -f conftest*
  	
  fi
  
  echo "$ac_t""$ac_cv_have_uintxx_t" 1>&6
  	if test "x$ac_cv_have_uintxx_t" = "xyes" ; then
  		cat >> confdefs.h <<\EOF
  #define HAVE_UINTXX_T 1
  EOF
  
  	fi
  fi
  
  echo $ac_n "checking for socklen_t""... $ac_c" 1>&6
  echo "configure:2612: checking for socklen_t" >&5
  if eval "test \"`echo '$''{'ac_cv_have_socklen_t'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 2618 "configure"
  #include "confdefs.h"
  
  #include <sys/types.h>
  #include <sys/socket.h>
  		
  int main() {
  socklen_t foo; foo = 1235;
  ; return 0; }
  EOF
  if { (eval echo configure:2628: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_socklen_t="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_socklen_t="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_socklen_t" 1>&6
  if test "x$ac_cv_have_socklen_t" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_SOCKLEN_T 1
  EOF
  
  fi
  
  echo $ac_n "checking for size_t""... $ac_c" 1>&6
  echo "configure:2651: checking for size_t" >&5
  if eval "test \"`echo '$''{'ac_cv_have_size_t'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 2657 "configure"
  #include "confdefs.h"
  
  #include <sys/types.h>
  		
  int main() {
   size_t foo; foo = 1235; 
  ; return 0; }
  EOF
  if { (eval echo configure:2666: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_size_t="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_size_t="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_size_t" 1>&6
  if test "x$ac_cv_have_size_t" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_SIZE_T 1
  EOF
  
  fi
  
  echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
  echo "configure:2689: checking for ssize_t" >&5
  if eval "test \"`echo '$''{'ac_cv_have_ssize_t'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 2695 "configure"
  #include "confdefs.h"
  
  #include <sys/types.h>
  		
  int main() {
   ssize_t foo; foo = 1235; 
  ; return 0; }
  EOF
  if { (eval echo configure:2704: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_ssize_t="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_ssize_t="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_ssize_t" 1>&6
  if test "x$ac_cv_have_ssize_t" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_SSIZE_T 1
  EOF
  
  fi
  
  echo $ac_n "checking for clock_t""... $ac_c" 1>&6
  echo "configure:2727: checking for clock_t" >&5
  if eval "test \"`echo '$''{'ac_cv_have_clock_t'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 2733 "configure"
  #include "confdefs.h"
  
  #include <time.h>
  		
  int main() {
   clock_t foo; foo = 1235; 
  ; return 0; }
  EOF
  if { (eval echo configure:2742: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_clock_t="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_clock_t="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_clock_t" 1>&6
  if test "x$ac_cv_have_clock_t" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_CLOCK_T 1
  EOF
  
  fi
  
  echo $ac_n "checking for sa_family_t""... $ac_c" 1>&6
  echo "configure:2765: checking for sa_family_t" >&5
  if eval "test \"`echo '$''{'ac_cv_have_sa_family_t'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 2771 "configure"
  #include "confdefs.h"
  
  #include <sys/types.h>
  #include <sys/socket.h>
  		
  int main() {
   sa_family_t foo; foo = 1235; 
  ; return 0; }
  EOF
  if { (eval echo configure:2781: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_sa_family_t="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     cat > conftest.$ac_ext <<EOF
  #line 2789 "configure"
  #include "confdefs.h"
  
  #include <sys/types.h>
  #include <sys/socket.h>
  #include <netinet/in.h>
  		
  int main() {
   sa_family_t foo; foo = 1235; 
  ; return 0; }
  EOF
  if { (eval echo configure:2800: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_sa_family_t="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_sa_family_t="no" 
  	
  fi
  rm -f conftest*
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_sa_family_t" 1>&6
  if test "x$ac_cv_have_sa_family_t" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_SA_FAMILY_T 1
  EOF
  
  fi
  
  
  echo $ac_n "checking for struct sockaddr_storage""... $ac_c" 1>&6
  echo "configure:2827: checking for struct sockaddr_storage" >&5
  if eval "test \"`echo '$''{'ac_cv_have_struct_sockaddr_storage'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 2833 "configure"
  #include "confdefs.h"
  
  #include <sys/types.h>
  #include <sys/socket.h>
  		
  int main() {
   struct sockaddr_storage s; 
  ; return 0; }
  EOF
  if { (eval echo configure:2843: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_struct_sockaddr_storage="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_struct_sockaddr_storage="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_struct_sockaddr_storage" 1>&6
  if test "x$ac_cv_have_struct_sockaddr_storage" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_STRUCT_SOCKADDR_STORAGE 1
  EOF
  
  fi
  
  echo $ac_n "checking for struct sockaddr_in6""... $ac_c" 1>&6
  echo "configure:2866: checking for struct sockaddr_in6" >&5
  if eval "test \"`echo '$''{'ac_cv_have_struct_sockaddr_in6'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 2872 "configure"
  #include "confdefs.h"
  
  #include <sys/types.h>
  #include <netinet/in.h>
  		
  int main() {
   struct sockaddr_in6 s; s.sin6_family = 0; 
  ; return 0; }
  EOF
  if { (eval echo configure:2882: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_struct_sockaddr_in6="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_struct_sockaddr_in6="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_struct_sockaddr_in6" 1>&6
  if test "x$ac_cv_have_struct_sockaddr_in6" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_STRUCT_SOCKADDR_IN6 1
  EOF
  
  fi
  
  echo $ac_n "checking for struct in6_addr""... $ac_c" 1>&6
  echo "configure:2905: checking for struct in6_addr" >&5
  if eval "test \"`echo '$''{'ac_cv_have_struct_in6_addr'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 2911 "configure"
  #include "confdefs.h"
  
  #include <sys/types.h>
  #include <netinet/in.h>
  		
  int main() {
   struct in6_addr s; s.s6_addr[0] = 0; 
  ; return 0; }
  EOF
  if { (eval echo configure:2921: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_struct_in6_addr="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_struct_in6_addr="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_struct_in6_addr" 1>&6
  if test "x$ac_cv_have_struct_in6_addr" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_STRUCT_IN6_ADDR 1
  EOF
  
  fi
  
  echo $ac_n "checking for struct addrinfo""... $ac_c" 1>&6
  echo "configure:2944: checking for struct addrinfo" >&5
  if eval "test \"`echo '$''{'ac_cv_have_struct_addrinfo'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 2950 "configure"
  #include "confdefs.h"
  
  #include <sys/types.h>
  #include <sys/socket.h>
  #include <netdb.h>
  		
  int main() {
   struct addrinfo s; s.ai_flags = AI_PASSIVE; 
  ; return 0; }
  EOF
  if { (eval echo configure:2961: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_struct_addrinfo="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_struct_addrinfo="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_struct_addrinfo" 1>&6
  if test "x$ac_cv_have_struct_addrinfo" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_STRUCT_ADDRINFO 1
  EOF
  
  fi
  
  echo $ac_n "checking for struct timeval""... $ac_c" 1>&6
  echo "configure:2984: checking for struct timeval" >&5
  if eval "test \"`echo '$''{'ac_cv_have_struct_timeval'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 2990 "configure"
  #include "confdefs.h"
   #include <sys/time.h> 
  int main() {
   struct timeval tv; tv.tv_sec = 1;
  ; return 0; }
  EOF
  if { (eval echo configure:2997: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_struct_timeval="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_struct_timeval="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_struct_timeval" 1>&6
  if test "x$ac_cv_have_struct_timeval" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_STRUCT_TIMEVAL 1
  EOF
  
  	have_struct_timeval=1
  fi
  
  echo $ac_n "checking for sun_len field in struct sockaddr_un""... $ac_c" 1>&6
  echo "configure:3021: checking for sun_len field in struct sockaddr_un" >&5
  if eval "test \"`echo '$''{'ac_cv_have_sun_len_in_struct_sockaddr_un'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 3027 "configure"
  #include "confdefs.h"
  
  #include <sys/types.h>
  #include <sys/socket.h>
  		
  int main() {
   struct sockaddr_un s; s.sun_len = 1; 
  ; return 0; }
  EOF
  if { (eval echo configure:3037: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_sun_len_in_struct_sockaddr_un="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_sun_len_in_struct_sockaddr_un="no" 
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_sun_len_in_struct_sockaddr_un" 1>&6
  if test "x$ac_cv_have_sun_len_in_struct_sockaddr_un" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_SUN_LEN_IN_SOCKADDR_UN 1
  EOF
  
  fi
  
  echo $ac_n "checking for ss_family field in struct sockaddr_storage""... $ac_c" 1>&6
  echo "configure:3059: checking for ss_family field in struct sockaddr_storage" >&5
  if eval "test \"`echo '$''{'ac_cv_have_ss_family_in_struct_ss'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 3065 "configure"
  #include "confdefs.h"
  
  #include <sys/types.h>
  #include <sys/socket.h>
  		
  int main() {
   struct sockaddr_storage s; s.ss_family = 1; 
  ; return 0; }
  EOF
  if { (eval echo configure:3075: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_ss_family_in_struct_ss="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_ss_family_in_struct_ss="no" 
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_ss_family_in_struct_ss" 1>&6
  if test "x$ac_cv_have_ss_family_in_struct_ss" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_SS_FAMILY_IN_SS 1
  EOF
  
  fi
  
  echo $ac_n "checking for __ss_family field in struct sockaddr_storage""... $ac_c" 1>&6
  echo "configure:3097: checking for __ss_family field in struct sockaddr_storage" >&5
  if eval "test \"`echo '$''{'ac_cv_have___ss_family_in_struct_ss'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 3103 "configure"
  #include "confdefs.h"
  
  #include <sys/types.h>
  #include <sys/socket.h>
  		
  int main() {
   struct sockaddr_storage s; s.__ss_family = 1; 
  ; return 0; }
  EOF
  if { (eval echo configure:3113: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have___ss_family_in_struct_ss="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have___ss_family_in_struct_ss="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have___ss_family_in_struct_ss" 1>&6
  if test "x$ac_cv_have___ss_family_in_struct_ss" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE___SS_FAMILY_IN_SS 1
  EOF
  
  fi
  
  echo $ac_n "checking for pid_t""... $ac_c" 1>&6
  echo "configure:3136: checking for pid_t" >&5
  if eval "test \"`echo '$''{'ac_cv_have_pid_t'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
          cat > conftest.$ac_ext <<EOF
  #line 3142 "configure"
  #include "confdefs.h"
  
  #include <sys/types.h>
                  
  int main() {
   pid_t foo; foo = 1235; 
  ; return 0; }
  EOF
  if { (eval echo configure:3151: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
     ac_cv_have_pid_t="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_have_pid_t="no" 
          
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_have_pid_t" 1>&6
  if test "x$ac_cv_have_pid_t" = "xyes" ; then
          cat >> confdefs.h <<\EOF
  #define HAVE_PID_T 1
  EOF
  
  fi
  
  echo $ac_n "checking if libc defines __progname""... $ac_c" 1>&6
  echo "configure:3174: checking if libc defines __progname" >&5
  if eval "test \"`echo '$''{'ac_cv_libc_defines___progname'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 3180 "configure"
  #include "confdefs.h"
  
  int main() {
   extern char *__progname; printf("%s", __progname); 
  ; return 0; }
  EOF
  if { (eval echo configure:3187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
     ac_cv_libc_defines___progname="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_libc_defines___progname="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_libc_defines___progname" 1>&6
  if test "x$ac_cv_libc_defines___progname" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE___PROGNAME 1
  EOF
  
  fi
  
  
  echo $ac_n "checking if libc defines sys_errlist""... $ac_c" 1>&6
  echo "configure:3211: checking if libc defines sys_errlist" >&5
  if eval "test \"`echo '$''{'ac_cv_libc_defines_sys_errlist'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 3217 "configure"
  #include "confdefs.h"
  
  int main() {
   extern const char *const sys_errlist[]; printf("%s", sys_errlist[0]);
  ; return 0; }
  EOF
  if { (eval echo configure:3224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
     ac_cv_libc_defines_sys_errlist="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_libc_defines_sys_errlist="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_libc_defines_sys_errlist" 1>&6
  if test "x$ac_cv_libc_defines_sys_errlist" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_SYS_ERRLIST 1
  EOF
  
  fi
  
  
  echo $ac_n "checking if libc defines sys_nerr""... $ac_c" 1>&6
  echo "configure:3248: checking if libc defines sys_nerr" >&5
  if eval "test \"`echo '$''{'ac_cv_libc_defines_sys_nerr'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    
  	cat > conftest.$ac_ext <<EOF
  #line 3254 "configure"
  #include "confdefs.h"
  
  int main() {
   extern int sys_nerr; printf("%i", sys_nerr);
  ; return 0; }
  EOF
  if { (eval echo configure:3261: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
    rm -rf conftest*
     ac_cv_libc_defines_sys_nerr="yes" 
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
     ac_cv_libc_defines_sys_nerr="no" 
  	
  fi
  rm -f conftest*
  
  fi
  
  echo "$ac_t""$ac_cv_libc_defines_sys_nerr" 1>&6
  if test "x$ac_cv_libc_defines_sys_nerr" = "xyes" ; then
  	cat >> confdefs.h <<\EOF
  #define HAVE_SYS_NERR 1
  EOF
  
  fi
  
  for i in `grep "SP_....._VERSION" spread_params.h | sed -e 's/#define//g' -e 's/[ 	]//g' -e 's/VERSION/VERSION=/g;'`
  do
    eval $i
  done
  echo $ac_n "checking Check Spread's major version""... $ac_c" 1>&6
  echo "configure:3288: checking Check Spread's major version" >&5
  echo "$ac_t""$SP_MAJOR_VERSION" 1>&6
  
  echo $ac_n "checking Check Spread's minor version""... $ac_c" 1>&6
  echo "configure:3292: checking Check Spread's minor version" >&5
  echo "$ac_t""$SP_MINOR_VERSION" 1>&6
  
  echo $ac_n "checking Check Spread's patch version""... $ac_c" 1>&6
  echo "configure:3296: checking Check Spread's patch version" >&5
  echo "$ac_t""$SP_PATCH_VERSION" 1>&6
  
  
  # Options from here on. Some of these are preset by platform above
  
  # Check whether --with-catman or --without-catman was given.
  if test "${with_catman+set}" = set; then
    withval="$with_catman"
    
  		case "$withval" in
  		man|cat|doc)
  			MANTYPE=$withval
  			;;
  		*)
  			{ echo "configure: error: invalid man type: $withval" 1>&2; exit 1; }
  			;;
  		esac
  	
  
  fi
  
  if test -z "$MANTYPE"; then
  	for ac_prog in nroff awf
  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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
  echo "configure:3324: checking for $ac_word" >&5
  if eval "test \"`echo '$''{'ac_cv_path_NROFF'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    case "$NROFF" in
    /*)
    ac_cv_path_NROFF="$NROFF" # Let the user override the test with a path.
    ;;
    ?:/*)			 
    ac_cv_path_NROFF="$NROFF" # Let the user override the test with a dos path.
    ;;
    *)
    IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
    ac_dummy="/usr/bin:/usr/ucb"
    for ac_dir in $ac_dummy; do 
      test -z "$ac_dir" && ac_dir=.
      if test -f $ac_dir/$ac_word; then
        ac_cv_path_NROFF="$ac_dir/$ac_word"
        break
      fi
    done
    IFS="$ac_save_ifs"
    ;;
  esac
  fi
  NROFF="$ac_cv_path_NROFF"
  if test -n "$NROFF"; then
    echo "$ac_t""$NROFF" 1>&6
  else
    echo "$ac_t""no" 1>&6
  fi
  
  test -n "$NROFF" && break
  done
  test -n "$NROFF" || NROFF="/bin/false"
  
  	if ${NROFF} -mdoc ${srcdir}/docs/spread.1 >/dev/null 2>&1; then
  		MANTYPE=doc
  	elif ${NROFF} -man ${srcdir}/docs/spread.1 >/dev/null 2>&1; then
  		MANTYPE=man
  	else
  		MANTYPE=cat
  	fi
  fi
  
  if test "$MANTYPE" = "doc"; then
  	mansubdir=man;
  else
  	mansubdir=$MANTYPE;
  fi
  
  
  # Where to place spread.pid
  piddir=/var/run
  # Check whether --with-pid-dir or --without-pid-dir was given.
  if test "${with_pid_dir+set}" = set; then
    withval="$with_pid_dir"
    
  		if test "x$withval" != "xno" ; then	
  			piddir=$withval
  		fi
  	
  
  fi
  
  
  # make sure the directory exists
  if test ! -d $piddir ; then	
  	piddir=`eval echo ${sysconfdir}`
  	case $piddir in
   		NONE/*) piddir=`echo $piddir | sed "s~NONE~$ac_default_prefix~"` ;;
  	esac
  fi
  
  cat >> confdefs.h <<EOF
  #define _PATH_SPREAD_PIDDIR "$piddir"
  EOF
  
  
  
  # Where to find spread.conf and other config files
  etcdir=`eval echo ${sysconfdir}`
  case $etcdir in
  	NONE/*) etcdir=`echo $etcdir | sed "s~NONE~$ac_default_prefix~"` ;;
  esac
  
  cat >> confdefs.h <<EOF
  #define SPREAD_ETCDIR "$etcdir"
  EOF
  
  
  echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
  echo "configure:3416: checking for Cygwin environment" >&5
  if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
  #line 3421 "configure"
  #include "confdefs.h"
  
  int main() {
  
  #ifndef __CYGWIN__
  #define __CYGWIN__ __CYGWIN32__
  #endif
  return __CYGWIN__;
  ; return 0; }
  EOF
  if { (eval echo configure:3432: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
    ac_cv_cygwin=yes
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
    ac_cv_cygwin=no
  fi
  rm -f conftest*
  rm -f conftest*
  fi
  
  echo "$ac_t""$ac_cv_cygwin" 1>&6
  CYGWIN=
  test "$ac_cv_cygwin" = yes && CYGWIN=yes
  echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
  echo "configure:3449: checking for mingw32 environment" >&5
  if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    cat > conftest.$ac_ext <<EOF
  #line 3454 "configure"
  #include "confdefs.h"
  
  int main() {
  return __MINGW32__;
  ; return 0; }
  EOF
  if { (eval echo configure:3461: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
    rm -rf conftest*
    ac_cv_mingw32=yes
  else
    echo "configure: failed program was:" >&5
    cat conftest.$ac_ext >&5
    rm -rf conftest*
    ac_cv_mingw32=no
  fi
  rm -f conftest*
  rm -f conftest*
  fi
  
  echo "$ac_t""$ac_cv_mingw32" 1>&6
  MINGW32=
  test "$ac_cv_mingw32" = yes && MINGW32=yes
  
  
  echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
  echo "configure:3480: checking for executable suffix" >&5
  if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    if test "$CYGWIN" = yes || test "$MINGW32" = yes; then
    ac_cv_exeext=.exe
  else
    rm -f conftest*
    echo 'int main () { return 0; }' > conftest.$ac_ext
    ac_cv_exeext=
    if { (eval echo configure:3490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
      for file in conftest.*; do
        case $file in
        *.c | *.o | *.obj) ;;
        *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
        esac
      done
    else
      { echo "configure: error: installation or configuration problem: compiler cannot create executables." 1>&2; exit 1; }
    fi
    rm -f conftest*
    test x"${ac_cv_exeext}" = x && ac_cv_exeext=no
  fi
  fi
  
  EXEEXT=""
  test x"${ac_cv_exeext}" != xno && EXEEXT=${ac_cv_exeext}
  echo "$ac_t""${ac_cv_exeext}" 1>&6
  ac_exeext=$EXEEXT
  
  
  LIBSPSO=none
  LIBTSPSO=none
  case "$host" in
  *-*-darwin*)
  	SHCC=$CC
  	SHCFLAGS="$CFLAGS -fPIC"
  	SHCPPFLAGS="$CPPFLAGS"
  	SHLD="$CC -dynamiclib"
  	SHLDFLAGS="$SHLDFLAGS $LDFLAGS"
  	SHLIBS=$LIBS	
  	LIBSPSO="libspread.dylib"
  	LIBTSPSO="libtspread.dylib"
          ;;
  *-*-*)
  	SHCC=$CC
  	SHCFLAGS="$CFLAGS -fPIC"
  	SHCPPFLAGS="$CPPFLAGS"
  	SHLD="$CC -shared"
  	SHLDFLAGS="$SHLDFLAGS $LDFLAGS"
  	SHLIBS=$LIBS
  	LIBSPSO="libspread.so"
  	LIBTSPSO="libtspread.so"
  	;;
  esac
  
  
  
  
  
  
  
  
  
  
  trap '' 1 2 15
  cat > confcache <<\EOF
  # This file is a shell script that caches the results of configure
  # tests run on this system so they can be shared between configure
  # scripts and configure runs.  It is not useful on other systems.
  # If it contains results you don't want to keep, you may remove or edit it.
  #
  # By default, configure uses ./config.cache as the cache file,
  # creating it if it does not exist already.  You can give configure
  # the --cache-file=FILE option to use a different cache file; that is
  # what configure does when it calls configure scripts in
  # subdirectories, so they share the cache.
  # Giving --cache-file=/dev/null disables caching, for debugging configure.
  # config.status only pays attention to the cache file if you give it the
  # --recheck option to rerun configure.
  #
  EOF
  # The following way of writing the cache mishandles newlines in values,
  # but we know of no workaround that is simple, portable, and efficient.
  # So, don't put newlines in cache variables' values.
  # Ultrix sh set writes to stderr and can't be redirected directly,
  # and sets the high bit in the cache file unless we assign to the vars.
  (set) 2>&1 |
    case `(ac_space=' '; set | grep ac_space) 2>&1` in
    *ac_space=\ *)
      # `set' does not quote correctly, so add quotes (double-quote substitution
      # turns \\\\ into \\, and sed turns \\ into \).
      sed -n \
        -e "s/'/'\\\\''/g" \
        -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
      ;;
    *)
      # `set' quotes correctly as required by POSIX, so do not add quotes.
      sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
      ;;
    esac >> confcache
  if cmp -s $cache_file confcache; then
    :
  else
    if test -w $cache_file; then
      echo "updating cache $cache_file"
      cat confcache > $cache_file
    else
      echo "not updating unwritable cache $cache_file"
    fi
  fi
  rm -f confcache
  
  trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
  
  test "x$prefix" = xNONE && prefix=$ac_default_prefix
  # Let make expand exec_prefix.
  test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
  
  # Any assignment to VPATH causes Sun make to only execute
  # the first set of double-colon rules, so remove it if not needed.
  # If there is a colon in the path, we need to keep it.
  if test "x$srcdir" = x.; then
    ac_vpsub='/^[ 	]*VPATH[ 	]*=[^:]*$/d'
  fi
  
  trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
  
  DEFS=-DHAVE_CONFIG_H
  
  # Without the "./", some shells look in PATH for config.status.
  : ${CONFIG_STATUS=./config.status}
  
  echo creating $CONFIG_STATUS
  rm -f $CONFIG_STATUS
  cat > $CONFIG_STATUS <<EOF
  #! /bin/sh
  # Generated automatically by configure.
  # Run this file to recreate the current configuration.
  # This directory was configured as follows,
  # on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
  #
  # $0 $ac_configure_args
  #
  # Compiler output produced by configure, useful for debugging
  # configure, is in ./config.log if it exists.
  
  ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
  for ac_option
  do
    case "\$ac_option" in
    -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
      echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
      exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
    -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
      echo "$CONFIG_STATUS generated by autoconf version 2.13"
      exit 0 ;;
    -help | --help | --hel | --he | --h)
      echo "\$ac_cs_usage"; exit 0 ;;
    *) echo "\$ac_cs_usage"; exit 1 ;;
    esac
  done
  
  ac_given_srcdir=$srcdir
  ac_given_INSTALL="$INSTALL"
  
  trap 'rm -fr `echo "Makefile config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
  EOF
  cat >> $CONFIG_STATUS <<EOF
  
  # Protect against being on the right side of a sed subst in config.status.
  sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
   s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
  $ac_vpsub
  $extrasub
  s%@SHELL@%$SHELL%g
  s%@CFLAGS@%$CFLAGS%g
  s%@CPPFLAGS@%$CPPFLAGS%g
  s%@CXXFLAGS@%$CXXFLAGS%g
  s%@FFLAGS@%$FFLAGS%g
  s%@DEFS@%$DEFS%g
  s%@LDFLAGS@%$LDFLAGS%g
  s%@LIBS@%$LIBS%g
  s%@exec_prefix@%$exec_prefix%g
  s%@prefix@%$prefix%g
  s%@program_transform_name@%$program_transform_name%g
  s%@bindir@%$bindir%g
  s%@sbindir@%$sbindir%g
  s%@libexecdir@%$libexecdir%g
  s%@datadir@%$datadir%g
  s%@sysconfdir@%$sysconfdir%g
  s%@sharedstatedir@%$sharedstatedir%g
  s%@localstatedir@%$localstatedir%g
  s%@libdir@%$libdir%g
  s%@includedir@%$includedir%g
  s%@oldincludedir@%$oldincludedir%g
  s%@infodir@%$infodir%g
  s%@mandir@%$mandir%g
  s%@CC@%$CC%g
  s%@host@%$host%g
  s%@host_alias@%$host_alias%g
  s%@host_cpu@%$host_cpu%g
  s%@host_vendor@%$host_vendor%g
  s%@host_os@%$host_os%g
  s%@CPP@%$CPP%g
  s%@RANLIB@%$RANLIB%g
  s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
  s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
  s%@INSTALL_DATA@%$INSTALL_DATA%g
  s%@LN_S@%$LN_S%g
  s%@YACC@%$YACC%g
  s%@LEX@%$LEX%g
  s%@AR@%$AR%g
  s%@PERL@%$PERL%g
  s%@LD@%$LD%g
  s%@THLDFLAGS@%$THLDFLAGS%g
  s%@THLIBS@%$THLIBS%g
  s%@SP_MAJOR_VERSION@%$SP_MAJOR_VERSION%g
  s%@SP_MINOR_VERSION@%$SP_MINOR_VERSION%g
  s%@SP_PATCH_VERSION@%$SP_PATCH_VERSION%g
  s%@NROFF@%$NROFF%g
  s%@MANTYPE@%$MANTYPE%g
  s%@mansubdir@%$mansubdir%g
  s%@piddir@%$piddir%g
  s%@EXEEXT@%$EXEEXT%g
  s%@SHCC@%$SHCC%g
  s%@SHCFLAGS@%$SHCFLAGS%g
  s%@SHCPPFLAGS@%$SHCPPFLAGS%g
  s%@SHLD@%$SHLD%g
  s%@SHLDFLAGS@%$SHLDFLAGS%g
  s%@SHLIBS@%$SHLIBS%g
  s%@LIBSPSO@%$LIBSPSO%g
  s%@LIBTSPSO@%$LIBTSPSO%g
  
  CEOF
  EOF
  
  cat >> $CONFIG_STATUS <<\EOF
  
  # Split the substitutions into bite-sized pieces for seds with
  # small command number limits, like on Digital OSF/1 and HP-UX.
  ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
  ac_file=1 # Number of current file.
  ac_beg=1 # First line for current file.
  ac_end=$ac_max_sed_cmds # Line after last line for current file.
  ac_more_lines=:
  ac_sed_cmds=""
  while $ac_more_lines; do
    if test $ac_beg -gt 1; then
      sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
    else
      sed "${ac_end}q" conftest.subs > conftest.s$ac_file
    fi
    if test ! -s conftest.s$ac_file; then
      ac_more_lines=false
      rm -f conftest.s$ac_file
    else
      if test -z "$ac_sed_cmds"; then
        ac_sed_cmds="sed -f conftest.s$ac_file"
      else
        ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
      fi
      ac_file=`expr $ac_file + 1`
      ac_beg=$ac_end
      ac_end=`expr $ac_end + $ac_max_sed_cmds`
    fi
  done
  if test -z "$ac_sed_cmds"; then
    ac_sed_cmds=cat
  fi
  EOF
  
  cat >> $CONFIG_STATUS <<EOF
  
  CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
  EOF
  cat >> $CONFIG_STATUS <<\EOF
  for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
    # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
    case "$ac_file" in
    *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
         ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
    *) ac_file_in="${ac_file}.in" ;;
    esac
  
    # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
  
    # Remove last slash and all that follows it.  Not all systems have dirname.
    ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
    if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
      # The file is in a subdirectory.
      test ! -d "$ac_dir" && mkdir "$ac_dir"
      ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
      # A "../" for each directory in $ac_dir_suffix.
      ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
    else
      ac_dir_suffix= ac_dots=
    fi
  
    case "$ac_given_srcdir" in
    .)  srcdir=.
        if test -z "$ac_dots"; then top_srcdir=.
        else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
    /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
    *) # Relative path.
      srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
      top_srcdir="$ac_dots$ac_given_srcdir" ;;
    esac
  
    case "$ac_given_INSTALL" in
    [/$]*) INSTALL="$ac_given_INSTALL" ;;
    *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
    esac
  
    echo creating "$ac_file"
    rm -f "$ac_file"
    configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
    case "$ac_file" in
    *Makefile*) ac_comsub="1i\\
  # $configure_input" ;;
    *) ac_comsub= ;;
    esac
  
    ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
    sed -e "$ac_comsub
  s%@configure_input@%$configure_input%g
  s%@srcdir@%$srcdir%g
  s%@top_srcdir@%$top_srcdir%g
  s%@INSTALL@%$INSTALL%g
  " $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
  fi; done
  rm -f conftest.s*
  
  # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
  # NAME is the cpp macro being defined and VALUE is the value it is being given.
  #
  # ac_d sets the value in "#define NAME VALUE" lines.
  ac_dA='s%^\([ 	]*\)#\([ 	]*define[ 	][ 	]*\)'
  ac_dB='\([ 	][ 	]*\)[^ 	]*%\1#\2'
  ac_dC='\3'
  ac_dD='%g'
  # ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
  ac_uA='s%^\([ 	]*\)#\([ 	]*\)undef\([ 	][ 	]*\)'
  ac_uB='\([ 	]\)%\1#\2define\3'
  ac_uC=' '
  ac_uD='\4%g'
  # ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
  ac_eA='s%^\([ 	]*\)#\([ 	]*\)undef\([ 	][ 	]*\)'
  ac_eB='$%\1#\2define\3'
  ac_eC=' '
  ac_eD='%g'
  
  if test "${CONFIG_HEADERS+set}" != set; then
  EOF
  cat >> $CONFIG_STATUS <<EOF
    CONFIG_HEADERS="config.h"
  EOF
  cat >> $CONFIG_STATUS <<\EOF
  fi
  for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
    # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
    case "$ac_file" in
    *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
         ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
    *) ac_file_in="${ac_file}.in" ;;
    esac
  
    echo creating $ac_file
  
    rm -f conftest.frag conftest.in conftest.out
    ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
    cat $ac_file_inputs > conftest.in
  
  EOF
  
  # Transform confdefs.h into a sed script conftest.vals that substitutes
  # the proper values into config.h.in to produce config.h.  And first:
  # Protect against being on the right side of a sed subst in config.status.
  # Protect against being in an unquoted here document in config.status.
  rm -f conftest.vals
  cat > conftest.hdr <<\EOF
  s/[\\&%]/\\&/g
  s%[\\$`]%\\&%g
  s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
  s%ac_d%ac_u%gp
  s%ac_u%ac_e%gp
  EOF
  sed -n -f conftest.hdr confdefs.h > conftest.vals
  rm -f conftest.hdr
  
  # This sed command replaces #undef with comments.  This is necessary, for
  # example, in the case of _POSIX_SOURCE, which is predefined and required
  # on some systems where configure will not decide to define it.
  cat >> conftest.vals <<\EOF
  s%^[ 	]*#[ 	]*undef[ 	][ 	]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
  EOF
  
  # Break up conftest.vals because some shells have a limit on
  # the size of here documents, and old seds have small limits too.
  
  rm -f conftest.tail
  while :
  do
    ac_lines=`grep -c . conftest.vals`
    # grep -c gives empty output for an empty file on some AIX systems.
    if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
    # Write a limited-size here document to conftest.frag.
    echo '  cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
    sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
    echo 'CEOF
    sed -f conftest.frag conftest.in > conftest.out
    rm -f conftest.in
    mv conftest.out conftest.in
  ' >> $CONFIG_STATUS
    sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
    rm -f conftest.vals
    mv conftest.tail conftest.vals
  done
  rm -f conftest.vals
  
  cat >> $CONFIG_STATUS <<\EOF
    rm -f conftest.frag conftest.h
    echo "/* $ac_file.  Generated automatically by configure.  */" > conftest.h
    cat conftest.in >> conftest.h
    rm -f conftest.in
    if cmp -s $ac_file conftest.h 2>/dev/null; then
      echo "$ac_file is unchanged"
      rm -f conftest.h
    else
      # Remove last slash and all that follows it.  Not all systems have dirname.
        ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
        if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
        # The file is in a subdirectory.
        test ! -d "$ac_dir" && mkdir "$ac_dir"
      fi
      rm -f $ac_file
      mv conftest.h $ac_file
    fi
  fi; done
  
  EOF
  cat >> $CONFIG_STATUS <<EOF
  
  EOF
  cat >> $CONFIG_STATUS <<\EOF
  
  exit 0
  EOF
  chmod +x $CONFIG_STATUS
  rm -fr confdefs* $ac_clean_files
  test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
  
  
  # Print summary of options
  
  # Someone please show me a better way :)
  A=`eval echo ${prefix}` ; A=`eval echo ${A}`
  B=`eval echo ${bindir}` ; B=`eval echo ${B}`
  C=`eval echo ${sbindir}` ; C=`eval echo ${C}`
  D=`eval echo ${sysconfdir}` ; D=`eval echo ${D}`
  E=`eval echo ${libdir}` ; E=`eval echo ${E}`
  F=`eval echo ${mandir}/${mansubdir}X` ; F=`eval echo ${F}`
  G=`eval echo ${piddir}` ; G=`eval echo ${G}`
  H=`eval echo ${LIBSPSO}`; H=`eval echo ${H}`
  I=`eval echo ${LIBTSPSO}`; I=`eval echo ${I}`
  
  echo ""
  echo "Spread has been configured with the following options:"
  echo "                    User binaries: $B"
  echo "                  System binaries: $C"
  echo "              Configuration files: $D"
  echo "                   User libraries: $E"
  echo "            Shared Spread LIbrary: $H"
  echo "Shared Thread-safe Spread LIbrary: $I"
  echo "                     Manual pages: $F"
  echo "                         PID file: $G"
  echo "                   Manpage format: $MANTYPE"
  
  echo ""
  
  echo "              Host: ${host}"
  echo "          Compiler: ${CC}"
  echo "    Compiler flags: ${CFLAGS}"
  echo "Preprocessor flags: ${CPPFLAGS}"
  echo "      Linker flags: ${LDFLAGS}"
  echo "         Libraries: ${LIBS}"
  
  echo ""
  
  
  
  
  1.1                  spread/daemon/configure.in
  
  Index: configure.in
  ===================================================================
  AC_INIT(spread.c)
  
  AC_CONFIG_AUX_DIR(buildtools)
  AC_CONFIG_HEADER(config.h)
  AC_PROG_CC
  AC_CANONICAL_HOST
  AC_C_BIGENDIAN
  
  # Checks for programs.
  AC_PROG_CPP
  AC_PROG_RANLIB
  AC_PROG_INSTALL
  AC_PROG_LN_S
  AC_PROG_YACC
  AC_PATH_PROG(LEX, flex)
  AC_SUBST(LEX)
  AC_PATH_PROG(AR, ar)
  AC_PATH_PROGS(PERL, perl5 perl)
  AC_SUBST(PERL)
  
  if test -z "$AR" ; then
  	AC_MSG_ERROR([*** 'ar' missing, please install or fix your \$PATH ***])
  fi
  
  if test -z "$LD" ; then
  	LD=$CC
  fi
  AC_SUBST(LD)
  	
  # C Compiler features
  AC_C_INLINE
  if test "$GCC" = "yes"; then 
  	CFLAGS="$CFLAGS -Wall"
  fi
  
  # Allow user to specify flags
  AC_ARG_WITH(cflags,
  	[  --with-cflags           Specify additional flags to pass to compiler],
  	[
  		if test "x$withval" != "xno" ; then
  			CFLAGS="$CFLAGS $withval"
  		fi
  	]	
  )
  AC_ARG_WITH(cppflags,
  	[  --with-cppflags         Specify additional flags to pass to preprocessor] ,
  	[
  		if test "x$withval" != "xno"; then
  			CPPFLAGS="$CPPFLAGS $withval"
  		fi
  	]
  )
  AC_ARG_WITH(ldflags,
  	[  --with-ldflags          Specify additional flags to pass to linker],
  	[
  		if test "x$withval" != "xno" ; then
  			LDFLAGS="$LDFLAGS $withval"
  		fi
  	]	
  )
  AC_ARG_WITH(libs,
  	[  --with-libs             Specify additional libraries to link with],
  	[
  		if test "x$withval" != "xno" ; then
  			LIBS="$LIBS $withval"
  		fi
  	]	
  )
  
  # Checks for libraries.
   OLDLDFLAGS=$LDFLAGS
   LDFLAGS=
  AC_PTHREAD_FREEBSD
   THLDFLAGS=$LDFLAGS
  AC_SUBST(THLDFLAGS)
   LDFLAGS=$OLDLDFLAGS
  
   OLDLIBS=$LIBS
   LIBS=
  AC_CHECK_LIB(pthread, pthread_create, , )
  AC_CHECK_LIB(thread, thr_create, , )
  AC_CHECK_LIB(posix4, sem_wait, , )
   THLIBS=$LIBS
  AC_SUBST(THLIBS)
   LIBS=$OLDLIBS
  
  AC_CHECK_LIB(nsl, gethostbyaddr, , )
  AC_CHECK_LIB(socket, socket, , )
  
  AC_FUNC_STRFTIME
  
  # Checks for header files.
  AC_CHECK_HEADERS(arpa/inet.h assert.h errno.h grp.h limits.h netdb.h netinet/in.h netinet/tcp.h process.h pthread.h pwd.h signal.h stdarg.h stdint.h stdio.h stdlib.h string.h sys/inttypes.h sys/ioctl.h sys/param.h sys/socket.h sys/stat.h sys/time.h sys/timeb.h sys/types.h sys/uio.h sys/un.h sys/filio.h time.h unistd.h windows.h winsock.h)
  
  dnl    Checks for library functions.
  AC_CHECK_FUNCS(bcopy inet_aton inet_ntoa inet_ntop memmove setsid snprintf strerror lrand48)
  dnl    Checks for time functions
  AC_CHECK_FUNCS(gettimeofday time)
  
  # Check for broken snprintf
  if test "x$ac_cv_func_snprintf" = "xyes" ; then
  	AC_MSG_CHECKING([whether snprintf correctly terminates long strings])
  	AC_TRY_RUN(
  		[
  #include <stdio.h>
  int main(void){char b[5];snprintf(b,5,"123456789");return(b[4]!='\0');}
  		],
  		[AC_MSG_RESULT(yes)], 
  		[
  			AC_MSG_RESULT(no)
  			AC_DEFINE(BROKEN_SNPRINTF)
  			AC_MSG_WARN([****** Your snprintf() function is broken, complain to your vendor])
  		]
  	)
  fi
  
  # Cheap hack to ensure NEWS-OS libraries are arranged right.
  if test ! -z "$SONY" ; then
    LIBS="$LIBS -liberty";
  fi
  
  # Checks for data types
  AC_CHECK_SIZEOF(char, 1)
  AC_CHECK_SIZEOF(short int, 2)
  AC_CHECK_SIZEOF(int, 4)
  AC_CHECK_SIZEOF(long int, 4)
  AC_CHECK_SIZEOF(long long int, 8)
  
  # More checks for data types
  AC_CACHE_CHECK([for windows arch], ac_cv_arch_win, [
  	AC_TRY_COMPILE(
  		[ #include <process.h> ],
  		[ CRITICAL_SECTION mutex; InitializeCriticalSection(mutex); ],
  		[ ac_cv_arch_win="yes" ],
  		[ ac_cv_arch_win="no" ]
  	)
  ])
  if test "x$ac_cv_arch_win" = "xyes" ; then
  	AC_DEFINE(ARCH_PC_WIN95)
  fi
  
  AC_CACHE_CHECK([for struct timezone type], ac_cv_have_struct_timezone, [
  	AC_TRY_COMPILE(
  		[ #include <time.h>
  		  #include <sys/types.h> ], 
  		[ struct timezone opt; ],
  		[ ac_cv_have_struct_timezone="yes" ],
  		[ ac_cv_have_struct_timezone="no" ]
  	)
  ])
  if test "x$ac_cv_have_struct_timezone" = "xyes" ; then
  	AC_DEFINE(HAVE_STRUCT_TIMEZONE)
  fi
  
  AC_CACHE_CHECK([for struct sockopt_len_t type], ac_cv_have_sockopt_len_t, [
  	AC_TRY_COMPILE(
  		[ #include <sys/types.h>
  		  #include <sys/socket.h> ], 
  		[ static sockopt_len_t opt; opt=0; ],
  		[ ac_cv_have_sockopt_len_t="yes" ],
  		[ ac_cv_have_sockopt_len_t="no" ]
  	)
  ])
  if test "x$ac_cv_have_sockopt_len_t" = "xyes" ; then
  	AC_DEFINE(HAVE_SOCKOPT_LEN_T)
  fi
  
  AC_CACHE_CHECK([for struct msghdr type], ac_cv_have_struct_msghdr, [
  	AC_TRY_COMPILE(
  		[ #include <sys/types.h>
  		  #include <sys/socket.h> ], 
  		[ static  struct  msghdr msg; msg.msg_namelen = 1; ], 
  		[ ac_cv_have_struct_msghdr="yes" ],
  		[ ac_cv_have_struct_msghdr="no" ]
  	)
  ])
  if test "x$ac_cv_have_struct_msghdr" = "xno" ; then
  	AC_DEFINE(ARCH_SCATTER_NONE)
  else
    have_scatter="no"
    AC_CACHE_CHECK([for struct msghdr control], ac_cv_have_struct_msghdr_ctl, [
          AC_TRY_COMPILE(
                  [ #include <sys/types.h>
  		  #include <sys/socket.h> ],
                  [ static  struct  msghdr msg; msg.msg_controllen = 0; ],
                  [ ac_cv_have_struct_msghdr_ctl="yes" ],
                  [ ac_cv_have_struct_msghdr_ctl="no" ]
          )
    ])
    if test "x$ac_cv_have_struct_msghdr_ctl" = "xyes" ; then
  	AC_DEFINE(ARCH_SCATTER_CONTROL)
  	have_scatter="yes"
    fi
    AC_CACHE_CHECK([for struct msghdr accrights], ac_cv_have_struct_msghdr_acc, [
          AC_TRY_COMPILE(
                  [ #include <sys/types.h>
  		  #include <sys/socket.h> ],
                  [ static  struct  msghdr msg; msg.msg_accrightslen = 0; ],
                  [ ac_cv_have_struct_msghdr_acc="yes" ],
                  [ ac_cv_have_struct_msghdr_acc="no" ]
          )
    ])
    if test "x$ac_cv_have_struct_msghdr_acc" = "xyes" ; then
  	AC_DEFINE(ARCH_SCATTER_ACCRIGHTS)
  	have_scatter="yes"
    fi
    if test "x$have_scatter" = "xno" ; then
          AC_MSG_ERROR([*** cannot determine which scatter type to use ***])
    fi
  fi
  
  AC_CACHE_CHECK([for u_int type], ac_cv_have_u_int, [
  	AC_TRY_COMPILE(
  		[ #include <sys/types.h> ], 
  		[ u_int a; a = 1;], 
  		[ ac_cv_have_u_int="yes" ],
  		[ ac_cv_have_u_int="no" ]
  	)
  ])
  if test "x$ac_cv_have_u_int" = "xyes" ; then
  	AC_DEFINE(HAVE_U_INT)
  	have_u_int=1
  fi
  
  AC_CACHE_CHECK([for intXX_t types], ac_cv_have_intxx_t, [
  	AC_TRY_COMPILE(
  		[ #include <sys/types.h> ], 
  		[ int8_t a; int16_t b; int32_t c; a = b = c = 1;], 
  		[ ac_cv_have_intxx_t="yes" ],
  		[ ac_cv_have_intxx_t="no" ]
  	)
  ])
  if test "x$ac_cv_have_intxx_t" = "xyes" ; then
  	AC_DEFINE(HAVE_INTXX_T)
  	have_intxx_t=1
  fi
  	
  AC_CACHE_CHECK([for int64_t type], ac_cv_have_int64_t, [
  	AC_TRY_COMPILE(
  		[ #include <sys/types.h> ], 
  		[ int64_t a; a = 1;], 
  		[ ac_cv_have_int64_t="yes" ],
  		[ ac_cv_have_int64_t="no" ]
  	)
  ])
  if test "x$ac_cv_have_int64_t" = "xyes" ; then
  	AC_DEFINE(HAVE_INT64_T)
  	have_int64_t=1
  fi
  	
  AC_CACHE_CHECK([for u_intXX_t types], ac_cv_have_u_intxx_t, [
  	AC_TRY_COMPILE(
  		[ #include <sys/types.h> ], 
  		[ u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;], 
  		[ ac_cv_have_u_intxx_t="yes" ],
  		[ ac_cv_have_u_intxx_t="no" ]
  	)
  ])
  if test "x$ac_cv_have_u_intxx_t" = "xyes" ; then
  	AC_DEFINE(HAVE_U_INTXX_T)
  	have_u_intxx_t=1
  fi
  
  AC_CACHE_CHECK([for u_int64_t types], ac_cv_have_u_int64_t, [
  	AC_TRY_COMPILE(
  		[ #include <sys/types.h> ], 
  		[ u_int64_t a; a = 1;], 
  		[ ac_cv_have_u_int64_t="yes" ],
  		[ ac_cv_have_u_int64_t="no" ]
  	)
  ])
  if test "x$ac_cv_have_u_int64_t" = "xyes" ; then
  	AC_DEFINE(HAVE_U_INT64_T)
  	have_u_int64_t=1
  fi
  
  if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \
             test "x$ac_cv_header_sys_bitypes_h" = "xyes")
  then
  	AC_MSG_CHECKING([for intXX_t and u_intXX_t types in sys/bitypes.h])
  	AC_TRY_COMPILE(
  		[
  #include <sys/bitypes.h>
  		], 
  		[
  			int8_t a; int16_t b; int32_t c;
  			u_int8_t e; u_int16_t f; u_int32_t g;
  			a = b = c = e = f = g = 1;
  		], 
  		[
  			AC_DEFINE(HAVE_U_INTXX_T)
  			AC_DEFINE(HAVE_INTXX_T)
  			AC_MSG_RESULT(yes)
  		],
  		[AC_MSG_RESULT(no)]
  	) 
  fi
  
  if test -z "$have_u_intxx_t" ; then
  	AC_CACHE_CHECK([for uintXX_t types], ac_cv_have_uintxx_t, [
  		AC_TRY_COMPILE(
  			[
  #include <sys/types.h>
  			], 
  			[ uint8_t a; uint16_t b; uint32_t c; a = b = c = 1; ], 
  			[ ac_cv_have_uintxx_t="yes" ],
  			[ ac_cv_have_uintxx_t="no" ]
  		)
  	])
  	if test "x$ac_cv_have_uintxx_t" = "xyes" ; then
  		AC_DEFINE(HAVE_UINTXX_T)
  	fi
  fi
  
  AC_CACHE_CHECK([for socklen_t], ac_cv_have_socklen_t, [
  	AC_TRY_COMPILE(
  		[
  #include <sys/types.h>
  #include <sys/socket.h>
  		],
  		[socklen_t foo; foo = 1235;],
  		[ ac_cv_have_socklen_t="yes" ],
  		[ ac_cv_have_socklen_t="no" ]
  	)
  ])
  if test "x$ac_cv_have_socklen_t" = "xyes" ; then
  	AC_DEFINE(HAVE_SOCKLEN_T)
  fi
  
  AC_CACHE_CHECK([for size_t], ac_cv_have_size_t, [
  	AC_TRY_COMPILE(
  		[
  #include <sys/types.h>
  		],
  		[ size_t foo; foo = 1235; ],
  		[ ac_cv_have_size_t="yes" ],
  		[ ac_cv_have_size_t="no" ]
  	)
  ])
  if test "x$ac_cv_have_size_t" = "xyes" ; then
  	AC_DEFINE(HAVE_SIZE_T)
  fi
  
  AC_CACHE_CHECK([for ssize_t], ac_cv_have_ssize_t, [
  	AC_TRY_COMPILE(
  		[
  #include <sys/types.h>
  		],
  		[ ssize_t foo; foo = 1235; ],
  		[ ac_cv_have_ssize_t="yes" ],
  		[ ac_cv_have_ssize_t="no" ]
  	)
  ])
  if test "x$ac_cv_have_ssize_t" = "xyes" ; then
  	AC_DEFINE(HAVE_SSIZE_T)
  fi
  
  AC_CACHE_CHECK([for clock_t], ac_cv_have_clock_t, [
  	AC_TRY_COMPILE(
  		[
  #include <time.h>
  		],
  		[ clock_t foo; foo = 1235; ],
  		[ ac_cv_have_clock_t="yes" ],
  		[ ac_cv_have_clock_t="no" ]
  	)
  ])
  if test "x$ac_cv_have_clock_t" = "xyes" ; then
  	AC_DEFINE(HAVE_CLOCK_T)
  fi
  
  AC_CACHE_CHECK([for sa_family_t], ac_cv_have_sa_family_t, [
  	AC_TRY_COMPILE(
  		[
  #include <sys/types.h>
  #include <sys/socket.h>
  		],
  		[ sa_family_t foo; foo = 1235; ],
  		[ ac_cv_have_sa_family_t="yes" ],
  		[ AC_TRY_COMPILE(
  		  [
  #include <sys/types.h>
  #include <sys/socket.h>
  #include <netinet/in.h>
  		],
  		[ sa_family_t foo; foo = 1235; ],
  		[ ac_cv_have_sa_family_t="yes" ],
  
  		[ ac_cv_have_sa_family_t="no" ]
  	)]
  	)
  ])
  if test "x$ac_cv_have_sa_family_t" = "xyes" ; then
  	AC_DEFINE(HAVE_SA_FAMILY_T)
  fi
  
  
  AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_have_struct_sockaddr_storage, [
  	AC_TRY_COMPILE(
  		[
  #include <sys/types.h>
  #include <sys/socket.h>
  		],
  		[ struct sockaddr_storage s; ],
  		[ ac_cv_have_struct_sockaddr_storage="yes" ],
  		[ ac_cv_have_struct_sockaddr_storage="no" ]
  	)
  ])
  if test "x$ac_cv_have_struct_sockaddr_storage" = "xyes" ; then
  	AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE)
  fi
  
  AC_CACHE_CHECK([for struct sockaddr_in6], ac_cv_have_struct_sockaddr_in6, [
  	AC_TRY_COMPILE(
  		[
  #include <sys/types.h>
  #include <netinet/in.h>
  		],
  		[ struct sockaddr_in6 s; s.sin6_family = 0; ],
  		[ ac_cv_have_struct_sockaddr_in6="yes" ],
  		[ ac_cv_have_struct_sockaddr_in6="no" ]
  	)
  ])
  if test "x$ac_cv_have_struct_sockaddr_in6" = "xyes" ; then
  	AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6)
  fi
  
  AC_CACHE_CHECK([for struct in6_addr], ac_cv_have_struct_in6_addr, [
  	AC_TRY_COMPILE(
  		[
  #include <sys/types.h>
  #include <netinet/in.h>
  		],
  		[ struct in6_addr s; s.s6_addr[0] = 0; ],
  		[ ac_cv_have_struct_in6_addr="yes" ],
  		[ ac_cv_have_struct_in6_addr="no" ]
  	)
  ])
  if test "x$ac_cv_have_struct_in6_addr" = "xyes" ; then
  	AC_DEFINE(HAVE_STRUCT_IN6_ADDR)
  fi
  
  AC_CACHE_CHECK([for struct addrinfo], ac_cv_have_struct_addrinfo, [
  	AC_TRY_COMPILE(
  		[
  #include <sys/types.h>
  #include <sys/socket.h>
  #include <netdb.h>
  		],
  		[ struct addrinfo s; s.ai_flags = AI_PASSIVE; ],
  		[ ac_cv_have_struct_addrinfo="yes" ],
  		[ ac_cv_have_struct_addrinfo="no" ]
  	)
  ])
  if test "x$ac_cv_have_struct_addrinfo" = "xyes" ; then
  	AC_DEFINE(HAVE_STRUCT_ADDRINFO)
  fi
  
  AC_CACHE_CHECK([for struct timeval], ac_cv_have_struct_timeval, [
  	AC_TRY_COMPILE(
  		[ #include <sys/time.h> ], 
  		[ struct timeval tv; tv.tv_sec = 1;], 
  		[ ac_cv_have_struct_timeval="yes" ],
  		[ ac_cv_have_struct_timeval="no" ]
  	)
  ])
  if test "x$ac_cv_have_struct_timeval" = "xyes" ; then
  	AC_DEFINE(HAVE_STRUCT_TIMEVAL)
  	have_struct_timeval=1
  fi
  
  AC_CACHE_CHECK([for sun_len field in struct sockaddr_un],
  		ac_cv_have_sun_len_in_struct_sockaddr_un, [
  	AC_TRY_COMPILE(
  		[
  #include <sys/types.h>
  #include <sys/socket.h>
  		],
  		[ struct sockaddr_un s; s.sun_len = 1; ],
  		[ ac_cv_have_sun_len_in_struct_sockaddr_un="yes" ],
  		[ ac_cv_have_sun_len_in_struct_sockaddr_un="no" ],
  	)
  ])
  if test "x$ac_cv_have_sun_len_in_struct_sockaddr_un" = "xyes" ; then
  	AC_DEFINE(HAVE_SUN_LEN_IN_SOCKADDR_UN)
  fi
  
  AC_CACHE_CHECK([for ss_family field in struct sockaddr_storage],
  		ac_cv_have_ss_family_in_struct_ss, [
  	AC_TRY_COMPILE(
  		[
  #include <sys/types.h>
  #include <sys/socket.h>
  		],
  		[ struct sockaddr_storage s; s.ss_family = 1; ],
  		[ ac_cv_have_ss_family_in_struct_ss="yes" ],
  		[ ac_cv_have_ss_family_in_struct_ss="no" ],
  	)
  ])
  if test "x$ac_cv_have_ss_family_in_struct_ss" = "xyes" ; then
  	AC_DEFINE(HAVE_SS_FAMILY_IN_SS)
  fi
  
  AC_CACHE_CHECK([for __ss_family field in struct sockaddr_storage],
  		ac_cv_have___ss_family_in_struct_ss, [
  	AC_TRY_COMPILE(
  		[
  #include <sys/types.h>
  #include <sys/socket.h>
  		],
  		[ struct sockaddr_storage s; s.__ss_family = 1; ],
  		[ ac_cv_have___ss_family_in_struct_ss="yes" ],
  		[ ac_cv_have___ss_family_in_struct_ss="no" ]
  	)
  ])
  if test "x$ac_cv_have___ss_family_in_struct_ss" = "xyes" ; then
  	AC_DEFINE(HAVE___SS_FAMILY_IN_SS)
  fi
  
  AC_CACHE_CHECK([for pid_t], ac_cv_have_pid_t, [
          AC_TRY_COMPILE(
                  [
  #include <sys/types.h>
                  ],
                  [ pid_t foo; foo = 1235; ],
                  [ ac_cv_have_pid_t="yes" ],
                  [ ac_cv_have_pid_t="no" ]
          )
  ])
  if test "x$ac_cv_have_pid_t" = "xyes" ; then
          AC_DEFINE(HAVE_PID_T)
  fi
  
  AC_CACHE_CHECK([if libc defines __progname], ac_cv_libc_defines___progname, [
  	AC_TRY_LINK([], 
  		[ extern char *__progname; printf("%s", __progname); ], 
  		[ ac_cv_libc_defines___progname="yes" ],
  		[ ac_cv_libc_defines___progname="no" ]
  	)
  ])
  if test "x$ac_cv_libc_defines___progname" = "xyes" ; then
  	AC_DEFINE(HAVE___PROGNAME)
  fi
  
  
  AC_CACHE_CHECK([if libc defines sys_errlist], ac_cv_libc_defines_sys_errlist, [
  	AC_TRY_LINK([], 
  		[ extern const char *const sys_errlist[]; printf("%s", sys_errlist[0]);], 
  		[ ac_cv_libc_defines_sys_errlist="yes" ],
  		[ ac_cv_libc_defines_sys_errlist="no" ]
  	)
  ])
  if test "x$ac_cv_libc_defines_sys_errlist" = "xyes" ; then
  	AC_DEFINE(HAVE_SYS_ERRLIST)
  fi
  
  
  AC_CACHE_CHECK([if libc defines sys_nerr], ac_cv_libc_defines_sys_nerr, [
  	AC_TRY_LINK([], 
  		[ extern int sys_nerr; printf("%i", sys_nerr);], 
  		[ ac_cv_libc_defines_sys_nerr="yes" ],
  		[ ac_cv_libc_defines_sys_nerr="no" ]
  	)
  ])
  if test "x$ac_cv_libc_defines_sys_nerr" = "xyes" ; then
  	AC_DEFINE(HAVE_SYS_NERR)
  fi
  
  for i in `grep "SP_....._VERSION" spread_params.h | sed -e 's/#define//g' -e 's/[ 	]//g' -e 's/VERSION/VERSION=/g;'`
  do
    eval $i
  done
  AC_MSG_CHECKING([Check Spread's major version])
  AC_MSG_RESULT($SP_MAJOR_VERSION)
  AC_SUBST(SP_MAJOR_VERSION)
  AC_MSG_CHECKING([Check Spread's minor version])
  AC_MSG_RESULT($SP_MINOR_VERSION)
  AC_SUBST(SP_MINOR_VERSION)
  AC_MSG_CHECKING([Check Spread's patch version])
  AC_MSG_RESULT($SP_PATCH_VERSION)
  AC_SUBST(SP_PATCH_VERSION)
  
  # Options from here on. Some of these are preset by platform above
  
  AC_ARG_WITH(catman,
  	[  --with-mantype=man|cat|doc  Set man page type],
  	[
  		case "$withval" in
  		man|cat|doc)
  			MANTYPE=$withval
  			;;
  		*)
  			AC_MSG_ERROR(invalid man type: $withval)
  			;;
  		esac
  	]
  )
  if test -z "$MANTYPE"; then
  	AC_PATH_PROGS(NROFF, nroff awf, /bin/false, /usr/bin:/usr/ucb)
  	if ${NROFF} -mdoc ${srcdir}/docs/spread.1 >/dev/null 2>&1; then
  		MANTYPE=doc
  	elif ${NROFF} -man ${srcdir}/docs/spread.1 >/dev/null 2>&1; then
  		MANTYPE=man
  	else
  		MANTYPE=cat
  	fi
  fi
  AC_SUBST(MANTYPE)
  if test "$MANTYPE" = "doc"; then
  	mansubdir=man;
  else
  	mansubdir=$MANTYPE;
  fi
  AC_SUBST(mansubdir)
  
  # Where to place spread.pid
  piddir=/var/run
  AC_ARG_WITH(pid-dir,
  	[  --with-pid-dir=PATH     Specify location of spread.pid file],
  	[
  		if test "x$withval" != "xno" ; then	
  			piddir=$withval
  		fi
  	]
  )
  
  # make sure the directory exists
  if test ! -d $piddir ; then	
  	piddir=`eval echo ${sysconfdir}`
  	case $piddir in
   		NONE/*) piddir=`echo $piddir | sed "s~NONE~$ac_default_prefix~"` ;;
  	esac
  fi
  
  AC_DEFINE_UNQUOTED(_PATH_SPREAD_PIDDIR, "$piddir")
  AC_SUBST(piddir)
  
  # Where to find spread.conf and other config files
  etcdir=`eval echo ${sysconfdir}`
  case $etcdir in
  	NONE/*) etcdir=`echo $etcdir | sed "s~NONE~$ac_default_prefix~"` ;;
  esac
  
  AC_DEFINE_UNQUOTED(SPREAD_ETCDIR, "$etcdir")
  
  AC_EXEEXT
  
  LIBSPSO=none
  LIBTSPSO=none
  case "$host" in
  *-*-darwin*)
  	SHCC=$CC
  	SHCFLAGS="$CFLAGS -fPIC"
  	SHCPPFLAGS="$CPPFLAGS"
  	SHLD="$CC -dynamiclib"
  	SHLDFLAGS="$SHLDFLAGS $LDFLAGS"
  	SHLIBS=$LIBS	
  	LIBSPSO="libspread.dylib"
  	LIBTSPSO="libtspread.dylib"
          ;;
  *-*-*)
  	SHCC=$CC
  	SHCFLAGS="$CFLAGS -fPIC"
  	SHCPPFLAGS="$CPPFLAGS"
  	SHLD="$CC -shared"
  	SHLDFLAGS="$SHLDFLAGS $LDFLAGS"
  	SHLIBS=$LIBS
  	LIBSPSO="libspread.so"
  	LIBTSPSO="libtspread.so"
  	;;
  esac
  
  AC_SUBST(SHCC)
  AC_SUBST(SHCFLAGS)
  AC_SUBST(SHCPPFLAGS)
  AC_SUBST(SHLD)
  AC_SUBST(SHLDFLAGS)
  AC_SUBST(SHLIBS)
  AC_SUBST(LIBSPSO)
  AC_SUBST(LIBTSPSO)
  
  AC_OUTPUT(Makefile)
  
  # Print summary of options
  
  # Someone please show me a better way :)
  A=`eval echo ${prefix}` ; A=`eval echo ${A}`
  B=`eval echo ${bindir}` ; B=`eval echo ${B}`
  C=`eval echo ${sbindir}` ; C=`eval echo ${C}`
  D=`eval echo ${sysconfdir}` ; D=`eval echo ${D}`
  E=`eval echo ${libdir}` ; E=`eval echo ${E}`
  F=`eval echo ${mandir}/${mansubdir}X` ; F=`eval echo ${F}`
  G=`eval echo ${piddir}` ; G=`eval echo ${G}`
  H=`eval echo ${LIBSPSO}`; H=`eval echo ${H}`
  I=`eval echo ${LIBTSPSO}`; I=`eval echo ${I}`
  
  echo ""
  echo "Spread has been configured with the following options:"
  echo "                    User binaries: $B"
  echo "                  System binaries: $C"
  echo "              Configuration files: $D"
  echo "                   User libraries: $E"
  echo "            Shared Spread LIbrary: $H"
  echo "Shared Thread-safe Spread LIbrary: $I"
  echo "                     Manual pages: $F"
  echo "                         PID file: $G"
  echo "                   Manpage format: $MANTYPE"
  
  echo ""
  
  echo "              Host: ${host}"
  echo "          Compiler: ${CC}"
  echo "    Compiler flags: ${CFLAGS}"
  echo "Preprocessor flags: ${CPPFLAGS}"
  echo "      Linker flags: ${LDFLAGS}"
  echo "         Libraries: ${LIBS}"
  
  echo ""
  
  
  
  
  1.1                  spread/daemon/defines.h
  
  Index: defines.h
  ===================================================================
  #ifndef _DEFINES_H
  #define _DEFINES_H
  
  #ifdef HAVE_STDLIB_H
  #include <stdlib.h>
  #endif
  #include <sys/types.h>
  #include <sys/socket.h>
  #include <sys/param.h>
  #include <netinet/in_systm.h>
  #include <netinet/in.h>
  #include <netinet/ip.h>
  #ifdef HAVE_SYS_UN_H
  # include <sys/un.h>
  #endif
  #ifdef HAVE_SYS_BITYPES_H
  # include <sys/bitypes.h>
  #endif
  #ifdef HAVE_LIMITS_H
  # include <limits.h>
  #endif
  #ifdef HAVE_SYS_TIME_H
  # include <sys/time.h>
  #endif
  #ifdef HAVE_SYS_CDEFS_H
  # include <sys/cdefs.h> /* For __P() */
  #endif
  #ifdef HAVE_SYS_SYSMACROS_H
  # include <sys/sysmacros.h> /* For MIN, MAX, etc */
  #endif
  #ifdef HAVE_SYS_STAT_H
  # include <sys/stat.h> /* For S_* constants and macros */
  #endif
  #ifdef HAVE_NEXT
  #  include <libc.h>
  #endif
  
  #include <unistd.h>
  #include <termios.h>
  #include <fcntl.h>
  
  #ifdef HAVE_SYS_FILIO_H
  #include <sys/filio.h>
  #endif
  
  #ifndef MAXPATHLEN
  # ifdef PATH_MAX
  #  define MAXPATHLEN PATH_MAX
  # else /* PATH_MAX */
  #  define MAXPATHLEN 64 /* Should be safe */
  # endif /* PATH_MAX */
  #endif /* MAXPATHLEN */
  
  #ifndef STDIN_FILENO
  # define STDIN_FILENO    0
  #endif
  #ifndef STDOUT_FILENO
  # define STDOUT_FILENO   1
  #endif
  #ifndef STDERR_FILENO
  # define STDERR_FILENO   2
  #endif
  
  #ifndef O_NONBLOCK	/* Non Blocking Open */
  # define O_NONBLOCK      00004
  #endif
  
  /* Types */
  
  /* If sys/types.h does not supply intXX_t, supply them ourselves */
  /* (or die trying) */
  
  #ifndef HAVE_SOCKOPT_LEN_T
  typedef int sockopt_len_t;
  #endif
  
  #ifndef HAVE_U_INT
  typedef unsigned int u_int;
  #endif
  
  #ifndef HAVE_INTXX_T
  # if (SIZEOF_CHAR == 1)
  typedef char int8_t;
  # else
  #  error "8 bit int type not found."
  # endif
  # if (SIZEOF_SHORT_INT == 2)
  typedef short int int16_t;
  # else
  #  ifdef _CRAY
  typedef long  int16_t;
  #  else
  #   error "16 bit int type not found."
  #  endif /* _CRAY */
  # endif
  # if (SIZEOF_INT == 4)
  typedef int int32_t;
  # else
  #  ifdef _CRAY
  typedef long  int32_t;
  #  else
  #   error "32 bit int type not found."
  #  endif /* _CRAY */
  # endif
  #endif
  
  /* If sys/types.h does not supply u_intXX_t, supply them ourselves */
  #ifndef HAVE_U_INTXX_T
  # ifdef HAVE_UINTXX_T
  typedef uint8_t u_int8_t;
  typedef uint16_t u_int16_t;
  typedef uint32_t u_int32_t;
  # define HAVE_U_INTXX_T 1
  # else
  #  if (SIZEOF_CHAR == 1)
  typedef unsigned char u_int8_t;
  #  else
  #   error "8 bit int type not found."
  #  endif
  #  if (SIZEOF_SHORT_INT == 2)
  typedef unsigned short int u_int16_t;
  #  else
  #   ifdef _CRAY
  typedef unsigned long  u_int16_t;
  #   else
  #    error "16 bit int type not found."
  #   endif
  #  endif
  #  if (SIZEOF_INT == 4)
  typedef unsigned int u_int32_t;
  #  else
  #   ifdef _CRAY
  typedef unsigned long  u_int32_t;
  #   else
  #    error "32 bit int type not found."
  #   endif
  #  endif
  # endif
  #endif
  
  /* 64-bit types */
  #ifndef HAVE_INT64_T
  # if (SIZEOF_LONG_INT == 8)
  typedef long int int64_t;
  #   define HAVE_INT64_T 1
  # else
  #  if (SIZEOF_LONG_LONG_INT == 8)
  typedef long long int int64_t;
  #   define HAVE_INT64_T 1
  #   define HAVE_LONG_LONG_INT
  #  endif
  # endif
  #endif
  #ifndef HAVE_U_INT64_T
  # if (SIZEOF_LONG_INT == 8)
  typedef unsigned long int u_int64_t;
  #   define HAVE_U_INT64_T 1
  # else
  #  if (SIZEOF_LONG_LONG_INT == 8)
  typedef unsigned long long int u_int64_t;
  #   define HAVE_U_INT64_T 1
  #  endif
  # endif
  #endif
  
  #ifndef HAVE_SOCKLEN_T
  typedef unsigned int socklen_t;
  # define HAVE_SOCKLEN_T
  #endif /* HAVE_SOCKLEN_T */
  
  #ifndef HAVE_SIZE_T
  typedef unsigned int size_t;
  # define HAVE_SIZE_T
  #endif /* HAVE_SIZE_T */
  
  #ifndef HAVE_SSIZE_T
  typedef int ssize_t;
  # define HAVE_SSIZE_T
  #endif /* HAVE_SSIZE_T */
  
  #ifndef HAVE_CLOCK_T
  typedef long clock_t;
  # define HAVE_CLOCK_T
  #endif /* HAVE_CLOCK_T */
  
  #ifndef HAVE_SA_FAMILY_T
  typedef int sa_family_t;
  # define HAVE_SA_FAMILY_T
  #endif /* HAVE_SA_FAMILY_T */
  
  #ifndef HAVE_PID_T
  typedef int pid_t;
  # define HAVE_PID_T
  #endif /* HAVE_PID_T */
  
  #if !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE___SS_FAMILY_IN_SS)
  # define ss_family __ss_family
  #endif /* !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE_SA_FAMILY_IN_SS) */
  
  #ifndef HAVE_SYS_UN_H
  struct	sockaddr_un {
  	short	sun_family;		/* AF_UNIX */
  	char	sun_path[108];		/* path name (gag) */
  };
  #endif /* HAVE_SYS_UN_H */
  
  /* Macros */
  
  #ifndef MAX
  # define MAX(a,b) (((a)>(b))?(a):(b))
  # define MIN(a,b) (((a)<(b))?(a):(b))
  #endif
  
  #ifndef roundup
  # define roundup(x, y)   ((((x)+((y)-1))/(y))*(y))
  #endif
  
  #ifndef timersub
  #define timersub(a, b, result)					\
     do {								\
        (result)->tv_sec = (a)->tv_sec - (b)->tv_sec;		\
        (result)->tv_usec = (a)->tv_usec - (b)->tv_usec;		\
        if ((result)->tv_usec < 0) {				\
  	 --(result)->tv_sec;					\
  	 (result)->tv_usec += 1000000;				\
        }								\
     } while (0)
  #endif
  
  #ifndef __P
  # define __P(x) x
  #endif
  
  #if !defined(__GNUC__) || (__GNUC__ < 2)
  # define __attribute__(x)
  #endif /* !defined(__GNUC__) || (__GNUC__ < 2) */
  
  #ifndef SUN_LEN
  #define SUN_LEN(su) \
  	(sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path))
  #endif /* SUN_LEN */
  
  #if !defined(HAVE_MEMMOVE) && defined(HAVE_BCOPY)
  # define memmove(s1, s2, n) bcopy((s2), (s1), (n))
  #endif /* !defined(HAVE_MEMMOVE) && defined(HAVE_BCOPY) */
  
  /* which type of time to use? (api.c) */
  #ifdef HAVE_SYS_TIME_H
  #  define USE_TIMEVAL
  #endif
  
  /** end of login recorder definitions */
  
  #endif /* _DEFINES_H */
  
  
  




More information about the Spread-cvs mailing list