Index: cgicc/AUTHORS
diff -c cgicc/AUTHORS:1.2 cgicc/AUTHORS:1.3
*** cgicc/AUTHORS:1.2   Fri Jun  4 15:19:14 1999
--- cgicc/AUTHORS       Fri Apr  7 21:44:25 2000
***************
*** 2,4 ****
--- 2,5 ----
 ====================

 Stephen F. Booth.  Designed and implemented Cgicc.
+
Index: cgicc/ChangeLog
diff -c cgicc/ChangeLog:1.44 cgicc/ChangeLog:1.50
*** cgicc/ChangeLog:1.44        Thu Sep 30 11:18:53 1999
--- cgicc/ChangeLog     Mon Apr 10 18:39:24 2000
***************
*** 1,3 ****
--- 1,35 ----
+ 2000-04-10  Stephen F. Booth  <[email protected]>
+
+       * Makefile.am: Added new dist-bzip2 target
+       * support/cgicc.spec.in: Fix typo
+       * example/Makefile.in: Use -rpath style as default
+       * example/README: Update for Makefile changes
+
+ 2000-04-07  Stephen F. Booth  <[email protected]>
+
+       * cgicc/CgiEnvironment.cpp(CgiEnvironment): Use binary read mode on
+       Win32 to prevent CR/LF conversion
+       * NEWS: Added items on multipart/form-data and Win32 CR/LF bugs
+       * configure.in: Updated version to 3.1.2
+       * cgicc/Makefile.am: Up libtool version to 2:1:1
+       * README.WIN: Removed note about MS IIS 4.0 (unnecessary)
+       * support/cgicc.spec.in: New file
+
+ 1999-10-05  Stephen F. Booth  <[email protected]>
+
+       * cgicc/CgiDefs.h.in: Include "config.h", not "cgicc/config.h"
+       * example/Makefile.in: Fix -rpath opton for Linux
+
+ 1999-10-02  Stephen F. Booth  <[email protected]>
+
+       * cgicc/Cgicc.cpp(parseFormInput): Fixed handling of
+       "multipart/form-data" to correctly extract the final item
+       (bug reported by [email protected])
+
+ 1999-10-01  Stephen F. Booth  <[email protected]>
+
+       * README.WIN: Added a note about MS IIS 4.0
+
 1999-09-30  Stephen F. Booth  <[email protected]>

       * info/Makefile.am: Added rules to generate HTML (texinfo-4.0)
Index: cgicc/Makefile.am
diff -c cgicc/Makefile.am:1.19 cgicc/Makefile.am:1.21
*** cgicc/Makefile.am:1.19      Mon Aug  9 17:12:53 1999
--- cgicc/Makefile.am   Mon Apr 10 18:39:07 2000
***************
*** 1,6 ****
! ## $Id: Makefile.am,v 1.19 1999/08/10 00:12:53 sbooth Exp $

! AUTOMAKE_OPTIONS = check-news dist-zip

 if DEMOS
 DEMO = demo
--- 1,6 ----
! ## $Id: Makefile.am,v 1.21 2000/04/11 01:39:07 sbooth Exp $

! AUTOMAKE_OPTIONS = check-news dist-zip dist-bzip2

 if DEMOS
 DEMO = demo
***************
*** 28,33 ****
--- 28,34 ----
       cp -p $(srcdir)/support/mdate-sh $(distdir)/support
       cp -p $(srcdir)/support/missing $(distdir)/support
       cp -p $(srcdir)/support/mkinstalldirs $(distdir)/support
+       cp -p $(srcdir)/support/cgicc.spec.in $(distdir)/support
       test -d $(distdir)/win || mkdir $(distdir)/win || exit 1
       cp -p $(srcdir)/win/cgicc.dsw $(distdir)/win
       cp -p $(srcdir)/win/cgicc.dsp $(distdir)/win
Index: cgicc/NEWS
diff -c cgicc/NEWS:1.15 cgicc/NEWS:1.16
*** cgicc/NEWS:1.15     Thu Sep 30 11:18:20 1999
--- cgicc/NEWS  Fri Apr  7 21:49:28 2000
***************
*** 5,10 ****
--- 5,22 ----
         <[email protected]>
 ======================================================================

