Rename Perl -> perl (gotta move all the files).
roberts [Sat, 13 Feb 1999 05:26:41 +0000 (05:26 +0000)]
Added Files:
perl/ChangeLog perl/FCGI.PL perl/FCGI.pm perl/MANIFEST
perl/Makefile.PL perl/README perl/configure perl/configure.in
perl/configure.readme perl/echo.PL perl/typemap

perl/ChangeLog [new file with mode: 0644]
perl/FCGI.PL [new file with mode: 0644]
perl/FCGI.pm [new file with mode: 0644]
perl/MANIFEST [new file with mode: 0644]
perl/Makefile.PL [new file with mode: 0644]
perl/README [new file with mode: 0644]
perl/configure [new file with mode: 0644]
perl/configure.in [new file with mode: 0644]
perl/configure.readme [new file with mode: 0644]
perl/echo.PL [new file with mode: 0644]
perl/typemap [new file with mode: 0644]

diff --git a/perl/ChangeLog b/perl/ChangeLog
new file mode 100644 (file)
index 0000000..e9c4ae6
--- /dev/null
@@ -0,0 +1,107 @@
+Version 0.43 -- 22 December 1998  <skimo@kotnet.org> Sven Verdoolaege
+
+       o POST on bigendians (Paul GABORIT <gaborit@enstimac.fr>)
+       o Some win32 changes (Monty <xiphmont@fastserv.com>)
+       o library fixes  ("Rob Saccoccio" <robs@ipass.net>)
+
+Version 0.42 -- 28 August 1998  <skimo@kotnet.org> Sven Verdoolaege
+
+       o environ fixes ?
+       o print NULLs (Ken Alexander <kalex@eecs.umich.edu>)
+       o PRINTF support
+       o set version in FCGI.pm
+       o library fixes  ("Rob Saccoccio" <robs@ipass.net>)
+
+Version 0.41 -- 29 July 1998  <skimo@kotnet.org> Sven Verdoolaege
+
+       o Compiles with perl 5.005
+
+Version 0.40 -- 15 July 1998  <skimo@kotnet.org> Sven Verdoolaege
+
+       o Added default die hook
+       o Minimal documentation
+
+Version 0.39 -- 3 July 1998  <skimo@kotnet.org> Sven Verdoolaege
+
+       o Fixed read bug
+
+Version 0.38 -- 28 June 1998  <skimo@kotnet.org> Sven Verdoolaege
+
+       o Fixed flush bug
+       o Added default warn hook
+
+Version 0.37 -- 27 June 1998  <skimo@kotnet.org> Sven Verdoolaege
+
+       o More support for tied handles
+       o Added flush function
+
+Version 0.36 -- 23 June 1998  <skimo@kotnet.org> Sven Verdoolaege
+
+       o More support for tied handles (GETC and autoflushing)
+
+Version 0.35 -- 22 June 1998  <skimo@kotnet.org> Sven Verdoolaege
+
+       o Added forgotten typemap
+
+Version 0.34 -- 17 June 1998  <skimo@kotnet.org> Sven Verdoolaege
+       
+       o No longer force sfio less compile
+       o Update os_unix.c from fcgi2.0b2.1
+       o Small documentation changes
+
+Version 0.33 -- 16 June 1998  <skimo@kotnet.org> Sven Verdoolaege
+
+       o More support for tied handles
+
+Version 0.32 -- 16 June 1998  <skimo@kotnet.org> Sven Verdoolaege
+
+       o Preliminary support for tied handles (doesn't require sfio)
+       o Force sfio less compile
+       o Changed protoype of set_exit_status
+
+Version 0.31 -- 13 July 1997  <skimo@breughel.ufsia.ac.be> Sven Verdoolaege
+
+       o Applied solaris accept patch from
+         Chip Salzenberg <chip@rio.atlantic.net>
+       o Preliminary support glibc's cookie mechanism
+
+Version 0.30 -- 24 June 1997  <skimo@dns.ufsia.ac.be> Sven Verdoolaege
+
+       o Added forgotten library files
+
+Version 0.29 -- 10 June 1997 <skimo@dns.ufsia.ac.be> Sven Verdoolaege
+
+       o Updated library files from fastcgi 2.02b
+       o Use installed library/include file if found
+
+Version 0.28 -- 24 February 1997 <skimo@dns.ufsia.ac.be> Sven Verdoolaege
+
+       o Intialization of %ENV did not change environ. Fixed.
+         Problem reported by Jan Drehmer <Jan.X.Drehmer@telia.se>
+
+Version 0.26 -- 19 February 1997 <skimo@dns.ufsia.ac.be> Sven Verdoolaege
+
+       o Flush output when $| is set to eliminate a problem reported
+         by echo@echo.cica.fr
+
+Version 0.25 -- 13 October 1996 <skimo@dns.ufsia.ac.be> Sven Verdoolaege
+
+       o Eliminate some warnings
+       o Check whether perl is compiled with sfio support
+
+Version 0.25 -- 25 September 1996 <skimo@dns.ufsia.ac.be> Sven Verdoolaege
+
+       o First public release
+       o Additional bugfixes
+
+Version 0.21 -- 20 September 1996 <skimo@dns.ufsia.ac.be> Sven Verdoolaege
+
+       o Bugfix
+
+Version 0.2 -- 19 September 1996 <skimo@dns.ufsia.ac.be> Sven Verdoolaege
+
+       o First Version based on sfio
+
+Version 0.1 -- 12 June 1996
+
+       o Original version from Open Market's FastCGI Developer's Kit
diff --git a/perl/FCGI.PL b/perl/FCGI.PL
new file mode 100644 (file)
index 0000000..b4a60bd
--- /dev/null
@@ -0,0 +1,448 @@
+use Config;
+
+open OUT, ">FCGI.xs";
+
+print "Generating FCGI.xs for Perl version $]\n";
+#unless (exists $Config{apiversion} && $Config{apiversion} >= 5.005) 
+unless ($] >= 5.005) {
+    for (qw(sv_undef diehook warnhook in_eval)) {
+       print OUT "#define PL_$_ $_\n" 
+    }
+}
+print OUT while <DATA>;
+close OUT;
+__END__
+/* $Id: FCGI.PL,v 1.1 1999/02/13 05:26:42 roberts Exp $ */
+
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+#include "fcgiapp.h"
+
+#ifndef FALSE
+#define FALSE (0)
+#endif
+
+#ifndef TRUE
+#define TRUE  (1)
+#endif
+
+extern char **environ;
+static char **requestEnviron = NULL;
+
+#ifdef USE_SFIO
+typedef struct
+{
+    Sfdisc_t   disc;
+    FCGX_Stream        *stream;
+} FCGI_Disc;
+
+static ssize_t
+sffcgiread(f, buf, n, disc)
+Sfio_t*                f;      /* stream involved */
+Void_t*                buf;    /* buffer to read into */
+size_t         n;      /* number of bytes to read */
+Sfdisc_t*      disc;   /* discipline */
+{
+    return FCGX_GetStr(buf, n, ((FCGI_Disc *)disc)->stream);
+}
+
+static ssize_t
+sffcgiwrite(f, buf, n, disc)
+Sfio_t*                f;      /* stream involved */
+const Void_t*  buf;    /* buffer to read into */
+size_t         n;      /* number of bytes to read */
+Sfdisc_t*      disc;   /* discipline */
+{
+    n = FCGX_PutStr(buf, n, ((FCGI_Disc *)disc)->stream);
+    FCGX_FFlush(((FCGI_Disc *)disc)->stream);
+    return n;
+}
+
+Sfdisc_t *
+sfdcnewfcgi(stream)
+       FCGX_Stream *stream;
+{
+    FCGI_Disc* disc;
+
+    New(1000,disc,1,FCGI_Disc);
+    if (!disc) return (Sfdisc_t *)disc;
+
+    disc->disc.exceptf = (Sfexcept_f)NULL;
+    disc->disc.seekf = (Sfseek_f)NULL;
+    disc->disc.readf = sffcgiread;
+    disc->disc.writef = sffcgiwrite;
+    disc->stream = stream;
+    return (Sfdisc_t *)disc;
+}
+
+Sfdisc_t *
+sfdcdelfcgi(disc)
+    Sfdisc_t*  disc;
+{
+    Safefree(disc);
+    return 0;
+}
+#endif
+
+static int acceptCalled = FALSE;
+static int finishCalled = FALSE;
+static int isCGI = FALSE;
+static FCGX_Stream *in = NULL;
+static SV *svout = NULL, *svin, *sverr;
+
+static int 
+FCGI_Flush(void)
+{
+    if(!acceptCalled || isCGI) {
+       return;
+    }
+#ifdef USE_SFIO
+    sfsync(PerlIO_stdout());
+    sfsync(PerlIO_stderr());
+#else
+    FCGX_FFlush((FCGX_Stream *) SvIV((SV*) SvRV(svout)));
+    FCGX_FFlush((FCGX_Stream *) SvIV((SV*) SvRV(sverr)));
+#endif
+}
+
+static int 
+FCGI_Accept(void)
+{
+    if(!acceptCalled) {
+        /*
+         * First call to FCGI_Accept.  Is application running
+         * as FastCGI or as CGI?
+         */
+        isCGI = FCGX_IsCGI();
+    } else if(isCGI) {
+        /*
+         * Not first call to FCGI_Accept and running as CGI means
+         * application is done.
+         */
+        return(EOF);
+    } else {
+       if(!finishCalled) {
+#ifdef USE_SFIO
+            sfdcdelfcgi(sfdisc(PerlIO_stdin(), SF_POPDISC));
+            sfdcdelfcgi(sfdisc(PerlIO_stdout(), SF_POPDISC));
+            sfdcdelfcgi(sfdisc(PerlIO_stderr(), SF_POPDISC));
+#else
+           FCGI_Flush();
+#endif
+       }
+    }
+    if(!isCGI) {
+        FCGX_ParamArray envp;
+       FCGX_Stream *out, *error;
+        int acceptResult = FCGX_Accept(&in, &out, &error, &envp);
+        if(acceptResult < 0) {
+            return acceptResult;
+        }
+#ifdef USE_SFIO
+        sfdisc(PerlIO_stdin(), sfdcnewfcgi(in));
+        sfdisc(PerlIO_stdout(), sfdcnewfcgi(out));
+        sfdisc(PerlIO_stderr(), sfdcnewfcgi(error));
+#else
+       if (!svout) {
+           newSVrv(svout = newSV(0), "FCGI");
+           sv_magic((SV *)gv_fetchpv("STDOUT",TRUE, SVt_PVIO), 
+                       svout, 'q', Nullch, 0);
+           newSVrv(sverr = newSV(0), "FCGI");
+           sv_magic((SV *)gv_fetchpv("STDERR",TRUE, SVt_PVIO), 
+                       sverr, 'q', Nullch, 0);
+           newSVrv(svin = newSV(0), "FCGI");
+           sv_magic((SV *)gv_fetchpv("STDIN",TRUE, SVt_PVIO), 
+                       svin, 'q', Nullch, 0);
+       }
+       sv_setiv(SvRV(svout), (IV) out);
+       sv_setiv(SvRV(sverr), (IV) error);
+       sv_setiv(SvRV(svin), (IV) in);
+       if (PL_warnhook) SvREFCNT_dec(PL_warnhook);
+       PL_warnhook = SvREFCNT_inc(GvCV(gv_fetchmethod(Nullhv, "FCGI::WARN")));
+       if (PL_diehook) SvREFCNT_dec(PL_diehook);
+       PL_diehook = SvREFCNT_inc(GvCV(gv_fetchmethod(Nullhv, "FCGI::DIE")));
+#endif
+       finishCalled = FALSE;
+        environ = envp;
+    }
+    acceptCalled = TRUE;
+    return 0;
+}
+
+static void 
+FCGI_Finish(void)
+{
+    if(!acceptCalled || isCGI) {
+       return;
+    }
+#ifdef USE_SFIO
+    sfdcdelfcgi(sfdisc(PerlIO_stdin(), SF_POPDISC));
+    sfdcdelfcgi(sfdisc(PerlIO_stdout(), SF_POPDISC));
+    sfdcdelfcgi(sfdisc(PerlIO_stderr(), SF_POPDISC));
+#else
+    FCGI_Flush();
+#endif
+    in = NULL;
+    FCGX_Finish();
+    /*
+    environ = NULL;
+    */
+    finishCalled = TRUE;
+#ifndef USE_SFIO
+    if (PL_warnhook) {
+       SvREFCNT_dec(PL_warnhook);
+       PL_warnhook = Nullsv;
+    }
+    if (PL_diehook) {
+       SvREFCNT_dec(PL_diehook);
+       PL_diehook = Nullsv;
+    }
+#endif
+}
+
+static int 
+FCGI_StartFilterData(void)
+{
+    return in ? FCGX_StartFilterData(in) : -1;
+}
+
+static void
+FCGI_SetExitStatus(int status)
+{
+    if (in) FCGX_SetExitStatus(status, in);
+}
+
+/*
+ * For each variable in the array envp, either set or unset it
+ * in the global hash %ENV.
+ */
+static void
+DoPerlEnv(envp, set)
+char **envp;
+int set;
+{
+    int i;
+    char *p, *p1;
+    HV   *hv;
+    SV   *sv;
+    hv = perl_get_hv("ENV", TRUE);
+
+    if (!set)
+       perl_eval_pv("%ENV = %FCGI::ENV", 0);
+    else {
+       perl_eval_pv("%FCGI::ENV = %ENV", 0);
+       for(i = 0; ; i++) {
+           if((p = envp[i]) == NULL) {
+               break;
+           }
+           p1 = strchr(p, '=');
+           assert(p1 != NULL);
+           *p1 = '\0';
+           sv = newSVpv(p1 + 1, 0);
+           /* call magic for this value ourselves */
+           hv_store(hv, p, p1 - p, sv, 0);
+           SvSETMAGIC(sv);
+           *p1 = '=';
+       }
+    }
+}
+
+
+typedef FCGX_Stream *  FCGI;
+
+MODULE = FCGI          PACKAGE = FCGI
+
+#ifndef USE_SFIO
+void
+DIE(msg)
+       char *  msg;
+
+       CODE:
+       if (!PL_in_eval)
+           FCGX_PutS(msg, (FCGX_Stream *) SvIV((SV*) SvRV(sverr)));
+
+void
+WARN(msg)
+       char *  msg;
+
+       CODE:
+       FCGX_PutS(msg, (FCGX_Stream *) SvIV((SV*) SvRV(sverr)));
+
+void
+PRINT(stream, ...)
+       FCGI    stream;
+
+       PREINIT:
+       int     n;
+
+       CODE:
+       for (n = 1; n < items; ++n) {
+            STRLEN len;
+            register char *tmps = (char *)SvPV(ST(n),len);
+            FCGX_PutStr(tmps, len, stream);
+       }
+       if (SvTRUEx(perl_get_sv("|", FALSE))) 
+           FCGX_FFlush(stream);
+
+int
+WRITE(stream, bufsv, len, ...)
+       FCGI    stream;
+       SV *    bufsv;
+       int     len;
+
+       PREINIT:
+       int     offset;
+       char *  buf;
+       STRLEN  blen;
+       int     n;
+
+       CODE:
+       offset = (items == 4) ? (int)SvIV(ST(3)) : 0;
+       buf = SvPV(bufsv, blen);
+       if (offset < 0) offset += blen;
+       if (len > blen - offset)
+           len = blen - offset;
+       if (offset < 0 || offset >= blen ||
+               (n = FCGX_PutStr(buf+offset, len, stream)) < 0) 
+           ST(0) = &PL_sv_undef;
+       else {
+           ST(0) = sv_newmortal();
+           sv_setpvf(ST(0), "%c", n);
+       }
+
+int
+READ(stream, bufsv, len, ...)
+       FCGI    stream;
+       SV *    bufsv;
+       int     len;
+
+       PREINIT:
+       int     offset;
+       char *  buf;
+
+       CODE:
+       offset = (items == 4) ? (int)SvIV(ST(3)) : 0;
+       if (! SvOK(bufsv))
+           sv_setpvn(bufsv, "", 0);
+       buf = SvGROW(bufsv, len+offset+1);
+       len = FCGX_GetStr(buf+offset, len, stream);
+       SvCUR_set(bufsv, len+offset);
+       *SvEND(bufsv) = '\0';
+       (void)SvPOK_only(bufsv);
+       SvSETMAGIC(bufsv);
+       RETVAL = len;
+
+       OUTPUT:
+       RETVAL
+
+SV *
+GETC(stream)
+       FCGI    stream;
+
+       PREINIT:
+       int     retval;
+
+       CODE:
+       if ((retval = FCGX_GetChar(stream)) != -1) {
+           ST(0) = sv_newmortal();
+           sv_setpvf(ST(0), "%c", retval);
+       } else ST(0) = &PL_sv_undef;
+
+bool
+CLOSE(stream)
+       FCGI    stream;
+
+       ALIAS:
+       DESTROY = 1
+
+       CODE:
+       RETVAL = FCGX_FClose(stream) != -1;
+
+       OUTPUT:
+       RETVAL
+
+#endif
+
+int
+accept()
+
+    PROTOTYPE:
+    CODE:
+    {
+        char **savedEnviron;
+        int acceptStatus;
+        /*
+         * Unmake Perl variable settings for the request just completed.
+         */
+        if(requestEnviron != NULL) {
+            DoPerlEnv(requestEnviron, FALSE);
+            requestEnviron = NULL;
+        }
+        /*
+         * Call FCGI_Accept but preserve environ.
+         */
+        savedEnviron = environ;
+        acceptStatus = FCGI_Accept();
+        requestEnviron = environ;
+        environ = savedEnviron;
+        /*
+         * Make Perl variable settings for the new request.
+         */
+        if(acceptStatus >= 0 && !FCGX_IsCGI()) {
+            DoPerlEnv(requestEnviron, TRUE);
+        } else {
+            requestEnviron = NULL;
+        }
+        RETVAL = acceptStatus;
+    }
+    OUTPUT:
+    RETVAL
+
+
+void
+finish()
+
+    PROTOTYPE:
+    CODE:
+    {
+        /*
+         * Unmake Perl variable settings for the completed request.
+         */
+        if(requestEnviron != NULL) {
+            DoPerlEnv(requestEnviron, FALSE);
+            requestEnviron = NULL;
+        }
+        /*
+         * Finish the request.
+         */
+        FCGI_Finish();
+    }
+
+
+void
+flush()
+
+    PROTOTYPE:
+    CODE:
+    FCGI_Flush();
+
+void
+set_exit_status(status)
+
+    int status;
+
+    PROTOTYPE: $
+    CODE:
+    FCGI_SetExitStatus(status);
+
+int
+start_filter_data()
+
+    PROTOTYPE:
+    CODE:
+    RETVAL = FCGI_StartFilterData();
+
+    OUTPUT:
+    RETVAL
diff --git a/perl/FCGI.pm b/perl/FCGI.pm
new file mode 100644 (file)
index 0000000..ee5dc98
--- /dev/null
@@ -0,0 +1,79 @@
+# $Id: FCGI.pm,v 1.1 1999/02/13 05:26:43 roberts Exp $
+
+package FCGI;
+
+require Exporter;
+require DynaLoader;
+
+@ISA = qw(Exporter DynaLoader);
+# Items to export into callers namespace by default. Note: do not export
+# names by default without a very good reason. Use EXPORT_OK instead.
+# Do not simply export all your public functions/methods/constants.
+@EXPORT = qw(
+       
+);
+
+$VERSION = '0.44';
+
+bootstrap FCGI;
+
+# Preloaded methods go here.
+
+# Autoload methods go after __END__, and are processed by the autosplit program.
+
+sub PRINTF {
+  shift->PRINT(sprintf(shift, @_));
+}
+
+1;
+
+=head1 NAME
+
+FCGI - Fast CGI module
+
+=head1 SYNOPSIS
+
+    use FCGI;
+
+    $count = 0;
+    while(FCGI::accept() >= 0) {
+       print("Content-type: text/html\r\n\r\n", ++$count);
+    }
+
+=head1 DESCRIPTION
+
+Functions:
+
+=over 4
+
+=item FCGI::accept()
+
+Accepts a connection. Returns 0 on success.
+If a connection has been accepted before, the old
+one will be finished first.
+
+=item FCGI::finish()
+
+Finishes accepted connection.
+
+=item FCGI::flush()
+
+Flushes accepted connection.
+
+=item FCGI::set_exit_status(status)
+
+Sets the exit status that finish returns to the server.
+
+=item FCGI::start_filter_data()
+
+Does anyone use this function ?
+
+=back
+
+=head1 AUTHOR
+
+Sven Verdoolaege <skimo@kotnet.org>
+
+=cut
+
+__END__
diff --git a/perl/MANIFEST b/perl/MANIFEST
new file mode 100644 (file)
index 0000000..e1f7ee1
--- /dev/null
@@ -0,0 +1,11 @@
+ChangeLog
+FCGI.pm
+FCGI.PL
+INSTALL
+MANIFEST
+Makefile.PL
+README
+echo.PL
+configure
+configure.in
+typemap
diff --git a/perl/Makefile.PL b/perl/Makefile.PL
new file mode 100644 (file)
index 0000000..5a15047
--- /dev/null
@@ -0,0 +1,94 @@
+# $Id: Makefile.PL,v 1.1 1999/02/13 05:26:44 roberts Exp $
+
+use ExtUtils::MakeMaker;
+use IO::File;
+use Config;
+use Cwd 'cwd';
+
+@h1 = qw(fastcgi.h fcgiapp.h fcgiappmisc.h fcgimisc.h fcgios.h);
+@h = (@h1, 'fcgi_config.h');
+@o = qw(FCGI.o);
+@dist1 = qw(LICENSE.TERMS acconfig.h);
+@dist2 = qw(fcgiapp.c os_unix.c os_win32.c);
+@dist3 = (@h1, qw(fcgi_config.h.in fcgi_config_x86.h));
+
+$devkit = cwd() . "/..";
+
+if (-d "$devkit/libfcgi/" && -f "$devkit/libfcgi/libfcgi.a"
+    && -d "$devkit/include" && !grep {!-f "$devkit/include/$_"} (@h)) 
+{
+    # devkit
+    $prefix = $devkit;
+    push @libs, "-L$devkit/libfcgi -lfcgi";
+} 
+else {
+    # CPAN  
+    for $dir ("/usr", "/usr/local") {
+        if (-d "$dir/lib/" && -f "$dir/lib/libfcgi.a" 
+               && -d "$dir/include" && !grep {!-f "$dir/include/$_"} (@h)) 
+        {
+            print "Found fcgi library and include files in $dir\n";
+            print "Will be using that instead of included files\n";
+            print "Edit Makefile.PL if you don't like it\n";
+            
+            $prefix = $dir;
+            push @libs, "-L$dir/lib -lfcgi"; 
+            last;
+        }
+    }
+}
+
+$sys = $^O eq 'MSWin32' ? 'win32' : 'unix';
+push @o, "fcgiapp.o", "os_$sys.o" unless $prefix;
+$inc = $prefix ? "-I$prefix/include" : '-I.';
+
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+WriteMakefile(
+    'NAME'             => 'FCGI',
+    'VERSION_FROM'     => 'FCGI.pm',
+    'LIBS'             => [ @libs ],
+    'OBJECT'   => "@o",
+    'INC'              => $inc,
+    'dist'             => { 'COMPRESS' => 'gzip -9f', 
+                            'SUFFIX' => 'gz',
+                            'PREOP' => '$(CP) '.join(' ',
+                               map {"../$_"} @dist1,
+                               (map {"libfcgi/$_"} @dist2),
+                               map {"include/$_"} @dist3).' $(DISTVNAME);'.
+                               '$(CP) MANIFEST MANIFEST.old;'.
+                               'echo -e '. join('\\\n',@dist1,@dist2,@dist3) .
+                               '>> $(DISTVNAME)/MANIFEST',
+                             'POSTOP' => 
+                               '$(MV) MANIFEST.old MANIFEST',
+                           },
+    'clean'            => { FILES => 'config.cache fcgi_config.h' },
+    'PL_FILES' => { 'echo.PL' => 'echo.fpl', 'FCGI.PL' => 'FCGI.xs' },
+);
+
+exit if -f 'fcgi_config.h' or $prefix;
+
+# CPAN and no installed lib found
+if ($sys eq "win32") {
+    # configure will almost certainly not run on a normal NT install,
+    # use the pregenerated configuration file
+
+    print "Using prebuilt fcgi_config.h file for Windows\n";
+    unlink("fcgi_config.h");
+    die $! unless rename("fcgi_config_x86.h","fcgi_config.h");
+
+    # Win build system also can't deal with existence of FCGI.xs or absence of
+    # FCGI.c
+    unlink("FCGI.xs");
+    open(F, ">FCGI.c"); close(F);
+    $now = time; $before = $now - 600;
+    utime $before, $before, "FCGI.c";
+    utime $now, $now, "FCGI.PL";
+
+} else {
+    print "Running ./configure for you\n";
+    print "Please read INSTALL for information on how to run it yourself\n";
+
+    $ENV{'CC'} = $Config{'cc'};
+    system("./configure");
+}
diff --git a/perl/README b/perl/README
new file mode 100644 (file)
index 0000000..4d4d75d
--- /dev/null
@@ -0,0 +1,52 @@
+$Id: README,v 1.1 1999/02/13 05:26:45 roberts Exp $
+
+    Copyright (c) 1996 Open Market, Inc.
+    See the file "LICENSE.TERMS" for information on usage and redistribution
+    of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+    Copyright (c) 1996-1998 Sven Verdoolaege
+    No additional restrictions/warranties.
+
+This is a Fast CGI module for perl. It's based on the FCGI module
+that comes with Open Market's FastCGI Developer's Kit, but does
+not require you to recompile perl.
+
+It even no longer requires perl to be compiled with sfio.
+The sfio version has had more testing though.
+To compile with sfio you'll need at least perl 5.003_02 and you'll have
+to have configured it with eg './Configure -Duseperlio -Dusesfio'.
+(See the INSTALL file that comes with the perl distribution.)
+To compile without sfio you'll need an even more recent perl version.
+(perl 5.004 and up should be fine.)
+
+See http://fastcgi.idle.com/ for more information about fastcgi.
+Lincoln D. Stein's perl CGI module also contains some information
+about fastcgi programming.
+
+See echo.fpl for an example on how to use this module.
+
+To install, do the usual
+
+perl Makefile.PL
+make
+make install
+
+If Makefile.PL finds an already installed (exported) fcgi library
+it will use that instead of the included files. Edit Makefile.PL
+if you don't want that or if it doesn't find them.
+
+To configure the library Makefile.PL will run ./configure .
+You may want to run it yourself beforehand because its findings
+may not always be correct.
+The INSTALL file describes how to run ./configure (and only that).
+
+If you're on a solaris system and your installed fcgi library is 2.02b
+or earlier, you'll probably want to use the included files.
+
+The FCGI module installs die and warn handlers that merely print
+the error/warning to STDERR (the default handlers print directly
+to stderr, which isn't redirected in the non sfio case). I'm not
+very happy with the result. Suggestions welcome.
+
+Sven Verdoolaege
+skimo@kotnet.org
diff --git a/perl/configure b/perl/configure
new file mode 100644 (file)
index 0000000..bdff057
--- /dev/null
@@ -0,0 +1,1726 @@
+#! /bin/sh
+
+# $Id: configure,v 1.1 1999/02/13 05:26:45 roberts Exp $
+
+# Guess values for system-dependent variables and create Makefiles.
+# Generated automatically using autoconf version 2.12 
+# 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:
+
+# 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=
+# 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.12"
+    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=fcgiapp.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 $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+  # Stardent Vistra SVR4 grep lacks -e, says ghazi@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
+
+
+#--------------------------------------------------------------------
+#  Perform common OMI configuration. This will include:
+#      1) Choosing compiler and associated build options.
+#      2) Checking for various common build associated programs.
+#      3) Determining the best build options for this platform.
+#      4) Checking for certain common header files.
+#      5) Checking for exports/global switch.
+#      6) Importing OMI dependencies (header files, libraries, and binaries).
+#       7) Checking for existence of various system libraries and routines.
+#--------------------------------------------------------------------
+
+# 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:536: 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="${IFS}:"
+  for ac_dir in $PATH; 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:565: 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="${IFS}:"
+  ac_prog_rejected=no
+  for ac_dir in $PATH; 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
+
+  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:613: 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 $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+cat > conftest.$ac_ext <<EOF
+#line 623 "configure"
+#include "confdefs.h"
+main(){return(0);}
+EOF
+if { (eval echo configure:627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; 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*
+
+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:647: 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:652: 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:661: \"$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
+  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:676: 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
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-O2"
+  fi
+else
+  GCC=
+  test "${CFLAGS+set}" = set || CFLAGS="-g"
+fi
+
+
+echo $ac_n "checking for sun_len in sys/un.h""... $ac_c" 1>&6
+echo "configure:705: checking for sun_len in sys/un.h" >&5
+echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
+echo "configure:707: 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 722 "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:728: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+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 739 "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:745: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+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*
+  ac_cv_prog_CPP="$CPP"
+fi
+  CPP="$ac_cv_prog_CPP"
+else
+  ac_cv_prog_CPP="$CPP"
+fi
+echo "$ac_t""$CPP" 1>&6
+
+cat > conftest.$ac_ext <<EOF
+#line 768 "configure"
+#include "confdefs.h"
+#include <sys/un.h>
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "sun_len" >/dev/null 2>&1; then
+  rm -rf conftest*
+  echo "$ac_t""yes" 1>&6
+   cat >> confdefs.h <<\EOF
+#define HAVE_SOCKADDR_UN_SUN_LEN 1
+EOF
+
+else
+  rm -rf conftest*
+  echo "$ac_t""no" 1>&6
+fi
+rm -f conftest*
+
+
+#--------------------------------------------------------------------
+#  What extra libraries do we need for this platform?
+#--------------------------------------------------------------------
+
+for ac_func in strerror strtol
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:794: 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 799 "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:822: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; 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 strerror strtol
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:850: 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 855 "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:878: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; 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
+LIBOBJS="$LIBOBJS ${ac_func}.o"
+fi
+done
+
+
+
+#--------------------------------------------------------------------
+#       Include sys/select.h if it exists and if it supplies things
+#       that appear to be useful and aren't already in sys/types.h.
+#       This appears to be true only on the RS/6000 under AIX.  Some
+#       systems like OSF/1 have a sys/select.h that's of no use, and
+#       other systems like SCO UNIX have a sys/select.h that's
+#       pernicious.  If "fd_set" isn't defined anywhere then set a
+#       special flag.
+#--------------------------------------------------------------------
+
+echo $ac_n "checking for fd_set in in sys/types.h""... $ac_c" 1>&6
+echo "configure:916: checking for fd_set in in sys/types.h" >&5
+cat > conftest.$ac_ext <<EOF
+#line 918 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int main() {
+fd_set readMask, writeMask;
+; return 0; }
+EOF
+if { (eval echo configure:925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  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
+   echo $ac_n "checking for fd_mask in in sys/select.h""... $ac_c" 1>&6
+echo "configure:934: checking for fd_mask in in sys/select.h" >&5
+   cat > conftest.$ac_ext <<EOF
+#line 936 "configure"
+#include "confdefs.h"
+#include <sys/select.h>
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "fd_mask" >/dev/null 2>&1; then
+  rm -rf conftest*
+  echo "$ac_t""yes" 1>&6
+      cat >> confdefs.h <<\EOF
+#define HAVE_SYS_SELECT_H 1
+EOF
+
+else
+  rm -rf conftest*
+  echo "$ac_t""no" 1>&6
+      cat >> confdefs.h <<\EOF
+#define NO_FD_SET 1
+EOF
+
+fi
+rm -f conftest*
+
+fi
+rm -f conftest*
+
+echo $ac_n "checking for fpos in stdio.h""... $ac_c" 1>&6
+echo "configure:962: checking for fpos in stdio.h" >&5
+cat > conftest.$ac_ext <<EOF
+#line 964 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "fpos_t" >/dev/null 2>&1; then
+  rm -rf conftest*
+  echo "$ac_t""yes" 1>&6
+   cat >> confdefs.h <<\EOF
+#define HAVE_FPOS 1
+EOF
+
+else
+  rm -rf conftest*
+  echo "$ac_t""no" 1>&6
+fi
+rm -f conftest*
+
+
+for ac_hdr in windows.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:987: 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 992 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:997: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+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_hdr in sys/socket.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:1027: 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 1032 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1037: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+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_hdr in winsock.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:1067: 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 1072 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1077: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+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_hdr in netdb.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:1107: 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 1112 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1117: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+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_hdr in netinet/in.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:1147: 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 1152 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1157: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+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_hdr in arpa/inet.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:1187: 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 1192 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1197: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+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_hdr in strings.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:1227: 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 1232 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1237: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+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_hdr in sys/time.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:1267: 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 1272 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1277: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+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
+
+
+#--------------------------------------------------------------------
+#  Do we need cross-process locking on this platform?
+#--------------------------------------------------------------------
+echo $ac_n "checking "if this machine needs cross-process locking"""... $ac_c" 1>&6
+echo "configure:1308: checking "if this machine needs cross-process locking"" >&5
+case "`uname -sr`" in
+    IRIX\ 5.*) 
+       cat >> confdefs.h <<\EOF
+#define USE_LOCKING 1
+EOF
+
+       echo "$ac_t""yes" 1>&6
+    ;;
+    SunOS\ 5.*)        
+       cat >> confdefs.h <<\EOF
+#define USE_LOCKING 1
+EOF
+
+       echo "$ac_t""yes" 1>&6
+    ;;
+    UNIX_System_V\ 4.0)
+       cat >> confdefs.h <<\EOF
+#define USE_LOCKING 1
+EOF
+
+       echo "$ac_t""yes" 1>&6
+    ;;
+    *)
+       echo "$ac_t""no" 1>&6
+    ;;
+esac
+
+#--------------------------------------------------------------------
+#  Does va_arg(arg, long double) crash the compiler?
+#  hpux 9.04 compiler does and so does Stratus FTX (uses HP's compiler)
+#--------------------------------------------------------------------
+echo $ac_n "checking if va_arg(arg, long double) crashes the compiler""... $ac_c" 1>&6
+echo "configure:1341: checking if va_arg(arg, long double) crashes the compiler" >&5
+cat > conftest.$ac_ext <<EOF
+#line 1343 "configure"
+#include "confdefs.h"
+#include <stdarg.h>
+int main() {
+long double lDblArg; va_list arg; lDblArg = va_arg(arg, long double);
+; return 0; }
+EOF
+if { (eval echo configure:1350: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  echo "$ac_t""no" 1>&6
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  cat >> confdefs.h <<\EOF
+#define HAVE_VA_ARG_LONG_DOUBLE_BUG 1
+EOF
+
+   echo "$ac_t""yes" 1>&6
+fi
+rm -f conftest*
+
+#--------------------------------------------------------------------
+#  What's the target system?
+#--------------------------------------------------------------------
+case "$PLATFORM_CLASS" in
+    WINDOWS)   
+       SYSTEM="win32"
+    ;;
+    UNIX)      
+       SYSTEM="unix"
+    ;;
+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) 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.12"
+    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
+
+trap 'rm -fr `echo " fcgi_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%@CFLAGS@%$CFLAGS%g
+s%@CPPFLAGS@%$CPPFLAGS%g
+s%@CXXFLAGS@%$CXXFLAGS%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%@CPP@%$CPP%g
+s%@LIBOBJS@%$LIBOBJS%g
+s%@SYSTEM@%$SYSTEM%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-""}
+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
+
+
+  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
+" $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="fcgi_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
+
diff --git a/perl/configure.in b/perl/configure.in
new file mode 100644 (file)
index 0000000..5b7b372
--- /dev/null
@@ -0,0 +1,122 @@
+dnl     $Id: configure.in,v 1.1 1999/02/13 05:26:46 roberts Exp $
+dnl
+dnl     This file is an input file used by the GNU "autoconf" program to
+dnl     generate the file "configure", which is run during the build
+dnl     to configure the system for the local environment.
+dnl
+
+AC_INIT(fcgiapp.c)
+#--------------------------------------------------------------------
+#  Perform common OMI configuration. This will include:
+#      1) Choosing compiler and associated build options.
+#      2) Checking for various common build associated programs.
+#      3) Determining the best build options for this platform.
+#      4) Checking for certain common header files.
+#      5) Checking for exports/global switch.
+#      6) Importing OMI dependencies (header files, libraries, and binaries).
+#       7) Checking for existence of various system libraries and routines.
+#--------------------------------------------------------------------
+
+AC_PROG_CC
+AC_CONFIG_HEADER(fcgi_config.h)
+AC_MSG_CHECKING(for sun_len in sys/un.h)
+AC_EGREP_HEADER(sun_len,
+   sys/un.h,
+   AC_MSG_RESULT(yes)
+   AC_DEFINE(HAVE_SOCKADDR_UN_SUN_LEN),
+   AC_MSG_RESULT(no))
+
+#--------------------------------------------------------------------
+#  What extra libraries do we need for this platform?
+#--------------------------------------------------------------------
+
+AC_CHECK_FUNCS(strerror strtol)
+
+AC_REPLACE_FUNCS(strerror strtol)
+
+#--------------------------------------------------------------------
+#       Include sys/select.h if it exists and if it supplies things
+#       that appear to be useful and aren't already in sys/types.h.
+#       This appears to be true only on the RS/6000 under AIX.  Some
+#       systems like OSF/1 have a sys/select.h that's of no use, and
+#       other systems like SCO UNIX have a sys/select.h that's
+#       pernicious.  If "fd_set" isn't defined anywhere then set a
+#       special flag.
+#--------------------------------------------------------------------
+
+AC_MSG_CHECKING(for fd_set in in sys/types.h)
+AC_TRY_LINK([#include <sys/types.h>],
+   [fd_set readMask, writeMask;],
+   AC_MSG_RESULT(yes),
+   AC_MSG_RESULT(no)
+   AC_MSG_CHECKING(for fd_mask in in sys/select.h)
+   AC_HEADER_EGREP(fd_mask,
+      sys/select.h,
+      AC_MSG_RESULT(yes)
+      AC_DEFINE(HAVE_SYS_SELECT_H),
+      AC_MSG_RESULT(no)
+      AC_DEFINE(NO_FD_SET)))
+
+AC_MSG_CHECKING(for fpos in stdio.h)
+AC_EGREP_HEADER(fpos_t,
+   stdio.h,
+   AC_MSG_RESULT(yes)
+   AC_DEFINE(HAVE_FPOS),
+   AC_MSG_RESULT(no))
+
+AC_HAVE_HEADERS(windows.h)
+AC_HAVE_HEADERS(sys/socket.h)
+AC_HAVE_HEADERS(winsock.h)
+AC_HAVE_HEADERS(netdb.h)
+AC_HAVE_HEADERS(netinet/in.h)
+AC_HAVE_HEADERS(arpa/inet.h)
+AC_HAVE_HEADERS(strings.h)
+AC_HAVE_HEADERS(sys/time.h)
+
+#--------------------------------------------------------------------
+#  Do we need cross-process locking on this platform?
+#--------------------------------------------------------------------
+AC_MSG_CHECKING("if this machine needs cross-process locking")
+case "`uname -sr`" in
+    IRIX\ 5.*) 
+       AC_DEFINE(USE_LOCKING)
+       AC_MSG_RESULT(yes)
+    ;;
+    SunOS\ 5.*)        
+       AC_DEFINE(USE_LOCKING)
+       AC_MSG_RESULT(yes)
+    ;;
+    UNIX_System_V\ 4.0)
+       AC_DEFINE(USE_LOCKING)
+       AC_MSG_RESULT(yes)
+    ;;
+    *)
+       AC_MSG_RESULT(no)
+    ;;
+esac
+
+#--------------------------------------------------------------------
+#  Does va_arg(arg, long double) crash the compiler?
+#  hpux 9.04 compiler does and so does Stratus FTX (uses HP's compiler)
+#--------------------------------------------------------------------
+AC_MSG_CHECKING(if va_arg(arg, long double) crashes the compiler)
+AC_TRY_COMPILE([#include <stdarg.h>],
+   [long double lDblArg; va_list arg; lDblArg = va_arg(arg, long double);],
+   AC_MSG_RESULT(no),
+   AC_DEFINE(HAVE_VA_ARG_LONG_DOUBLE_BUG)
+   AC_MSG_RESULT(yes))
+
+#--------------------------------------------------------------------
+#  What's the target system?
+#--------------------------------------------------------------------
+case "$PLATFORM_CLASS" in
+    WINDOWS)   
+       SYSTEM="win32"
+    ;;
+    UNIX)      
+       SYSTEM="unix"
+    ;;
+esac
+
+AC_SUBST(SYSTEM)
+AC_OUTPUT()
diff --git a/perl/configure.readme b/perl/configure.readme
new file mode 100644 (file)
index 0000000..1265314
--- /dev/null
@@ -0,0 +1,185 @@
+$Id: configure.readme,v 1.1 1999/02/13 05:26:47 roberts Exp $
+
+Basic Installation
+==================
+
+   These are generic installation instructions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+   The file `configure.in' is used to create `configure' by a program
+called `autoconf'.  You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.  If you're
+     using `csh' on an old version of System V, you might need to type
+     `sh ./configure' instead to prevent `csh' from trying to execute
+     `configure' itself.
+
+     Running `configure' takes awhile.  While running, it prints some
+     messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.
+
+  5. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  You can give `configure'
+initial values for variables by setting them in the environment.  Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+   If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory.  After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+   By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc.  You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on.  Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+     CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+   If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+     Use and save the results of the tests in FILE instead of
+     `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
+     debugging `configure'.
+
+`--help'
+     Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`--version'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/perl/echo.PL b/perl/echo.PL
new file mode 100644 (file)
index 0000000..d8dc899
--- /dev/null
@@ -0,0 +1,66 @@
+use Config;
+
+open OUT, ">echo.fpl";
+print OUT "#!$Config{perlpath}\n";
+print OUT while <DATA>;
+close OUT;
+chmod 0755, "echo.fpl";
+__END__
+#
+#  echo-perl --
+# 
+#      Produce a page containing all FastCGI inputs
+# 
+# Copyright (c) 1996 Open Market, Inc.
+#
+# See the file "LICENSE.TERMS" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# 
+#  $Id: echo.PL,v 1.1 1999/02/13 05:26:47 roberts Exp $
+#
+# Changed by skimo to demostrate autoflushing 1997/02/19
+#
+
+use FCGI;
+
+sub print_env {
+    my($label, $envp) = @_;
+    print("$label:<br>\n<pre>\n");
+    my @keys = sort keys(%$envp);
+    foreach $key (@keys) {
+        print("$key=$$envp{$key}\n");
+    }
+    print("</pre><p>\n");
+}
+
+while (($key, $val) = each %ENV) {
+    $initialEnv{$key} = $val;
+}
+$count = 0;
+while(FCGI::accept() >= 0) {
+    print("Content-type: text/html\r\n\r\n",
+          "<title>FastCGI echo (Perl)</title>\n",
+          "<h1>FastCGI echo (Perl)</h1>\n",
+          "Request number ", ++$count, "<p>\n");
+    $len = 0 + $ENV{'CONTENT_LENGTH'};
+    if($len == 0) {
+        print("No data from standard input.<p>\n");
+    } else {
+        print("Standard input:<br>\n<pre>\n");
+        for($i = 0; $i < $len; $i++) {
+            $ch = getc(STDIN);
+            if($ch eq "") {
+                print("Error: Not enough bytes received ",
+                      "on standard input<p>\n");
+                last;
+           }
+            print($ch);
+        }
+        print("\n</pre><p>\n");
+    }
+    print_env("Request environment", \%ENV);
+    print "More on its way ... wait a few seconds\n<BR>\n<BR>";
+    FCGI::flush();
+    sleep(3);
+    print_env("Initial environment", \%initialEnv);
+}
diff --git a/perl/typemap b/perl/typemap
new file mode 100644 (file)
index 0000000..ce9cd7b
--- /dev/null
@@ -0,0 +1,9 @@
+TYPEMAP
+FCGI   T_FCGIOBJNOMUNGE
+
+INPUT
+T_FCGIOBJNOMUNGE
+    if (sv_isa($arg, \"FCGI\")) {
+       $var = ($type) SvIV((SV*)SvRV($arg));
+    } else
+       croak(\"$var is not of type ${ntype}\")