+         Major changes between versions 3.1.1 and 3.1.2
+         ----------------------------------------------
+
+ * Fixed bug in multipart/form-data handling that caused the last form element
+   to be ignored
+
+ * Fixed Win32 bug that caused indefinite hangs with MS IIS 4.0 (due to CR/LF
+   conversion on read)
+
+ * Now distributed in bzip2 and rpm format, in addition to gzipped tar
+
+
         Major changes between versions 3.1 and 3.1.1
         --------------------------------------------

***************
*** 65,67 ****
--- 77,80 ----
   of linking to an external stylesheet.

 * Released as part of the GNU project under the GPL.
+
Index: cgicc/README
diff -c cgicc/README:1.8 cgicc/README:1.9
*** cgicc/README:1.8    Fri Aug  6 17:26:19 1999
--- cgicc/README        Fri Apr  7 21:47:44 2000
***************
*** 26,28 ****
--- 26,29 ----
 info/      Complete documentation for Cgicc in texinfo format
 demo/      Two demonstration applications using Cgicc
 example/   A skeleton CGI application using Cgicc
+
Index: cgicc/README.WIN
diff -c cgicc/README.WIN:1.3 cgicc/README.WIN:1.5
*** cgicc/README.WIN:1.3        Mon Aug 16 16:59:46 1999
--- cgicc/README.WIN    Fri Apr  7 21:48:51 2000
***************
*** 18,21 ****
 exported, since Cgicc does not import the .DEF file.
 These warnings may be safely ignored.

-
--- 18,20 ----
Index: cgicc/THANKS
diff -c cgicc/THANKS:1.3 cgicc/THANKS:1.4
*** cgicc/THANKS:1.3    Mon Aug 16 16:46:28 1999
--- cgicc/THANKS        Fri Apr  7 21:44:25 2000
***************
*** 2,4 ****
--- 2,5 ----
 ==================

 Christof Danzl, for his HTML generation classes and feedback.
+
Index: cgicc/configure.in
diff -c cgicc/configure.in:1.22 cgicc/configure.in:1.23
*** cgicc/configure.in:1.22     Tue Aug 31 10:38:11 1999
--- cgicc/configure.in  Fri Apr  7 21:43:54 2000
***************
*** 1,11 ****
 dnl -*-m4-*-
! dnl $Id: configure.in,v 1.22 1999/08/31 17:38:11 sbooth Exp $

 dnl Process this file with autoconf to produce a configure script.
! AC_REVISION($Revision: 1.22 $)
 AC_INIT(cgicc/Cgicc.cpp)
 AC_CONFIG_AUX_DIR(support)
! AM_INIT_AUTOMAKE(cgicc, 3.1.1)
 AM_CONFIG_HEADER(cgicc/config.h)
 AM_MAINTAINER_MODE

--- 1,11 ----
 dnl -*-m4-*-
! dnl $Id: configure.in,v 1.23 2000/04/08 04:43:54 sbooth Exp $

 dnl Process this file with autoconf to produce a configure script.
! AC_REVISION($Revision: 1.23 $)
 AC_INIT(cgicc/Cgicc.cpp)
 AC_CONFIG_AUX_DIR(support)
! AM_INIT_AUTOMAKE(cgicc, 3.1.2)
 AM_CONFIG_HEADER(cgicc/config.h)
 AM_MAINTAINER_MODE

***************
*** 87,91 ****
 AM_CONDITIONAL(DEMOS, test "$demos" = true)

 AC_OUTPUT([Makefile cgicc/Makefile cgicc/CgiDefs.h info/Makefile demo/Makefile
!       example/Makefile])

--- 87,91 ----
 AM_CONDITIONAL(DEMOS, test "$demos" = true)

 AC_OUTPUT([Makefile cgicc/Makefile cgicc/CgiDefs.h info/Makefile demo/Makefile
!       example/Makefile support/cgicc.spec])

Index: cgicc/cgicc/CgiDefs.h.in
diff -c cgicc/cgicc/CgiDefs.h.in:1.4 cgicc/cgicc/CgiDefs.h.in:1.5
*** cgicc/cgicc/CgiDefs.h.in:1.4        Tue Aug 17 10:16:07 1999
--- cgicc/cgicc/CgiDefs.h.in    Tue Oct  5 09:16:07 1999
***************
*** 1,6 ****
 /* -*-c++-*- */
 /*
!  *  $Id: CgiDefs.h.in,v 1.4 1999/08/17 17:16:07 sbooth Exp $
  *
  *  Copyright (C) 1996, 1997, 1998, 1999 Stephen F. Booth
  *
--- 1,6 ----
 /* -*-c++-*- */
 /*
!  *  $Id: CgiDefs.h.in,v 1.5 1999/10/05 16:16:07 sbooth Exp $
  *
  *  Copyright (C) 1996, 1997, 1998, 1999 Stephen F. Booth
  *
***************
*** 24,30 ****

 // Include information from configure
 #if HAVE_CONFIG_H
! #  include "cgicc/config.h"
 #endif

 // Win32-specific setup
--- 24,30 ----

 // Include information from configure
 #if HAVE_CONFIG_H
! #  include "config.h"
 #endif

 // Win32-specific setup
Index: cgicc/cgicc/CgiEnvironment.cpp
diff -c cgicc/cgicc/CgiEnvironment.cpp:1.1 cgicc/cgicc/CgiEnvironment.cpp:1.2
*** cgicc/cgicc/CgiEnvironment.cpp:1.1  Mon Aug  9 11:25:30 1999
--- cgicc/cgicc/CgiEnvironment.cpp      Fri Apr  7 21:43:19 2000
***************
*** 1,5 ****
 /*
!  *  $Id: CgiEnvironment.cpp,v 1.1 1999/08/09 18:25:30 sbooth Exp $
  *
  *  Copyright (C) 1996, 1997, 1998, 1999 Stephen F. Booth
  *
--- 1,5 ----
 /*
!  *  $Id: CgiEnvironment.cpp,v 1.2 2000/04/08 04:43:19 sbooth Exp $
  *
  *  Copyright (C) 1996, 1997, 1998, 1999 Stephen F. Booth
  *
***************
*** 27,32 ****
--- 27,37 ----
 #include <stdexcept>
 #include <cstdlib>

+ #ifdef WIN32
+ #include <io.h>
+ #include <fctrl.h>
+ #endif
+
 #include "cgicc/CgiEnvironment.h"

 // ========== Constructor/Destructor
***************
*** 36,41 ****
--- 41,51 ----
   LOGLN("CgiEnvironment::CgiEnvironment")

   readEnvironmentVariables();
+
+   // On Win32, use binary read to avoid CRLF conversion
+ #ifdef WIN32
+   _setmode(_fileno(stdin), _O_BINARY);
+ #endif

   if(stringsAreEqual( getRequestMethod(), "get")) {
     LOGLN("GET method recognized")
Index: cgicc/cgicc/Cgicc.cpp
diff -c cgicc/cgicc/Cgicc.cpp:1.4 cgicc/cgicc/Cgicc.cpp:1.5
*** cgicc/cgicc/Cgicc.cpp:1.4   Thu Sep 30 10:38:19 1999
--- cgicc/cgicc/Cgicc.cpp       Sat Oct  2 12:10:10 1999
***************
*** 1,5 ****
 /*
!  *  $Id: Cgicc.cpp,v 1.4 1999/09/30 17:38:19 sbooth Exp $
  *
  *  Copyright (C) 1996, 1997, 1998, 1999 Stephen F. Booth
  *
--- 1,5 ----
 /*
!  *  $Id: Cgicc.cpp,v 1.5 1999/10/02 19:10:10 sbooth Exp $
  *
  *  Copyright (C) 1996, 1997, 1998, 1999 Stephen F. Booth
  *
***************
*** 381,386 ****
--- 381,387 ----
     while(true) {
       pos = data.find(sep, oldPos);

+       // If sep wasn't found, the rest of the data is an item
       if(pos == STDNS string::npos)
       break;

***************
*** 389,394 ****
--- 390,402 ----

       // update position
       oldPos = pos + sepLen;
+     }
+
+     // The data is terminated by sep2
+     pos = data.find(sep2, oldPos);
+     // parse the data, if found
+     if(pos != STDNS string::npos) {
+       parseMIME(data.substr(oldPos, pos - oldPos));
     }
   }
   else if(! data.empty()) {
Index: cgicc/cgicc/Makefile.am
diff -c cgicc/cgicc/Makefile.am:1.8 cgicc/cgicc/Makefile.am:1.9
*** cgicc/cgicc/Makefile.am:1.8 Tue Aug 31 10:40:47 1999
--- cgicc/cgicc/Makefile.am     Fri Apr  7 21:46:46 2000
***************
*** 1,4 ****
! ## $Id: Makefile.am,v 1.8 1999/08/31 17:40:47 sbooth Exp $

 CLEANFILES = *~

--- 1,4 ----
! ## $Id: Makefile.am,v 1.9 2000/04/08 04:46:46 sbooth Exp $

 CLEANFILES = *~

***************
*** 8,14 ****
 libcgicc_la_SOURCES = CgiEnvironment.cpp CgiUtils.cpp Cgicc.cpp       \
 FormEntry.cpp FormFile.cpp HTMLAttributes.cpp HTMLElements.cpp        \
 HTTPHeaders.cpp MStreamable.cpp
! libcgicc_la_LDFLAGS = -version-info 2:0:1

 pkginclude_HEADERS = CgiDefs.h CgiEnvironment.h CgiUtils.h Cgicc.h    \
 FormEntry.h FormFile.h HTMLAttributes.h HTMLClasses.h HTMLElements.h  \
--- 8,14 ----
 libcgicc_la_SOURCES = CgiEnvironment.cpp CgiUtils.cpp Cgicc.cpp       \
 FormEntry.cpp FormFile.cpp HTMLAttributes.cpp HTMLElements.cpp        \
 HTTPHeaders.cpp MStreamable.cpp
! libcgicc_la_LDFLAGS = -version-info 2:1:1

 pkginclude_HEADERS = CgiDefs.h CgiEnvironment.h CgiUtils.h Cgicc.h    \
 FormEntry.h FormFile.h HTMLAttributes.h HTMLClasses.h HTMLElements.h  \
Index: cgicc/example/Makefile.in
diff -c cgicc/example/Makefile.in:1.11 cgicc/example/Makefile.in:1.13
*** cgicc/example/Makefile.in:1.11      Tue Aug 10 15:13:17 1999
--- cgicc/example/Makefile.in   Mon Apr 10 18:37:34 2000
***************
*** 1,5 ****
 ##
! ##  $Id: Makefile.in,v 1.11 1999/08/10 22:13:17 sbooth Exp $
 ##
 ##  Copyright (C) 1996, 1997, 1998, 1999 Stephen F. Booth
 ##
--- 1,5 ----
 ##
! ##  $Id: Makefile.in,v 1.13 2000/04/11 01:37:34 sbooth Exp $
 ##
 ##  Copyright (C) 1996, 1997, 1998, 1999 Stephen F. Booth
 ##
***************
*** 51,61 ****

 INCLUDES=     -I$(includedir)

! ## On Solaris (probably SVR4 systems), use -R
! LD_FLAGS=     @LDFLAGS@ -R$(libdir)

! ## On Linux (probably BSD systems), use -rpath
! #LD_FLAGS=    @LDFLAGS@ -rpath$(libdir)

 CXXFLAGS=     @CXXFLAGS@
 CPPFLAGS=     @CPPFLAGS@
--- 51,61 ----

 INCLUDES=     -I$(includedir)

! ## On Linux use -rpath
! LD_FLAGS=     @LDFLAGS@ -Wl,-rpath=$(libdir)

! ## On Solaris (probably SVR4 systems), use -R
! #LD_FLAGS=    @LDFLAGS@ -R$(libdir)

 CXXFLAGS=     @CXXFLAGS@
 CPPFLAGS=     @CPPFLAGS@
Index: cgicc/example/README
diff -c cgicc/example/README:1.3 cgicc/example/README:1.4
*** cgicc/example/README:1.3    Wed May  5 11:31:28 1999
--- cgicc/example/README        Mon Apr 10 18:37:34 2000
***************
*** 4,10 ****
 This directory contains skeleton code and a supporting Makefile for a
 CGI application using Cgicc, tailored to the installation environment.

! If you are using Linux or a BSD-style Unix, you'll need to uncomment
! line 60 in the Makefile, and comment out (using '#') line 57.  This is
 due to the different methods of embedding a runtime search path on
 different flavors of Unix.
--- 4,11 ----
 This directory contains skeleton code and a supporting Makefile for a
 CGI application using Cgicc, tailored to the installation environment.

! If you are using Solaris or an SVR4-style Unix, you'll need to uncomment
! line 59 in the Makefile, and comment out (using '#') line 56.  This is
 due to the different methods of embedding a runtime search path on
 different flavors of Unix.
+
Index: cgicc/info/version.texi
diff -c cgicc/info/version.texi:1.13 cgicc/info/version.texi:1.14
*** cgicc/info/version.texi:1.13        Thu Sep 30 11:19:25 1999
--- cgicc/info/version.texi     Fri Apr  7 21:47:15 2000
***************
*** 1,3 ****
 @set UPDATED 30 September 1999
! @set EDITION 3.1.1
! @set VERSION 3.1.1
--- 1,3 ----
 @set UPDATED 30 September 1999
! @set EDITION 3.1.2
! @set VERSION 3.1.2
Index: cgicc/support/cgicc.spec.in
diff -c /dev/null cgicc/support/cgicc.spec.in:1.2
*** /dev/null   Mon Apr 10 18:52:48 2000
--- cgicc/support/cgicc.spec.in Mon Apr 10 18:27:29 2000
***************
*** 0 ****
--- 1,93 ----
+ ## -*-sh-*-
+ ## $Id: cgicc.spec.in,v 1.2 2000/04/11 01:27:29 sbooth Exp $
+
+ ## Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+ ## This file is free software; the Free Software Foundation
+ ## gives unlimited permission to copy and/or distribute it,
+ ## with or without modifications, as long as this notice is preserved.
+
+ ## This program is distributed in the hope that it will be useful,
+ ## but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+ ## even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ ## PARTICULAR PURPOSE.
+
+ ## Macros defined by autoconf
+ %define name @PACKAGE@
+ %define version @VERSION@
+
+ Summary: A C++ class library for developing CGI applications
+ Name: %{name}
+ Version: %{version}
+ Release: 1
+ Copyright: GPL
+ Group: Development/Libraries
+ Source: ftp://ftp.gnu.org:/gnu/software/cgicc/%{name}-%{version}.tar.gz
+ URL: http://www.lmi.net/~sbooth/cgicc/
+ Vendor: Stephen F. Booth
+
+ %description
+ GNU Cgicc is an ANSI C++ compliant class library that greatly
+ simplifies the creation of CGI applications for the World Wide
+ Web. Cgicc performs the following functions:
+
+  - Parses both GET and POST form data transparently.
+  - Provides string, integer, floating-point and single- and
+    multiple-choice retrieval methods for form data.
+  - Provides methods for saving and restoring CGI environments to aid
+    in application debugging.
+  - Provides full on-the-fly HTML 4.0 generation capabilities, with support
+    for cookies.
+  - Supports HTTP file upload.
+
+ %prep
+ %setup
+
+ %build
+ %configure
+ make
+
+ %install
+ make install
+
+ #%post
+ #/sbin/ldconfig
+
+ %files
+
+ ## Documenation
+ #%{_prefix}/doc/%{name}-%{version}/INSTALL
+ %{_prefix}/doc/%{name}-%{version}/README
+ %{_prefix}/doc/%{name}-%{version}/AUTHORS
+ %{_prefix}/doc/%{name}-%{version}/COPYING
+ %{_prefix}/doc/%{name}-%{version}/NEWS
+ %{_prefix}/doc/%{name}-%{version}/ChangeLog
+ %{_prefix}/doc/%{name}-%{version}/THANKS
+
+ ## Info files
+ %{_prefix}/info/cgicc.info
+ %{_prefix}/info/cgicc.info-1
+ %{_prefix}/info/cgicc.info-2
+
+ ## Header files
+ %{_prefix}/include/cgicc/CgiDefs.h
+ %{_prefix}/include/cgicc/CgiEnvironment.h
+ %{_prefix}/include/cgicc/CgiUtils.h
+ %{_prefix}/include/cgicc/Cgicc.h
+ %{_prefix}/include/cgicc/FormEntry.h
+ %{_prefix}/include/cgicc/FormFile.h
+ %{_prefix}/include/cgicc/HTMLAttributes.h
+ %{_prefix}/include/cgicc/HTMLClasses.h
+ %{_prefix}/include/cgicc/HTMLElements.h
+ %{_prefix}/include/cgicc/HTMLGeneric.h
+ %{_prefix}/include/cgicc/HTTPHeaders.h
+ %{_prefix}/include/cgicc/MStreamable.h
+
+ ## Library files
+ %{_prefix}/lib/libcgicc.a
+ %{_prefix}/lib/libcgicc.la
+ %{_prefix}/lib/libcgicc.so
+ %{_prefix}/lib/libcgicc.so.1
+ %{_prefix}/lib/libcgicc.so.1.1.1
+
+ %clean
+ rm -rf $RPM_BUILD_DIR/%{name}-%{version}