Index: cgicc/AUTHORS
diff -c cgicc/AUTHORS:1.3 cgicc/AUTHORS:1.4
*** cgicc/AUTHORS:1.3   Fri Apr  7 21:44:25 2000
--- cgicc/AUTHORS       Sun Oct 15 09:06:22 2000
***************
*** 1,5 ****
! Authors of GNU Cgicc
 ====================

! Stephen F. Booth.  Designed and implemented Cgicc.

--- 1,5 ----
! Authors of GNU cgicc
 ====================

! Stephen F. Booth.  Designed and implemented cgicc.

Index: cgicc/ChangeLog
diff -c cgicc/ChangeLog:1.52 cgicc/ChangeLog:1.60
*** cgicc/ChangeLog:1.52        Sun Jul  2 19:54:34 2000
--- cgicc/ChangeLog     Sun Oct 15 09:09:36 2000
***************
*** 1,3 ****
--- 1,52 ----
+ 2000-10-15  Stephen F. Booth  <[email protected]>
+
+       * example/yourSource.cpp: Changed instances of 'Cgicc' to 'cgicc'
+       * demo/test.cpp: 'Cgicc' -> 'cgicc'
+       * demo/dns.cpp: 'Cgicc' -> 'cgicc'
+       * demo/testform.html: Updated e-mail address
+       * info/version.texi: Updated for 3.1.4
+       * README: 'Cgicc' -> 'cgicc'
+       * README.WIN: 'Cgicc' -> 'cgicc'
+       * AUTHORS: 'Cgicc' -> 'cgicc'
+       * NEWS: 'Cgicc' -> 'cgicc'
+       * Makefile.am: Removed reference to .spec file
+
+ 2000-10-07  Stephen F. Booth  <[email protected]>
+
+       * demo/dns.cpp: Updated URL
+       * demo/test.cpp: Updated URL
+       * demo/testform.html: Updated URL
+       * demo/dns.cpp: Changed various instances of 'Cgicc' to 'cgicc'
+       * demo/test.cpp: Changed various instances of 'Cgicc' to 'cgicc'
+       * demo/testform.html: Changed various instances of 'Cgicc' to 'cgicc'
+       * info/cgi-classes.texinfo: Changed various instances of 'Cgicc' to
+       'cgicc'
+       * info/cgicc.texinfo: Changed various instances of 'Cgicc' to 'cgicc'
+       * info/class-cgicc.texinfo: Changed various instances of 'Cgicc' to
+       'cgicc'
+       * info/classes-html.texinfo: Changed various instances of 'Cgicc' to
+       'cgicc'
+       * info/html-classes.texinfo: Changed various instances of 'Cgicc' to
+       'cgicc'
+       * info/library-overview.texinfo: Changed various instances of 'Cgicc'
+       to 'cgicc'
+       * info/tutorial.texinfo: Changed various instances of 'Cgicc' to
+       'cgicc'
+       * support/cgicc.spec.in: Removed
+       * configure.in: Removed reference to cgicc.spec, version to 3.1.4
+       * cgicc/Makefile.am: Updated libtool version
+       * cgicc/HTMLAttributes.h: Updated copyright and mail info
+
+ 2000-09-21  Stephen F. Booth  <[email protected]>
+
+       * demo/dns.cpp: Fix for http servers not running on port 80
+       (reported by [email protected])
+       * cgicc/HTMLElements.cpp: Changed 'for' for code symmetry
+       * cgicc/CgiEnvironment.cpp: Skip leading whitespace in cookie names
+       (reported by [email protected])
+       * example/Makefile.in: Use "-Wl,--rpath" for linux
+       (reported by [email protected])
+
 2000-07-02  Stephen F. Booth  <[email protected]>

       * cgicc/HTMLElements.h: Fix operator< for HTMLElement
Index: cgicc/Makefile.am
diff -c cgicc/Makefile.am:1.21 cgicc/Makefile.am:1.22
*** cgicc/Makefile.am:1.21      Mon Apr 10 18:39:07 2000
--- cgicc/Makefile.am   Sun Oct 15 09:08:04 2000
***************
*** 1,4 ****
! ## $Id: Makefile.am,v 1.21 2000/04/11 01:39:07 sbooth Exp $

 AUTOMAKE_OPTIONS = check-news dist-zip dist-bzip2

--- 1,4 ----
! ## $Id: Makefile.am,v 1.22 2000/10/15 16:08:04 sbooth Exp $

 AUTOMAKE_OPTIONS = check-news dist-zip dist-bzip2

***************
*** 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
--- 28,33 ----
Index: cgicc/NEWS
diff -c cgicc/NEWS:1.17 cgicc/NEWS:1.19
*** cgicc/NEWS:1.17     Sun Jul  2 20:22:01 2000
--- cgicc/NEWS  Sun Oct 15 09:09:29 2000
***************
*** 1,9 ****
!                        NEWS about GNU Cgicc

 ======================================================================
         Please send bug reports, suggestions, and comments to
         <[email protected]>
 ======================================================================

         Major changes between versions 3.1.2 and 3.1.3
         ----------------------------------------------
--- 1,17 ----
!                        NEWS about GNU cgicc

 ======================================================================
         Please send bug reports, suggestions, and comments to
         <[email protected]>
 ======================================================================
+
+         Major changes between versions 3.1.3 and 3.1.4
+         ----------------------------------------------
+
+ * Leading whitespace now correctly stripped from cookies during parsing
+
+ * Demo now correct for HTTP servers not running on port 80
+

         Major changes between versions 3.1.2 and 3.1.3
         ----------------------------------------------
Index: cgicc/README
diff -c cgicc/README:1.9 cgicc/README:1.10
*** cgicc/README:1.9    Fri Apr  7 21:47:44 2000
--- cgicc/README        Sun Oct 15 09:04:34 2000
***************
*** 1,9 ****
! README for GNU Cgicc
 ====================

! 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
--- 1,9 ----
! README for GNU cgicc
 ====================

! 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
***************
*** 22,29 ****

 This package should contain the following directories:

! cgicc/     The source code to the GNU Cgicc library
! info/      Complete documentation for Cgicc in texinfo format
! demo/      Two demonstration applications using Cgicc
! example/   A skeleton CGI application using Cgicc

--- 22,29 ----

 This package should contain the following directories:

! cgicc/     The source code to the GNU cgicc library
! 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.5 cgicc/README.WIN:1.6
*** cgicc/README.WIN:1.5        Fri Apr  7 21:48:51 2000
--- cgicc/README.WIN    Sun Oct 15 09:05:32 2000
***************
*** 1,4 ****
! README for using GNU Cgicc on Windows
 =====================================

 The win/ subdirectory contains Microsoft Visual C++ 6.0 workspace and
--- 1,4 ----
! README for using GNU cgicc on Windows
 =====================================

 The win/ subdirectory contains Microsoft Visual C++ 6.0 workspace and
***************
*** 11,20 ****
 Please note that when compiling the sample applications, you will
 receive several warnings (C4251: 'identifier' : class 'type' needs to
 have dll-interface to be used by clients of class 'type2').  This
! occurs because Cgicc's classes and functions are exported using the
! __declspec method.  Several of Cgicc's functions return the Standard
 Template Library class 'string', which is exported in a .DEF file.  At
 compile time, the compiler cannot know whether the STL class string is
! exported, since Cgicc does not import the .DEF file.
 These warnings may be safely ignored.

--- 11,20 ----
 Please note that when compiling the sample applications, you will
 receive several warnings (C4251: 'identifier' : class 'type' needs to
 have dll-interface to be used by clients of class 'type2').  This
! occurs because cgicc's classes and functions are exported using the
! __declspec method.  Several of cgicc's functions return the Standard
 Template Library class 'string', which is exported in a .DEF file.  At
 compile time, the compiler cannot know whether the STL class string is
! exported, since cgicc does not import the .DEF file.
 These warnings may be safely ignored.

Index: cgicc/configure.in
diff -c cgicc/configure.in:1.24 cgicc/configure.in:1.25
*** cgicc/configure.in:1.24     Sun Jul  2 20:22:01 2000
--- cgicc/configure.in  Sat Oct  7 11:38:01 2000
***************
*** 1,11 ****
 dnl -*-m4-*-
! dnl $Id: configure.in,v 1.24 2000/07/03 03:22:01 sbooth Exp $

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

--- 1,11 ----
 dnl -*-m4-*-
! dnl $Id: configure.in,v 1.25 2000/10/07 18:38:01 sbooth Exp $

 dnl Process this file with autoconf to produce a configure script.
! AC_REVISION($Revision: 1.25 $)
 AC_INIT(cgicc/Cgicc.cpp)
 AC_CONFIG_AUX_DIR(support)
! AM_INIT_AUTOMAKE(cgicc, 3.1.4)
 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 support/cgicc.spec])

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

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

Index: cgicc/cgicc/CgiEnvironment.cpp
diff -c cgicc/cgicc/CgiEnvironment.cpp:1.3 cgicc/cgicc/CgiEnvironment.cpp:1.4
*** cgicc/cgicc/CgiEnvironment.cpp:1.3  Sat Apr 15 00:57:00 2000
--- cgicc/cgicc/CgiEnvironment.cpp      Sat Oct  7 11:41:18 2000
***************
*** 1,7 ****
 /*
!  *  $Id: CgiEnvironment.cpp,v 1.3 2000/04/15 07:57:00 sbooth Exp $
  *
!  *  Copyright (C) 1996, 1997, 1998, 1999 Stephen F. Booth
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
--- 1,7 ----
 /*
!  *  $Id: CgiEnvironment.cpp,v 1.4 2000/10/07 18:41:18 sbooth Exp $
  *
!  *  Copyright (C) 1996, 1997, 1998, 1999, 2000 Stephen F. Booth
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
***************
*** 26,31 ****
--- 26,32 ----
 #include <memory>
 #include <stdexcept>
 #include <cstdlib>
+ #include <cctype>

 #ifdef WIN32
 #include <io.h>
***************
*** 104,110 ****
 }

 void
! CGICCNS CgiEnvironment::parseCookie(const STDNS string &data)
 {
   // find the '=' separating the name and value
   STDNS string::size_type pos = data.find("=", 0);
--- 105,111 ----
 }

 void
! CGICCNS CgiEnvironment::parseCookie(const STDNS string& data)
 {
   // find the '=' separating the name and value
   STDNS string::size_type pos = data.find("=", 0);
***************
*** 112,120 ****
   // if no '=' was found, return
   if(pos == STDNS string::npos)
     return;

   // unescape the data, and add to the cookie list
!   STDNS string name   = unescapeString(data.substr(0, pos));
   STDNS string value  = unescapeString(data.substr(++pos));

   fCookies.push_back(HTTPCookie(name, value));
--- 113,129 ----
   // if no '=' was found, return
   if(pos == STDNS string::npos)
     return;
+
+   // skip leading whitespace - " \f\n\r\t\v"
+   STDNS string::size_type wscount = 0;
+   STDNS string::const_iterator data_iter;
+
+   for(data_iter = data.begin(); data_iter != data.end(); ++data_iter,++wscount)
+     if(isspace(*data_iter) == 0)
+       break;

   // unescape the data, and add to the cookie list
!   STDNS string name   = unescapeString(data.substr(wscount, pos - wscount));
   STDNS string value  = unescapeString(data.substr(++pos));

   fCookies.push_back(HTTPCookie(name, value));
Index: cgicc/cgicc/HTMLAttributes.h
diff -c cgicc/cgicc/HTMLAttributes.h:1.3 cgicc/cgicc/HTMLAttributes.h:1.4
*** cgicc/cgicc/HTMLAttributes.h:1.3    Mon Aug 16 10:40:04 1999
--- cgicc/cgicc/HTMLAttributes.h        Sat Oct  7 11:41:18 2000
***************
*** 1,8 ****
 /* -*-c++-*- */
 /*
!  *  $Id: HTMLAttributes.h,v 1.3 1999/08/16 17:40:04 sbooth Exp $
  *
!  *  Copyright (C) 1996, 1997, 1998, 1999 Stephen F. Booth
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
--- 1,8 ----
 /* -*-c++-*- */
 /*
!  *  $Id: HTMLAttributes.h,v 1.4 2000/10/07 18:41:18 sbooth Exp $
  *
!  *  Copyright (C) 1996, 1997, 1998, 1999, 2000 Stephen F. Booth
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
***************
*** 43,50 ****
  * pair inside an HTML tag.
  * For example, in the HTML code:
  * <PRE class="html">
!  * &lt;A HREF="mailto:[email protected]">Send mail&lt;/A></PRE>
!  * The name/value pair <TT>(HREF, mailto:[email protected])</TT>
  * is an HTMLAttribute.
  */
 class CGICC_API HTMLAttribute : public MStreamable
--- 43,50 ----
  * pair inside an HTML tag.
  * For example, in the HTML code:
  * <PRE class="html">
!  * &lt;A HREF="mailto:[email protected]">Send mail&lt;/A></PRE>
!  * The name/value pair <TT>(HREF, mailto:[email protected])</TT>
  * is an HTMLAttribute.
  */
 class CGICC_API HTMLAttribute : public MStreamable
Index: cgicc/cgicc/HTMLElements.cpp
diff -c cgicc/cgicc/HTMLElements.cpp:1.4 cgicc/cgicc/HTMLElements.cpp:1.5
*** cgicc/cgicc/HTMLElements.cpp:1.4    Fri Aug 20 13:51:31 1999
--- cgicc/cgicc/HTMLElements.cpp        Thu Sep 21 08:21:28 2000
***************
*** 1,7 ****
 /*
!  *  $Id: HTMLElements.cpp,v 1.4 1999/08/20 20:51:31 sbooth Exp $
  *
!  *  Copyright (C) 1996, 1997, 1998, 1999 Stephen F. Booth
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
--- 1,7 ----
 /*
!  *  $Id: HTMLElements.cpp,v 1.5 2000/09/21 15:21:28 sbooth Exp $
  *
!  *  Copyright (C) 1996, 1997, 1998, 1999, 2000 Stephen F. Booth
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
***************
*** 227,233 ****
   fElements = list.fElements;

   STDNS vector<HTMLElement*>::iterator iter;
!   for(iter = fElements.begin(); iter != fElements.end(); iter++)
     *iter = (*iter)->clone();

   return *this;
--- 227,233 ----
   fElements = list.fElements;

   STDNS vector<HTMLElement*>::iterator iter;
!   for(iter = fElements.begin(); iter != fElements.end(); ++iter)
     *iter = (*iter)->clone();

   return *this;
Index: cgicc/cgicc/Makefile.am
diff -c cgicc/cgicc/Makefile.am:1.10 cgicc/cgicc/Makefile.am:1.11
*** cgicc/cgicc/Makefile.am:1.10        Sun Jul  2 20:19:52 2000
--- cgicc/cgicc/Makefile.am     Sat Oct  7 11:38:01 2000
***************
*** 1,4 ****
! ## $Id: Makefile.am,v 1.10 2000/07/03 03:19:52 sbooth Exp $

 CLEANFILES = *~

--- 1,4 ----
! ## $Id: Makefile.am,v 1.11 2000/10/07 18:38:01 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:2: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:3:1

 pkginclude_HEADERS = CgiDefs.h CgiEnvironment.h CgiUtils.h Cgicc.h    \
 FormEntry.h FormFile.h HTMLAttributes.h HTMLClasses.h HTMLElements.h  \
Index: cgicc/demo/dns.cpp
diff -c cgicc/demo/dns.cpp:1.10 cgicc/demo/dns.cpp:1.13
*** cgicc/demo/dns.cpp:1.10     Thu Sep 30 10:40:45 1999
--- cgicc/demo/dns.cpp  Sun Oct 15 08:59:20 2000
***************
*** 1,7 ****
 /*
!  *  $Id: dns.cpp,v 1.10 1999/09/30 17:40:45 sbooth Exp $
  *
!  *  Copyright (C) 1996, 1997, 1998, 1999 Stephen F. Booth
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
--- 1,7 ----
 /*
!  *  $Id: dns.cpp,v 1.13 2000/10/15 15:59:20 sbooth Exp $
  *
!  *  Copyright (C) 1996, 1997, 1998, 1999, 2000 Stephen F. Booth
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
***************
*** 49,55 ****
 // To use logging, the variable gLogFile MUST be defined, and it _must_
 // be an ofstream
 #if DEBUG
!   STDNS ofstream gLogFile( "/change_this_path/Cgicc.log", STDNS ios::app );
 #endif

 #if CGICC_USE_NAMESPACES
--- 49,55 ----
 // To use logging, the variable gLogFile MUST be defined, and it _must_
 // be an ofstream
 #if DEBUG
!   STDNS ofstream gLogFile( "/change_this_path/cgicc.log", STDNS ios::app );
 #endif

 #if CGICC_USE_NAMESPACES
***************
*** 102,108 ****
                 .set("content", "Stephen F. Booth") << endl;
     cout << head() << endl;

!     cout << h1() << "Cgi" << span("cc").set("class","red")
        << " DNS Gateway" << h1() << endl;

     form_iterator ip = cgi.getElement("ip");
--- 102,108 ----
                 .set("content", "Stephen F. Booth") << endl;
     cout << head() << endl;

!     cout << h1() << "GNU cgi" << span("cc").set("class","red")
        << " DNS Gateway" << h1() << endl;

     form_iterator ip = cgi.getElement("ip");
***************
*** 194,201 ****
     cout << colgroup() << endl;

     cout << "<FORM METHOD=\"POST\" ACTION=\"http://"
!        << cgi.getEnvironment().getServerName()
!        << cgi.getEnvironment().getScriptName() << "\">" << endl;

     cout << tr() << endl;
     cout << td(strong("IP Address: ")) << endl;
--- 194,203 ----
     cout << colgroup() << endl;

     cout << "<FORM METHOD=\"POST\" ACTION=\"http://"
!        << cgi.getEnvironment().getServerName();
!     if(cgi.getEnvironment().getServerPort() != 80)
!       cout << ":" << cgi.getEnvironment().getServerPort();
!     cout << cgi.getEnvironment().getScriptName() << "\">" << endl;

     cout << tr() << endl;
     cout << td(strong("IP Address: ")) << endl;
***************
*** 207,214 ****
     cout << td() << tr() << "</FORM>" << endl;

     cout << "<FORM METHOD=\"POST\" ACTION=\"http://"
!        << cgi.getEnvironment().getServerName()
!        << cgi.getEnvironment().getScriptName() << "\">" << endl;

     cout << tr() << endl;
     cout << td(strong("Hostname: ")) << endl;
--- 209,218 ----
     cout << td() << tr() << "</FORM>" << endl;

     cout << "<FORM METHOD=\"POST\" ACTION=\"http://"
!        << cgi.getEnvironment().getServerName();
!     if(cgi.getEnvironment().getServerPort() != 80)
!       cout << ":" << cgi.getEnvironment().getServerPort();
!     cout << cgi.getEnvironment().getScriptName() << "\">" << endl;

     cout << tr() << endl;
     cout << td(strong("Hostname: ")) << endl;
***************
*** 223,232 ****
     // Now print cout a footer with some fun info
     cout << hr(set("class","half")) << endl;
     cout << CGICCNS div().set("align","center").set("class","smaller") << endl;
!     cout << "GNU Cgi" << span("cc").set("class","red") << " v"
        << cgi.getVersion();
     cout << " by " << a("Stephen F. Booth")
!                       .set("href", "http://www.lmi.net/~sbooth/")
        << br() << endl;
     cout << "Compiled at " << cgi.getCompileTime()
        << " on " << cgi.getCompileDate() << br() << endl;
--- 227,236 ----
     // Now print cout a footer with some fun info
     cout << hr(set("class","half")) << endl;
     cout << CGICCNS div().set("align","center").set("class","smaller") << endl;
!     cout << "GNU cgi" << span("cc").set("class","red") << " v"
        << cgi.getVersion();
     cout << " by " << a("Stephen F. Booth")
!                       .set("href", "http://home.earthlink.net/~sfbooth/")
        << br() << endl;
     cout << "Compiled at " << cgi.getCompileTime()
        << " on " << cgi.getCompileDate() << br() << endl;
Index: cgicc/demo/test.cpp
diff -c cgicc/demo/test.cpp:1.10 cgicc/demo/test.cpp:1.13
*** cgicc/demo/test.cpp:1.10    Thu Sep 30 10:40:45 1999
--- cgicc/demo/test.cpp Sun Oct 15 08:59:53 2000
***************
*** 1,7 ****
 /*
!  *  $Id: test.cpp,v 1.10 1999/09/30 17:40:45 sbooth Exp $
  *
!  *  Copyright (C) 1996, 1997, 1998, 1999 Stephen F. Booth
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
--- 1,7 ----
 /*
!  *  $Id: test.cpp,v 1.13 2000/10/15 15:59:53 sbooth Exp $
  *
!  *  Copyright (C) 1996, 1997, 1998, 1999, 2000 Stephen F. Booth
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
***************
*** 40,46 ****
 // To use logging, the variable gLogFile MUST be defined, and it _must_
 // be an ofstream
 #if DEBUG
!   STDNS ofstream gLogFile( "/change_this_path/Cgicc.log", STDNS ios::app );
 #endif

 #if CGICC_USE_NAMESPACES
--- 40,46 ----
 // To use logging, the variable gLogFile MUST be defined, and it _must_
 // be an ofstream
 #if DEBUG
!   STDNS ofstream gLogFile( "/change_this_path/cgicc.log", STDNS ios::app );
 #endif

 #if CGICC_USE_NAMESPACES
***************
*** 112,118 ****

     cout << comment() << style() << endl;

!     cout << title() << "GNU Cgicc v" << cgi.getVersion() << " Test Results"
        << title() << endl;
     cout << meta().set("name", "author").set("content", "Stephen F. Booth")
        << endl;
--- 112,118 ----

     cout << comment() << style() << endl;

!     cout << title() << "GNU cgicc v" << cgi.getVersion() << " Test Results"
        << title() << endl;
     cout << meta().set("name", "author").set("content", "Stephen F. Booth")
        << endl;
***************
*** 122,137 ****
     // Start the HTML body
     cout << body() << endl;

!     cout << h1() << "GNU Cgi" << span("cc").set("class","red")
        << " v"<< cgi.getVersion() << " Test Results" << h1() << endl;

     // Get a pointer to the environment
     const CgiEnvironment& env = cgi.getEnvironment();

     // Generic thank you message
!     cout << comment() << "This page generated by Cgicc for "
        << env.getRemoteHost() << comment() << endl;
!     cout << h4() << "Thanks for using Cgi" << span("cc").set("class", "red")
        << ", " << env.getRemoteHost()
        << '(' << env.getRemoteAddr() << ")!" << h4() << endl;

--- 122,137 ----
     // Start the HTML body
     cout << body() << endl;

!     cout << h1() << "GNU cgi" << span("cc").set("class","red")
        << " v"<< cgi.getVersion() << " Test Results" << h1() << endl;

     // Get a pointer to the environment
     const CgiEnvironment& env = cgi.getEnvironment();

     // Generic thank you message
!     cout << comment() << "This page generated by cgicc for "
        << env.getRemoteHost() << comment() << endl;
!     cout << h4() << "Thanks for using cgi" << span("cc").set("class", "red")
        << ", " << env.getRemoteHost()
        << '(' << env.getRemoteAddr() << ")!" << h4() << endl;

***************
*** 188,199 ****
        << endl;
     cout << CGICCNS div() << br() << hr(set("class","half")) << endl;

!     // Information on Cgicc
     cout << CGICCNS div().set("align","center").set("class","smaller") << endl;
!     cout << "GNU Cgi" << span("cc").set("class","red") << " v";
     cout << cgi.getVersion();
     cout << " by " << a("Stephen F. Booth")
!                        .set("href", "http://www.lmi.net/~sbooth/")
        << br() << endl;
     cout << "Compiled at " << cgi.getCompileTime();
     cout << " on " << cgi.getCompileDate() << br() << endl;
--- 188,199 ----
        << endl;
     cout << CGICCNS div() << br() << hr(set("class","half")) << endl;

!     // Information on cgicc
     cout << CGICCNS div().set("align","center").set("class","smaller") << endl;
!     cout << "GNU cgi" << span("cc").set("class","red") << " v";
     cout << cgi.getVersion();
     cout << " by " << a("Stephen F. Booth")
!                        .set("href", "http://home.earthlink.net/~sfbooth/")
        << br() << endl;
     cout << "Compiled at " << cgi.getCompileTime();
     cout << " on " << cgi.getCompileDate() << br() << endl;
***************
*** 261,267 ****

     cout << comment() << style() << endl;

!     cout << title("GNU Cgicc exception") << endl;
     cout << meta().set("name", "author")
                 .set("content", "Stephen F. Booth") << endl;
     cout << head() << endl;
--- 261,267 ----

     cout << comment() << style() << endl;

!     cout << title("GNU cgicc exception") << endl;
     cout << meta().set("name", "author")
                 .set("content", "Stephen F. Booth") << endl;
     cout << head() << endl;
Index: cgicc/demo/testform.html
diff -c cgicc/demo/testform.html:1.3 cgicc/demo/testform.html:1.4
*** cgicc/demo/testform.html:1.3        Tue Jun 15 14:22:04 1999
--- cgicc/demo/testform.html    Sun Oct 15 09:00:42 2000
***************
*** 4,14 ****
 <HTML LANG="en" DIR="LTR">

 <HEAD>
!   <!-- $Id: testform.html,v 1.3 1999/06/15 21:22:04 sbooth Exp $ -->

   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
!   <TITLE>GNU Cgicc Test Form</TITLE>
!   <LINK REV="made" HREF="mailto:[email protected]">
   <STYLE TYPE="text/css"><!--

     BODY { color: black; background: white; }
--- 4,14 ----
 <HTML LANG="en" DIR="LTR">

 <HEAD>
!   <!-- $Id: testform.html,v 1.4 2000/10/15 16:00:42 sbooth Exp $ -->

   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
!   <TITLE>GNU cgicc Test Form</TITLE>
!   <LINK REV="made" HREF="mailto:[email protected]">
   <STYLE TYPE="text/css"><!--

     BODY { color: black; background: white; }
***************
*** 49,55 ****

 <BODY>

! <H1>GNU Cgi<SPAN CLASS="red">cc</SPAN> Test Form</H1>

 <!-- Change this to match your web site's address -->
 <FORM METHOD="POST" ACTION="http://change_this_path/cgi-bin/test.cgi" >
--- 49,55 ----

 <BODY>

! <H1>GNU cgi<SPAN CLASS="red">cc</SPAN> Test Form</H1>

 <!-- Change this to match your web site's address -->
 <FORM METHOD="POST" ACTION="http://change_this_path/cgi-bin/test.cgi" >
Index: cgicc/example/Makefile.in
diff -c cgicc/example/Makefile.in:1.13 cgicc/example/Makefile.in:1.14
*** cgicc/example/Makefile.in:1.13      Mon Apr 10 18:37:34 2000
--- cgicc/example/Makefile.in   Thu Sep 21 08:23:43 2000
***************
*** 1,7 ****
 ##
! ##  $Id: Makefile.in,v 1.13 2000/04/11 01:37:34 sbooth Exp $
 ##
! ##  Copyright (C) 1996, 1997, 1998, 1999 Stephen F. Booth
 ##
 ##  This program is free software; you can redistribute it and/or modify
 ##  it under the terms of the GNU General Public License as published by
--- 1,7 ----
 ##
! ##  $Id: Makefile.in,v 1.14 2000/09/21 15:23:43 sbooth Exp $
 ##
! ##  Copyright (C) 1996, 1997, 1998, 1999, 2000 Stephen F. Booth
 ##
 ##  This program is free software; you can redistribute it and/or modify
 ##  it under the terms of the GNU General Public License as published by
***************
*** 52,58 ****
 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)
--- 52,58 ----
 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)
Index: cgicc/example/yourSource.cpp
diff -c cgicc/example/yourSource.cpp:1.3 cgicc/example/yourSource.cpp:1.4
*** cgicc/example/yourSource.cpp:1.3    Tue Aug 17 10:16:15 1999
--- cgicc/example/yourSource.cpp        Sun Oct 15 08:52:27 2000
***************
*** 1,7 ****
 /*
!  *  $Id: yourSource.cpp,v 1.3 1999/08/17 17:16:15 sbooth Exp $
  *
!  *  Copyright (C) 1996, 1997, 1998, 1999 Stephen F. Booth
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
--- 1,7 ----
 /*
!  *  $Id: yourSource.cpp,v 1.4 2000/10/15 15:52:27 sbooth Exp $
  *
!  *  Copyright (C) 1996, 1997, 1998, 1999, 2000 Stephen F. Booth
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
***************
*** 27,33 ****
 // To use the debug logging feature, the variable gLogFile MUST be
 // defined, and it _must_ be an ofstream
 #if DEBUG
!   ofstream gLogFile( "/change_this_path/Cgicc.log", ios::app );
 #endif

 #if CGICC_USE_NAMESPACES
--- 27,33 ----
 // To use the debug logging feature, the variable gLogFile MUST be
 // defined, and it _must_ be an ofstream
 #if DEBUG
!   ofstream gLogFile( "/change_this_path/cgicc.log", ios::app );
 #endif

 #if CGICC_USE_NAMESPACES
***************
*** 51,64 ****

     // Set up the page's header and title.
     cout << head() << endl;
!     cout << title() << "GNU Cgicc v" << cgi.getVersion() << title() << endl;
     cout << head() << endl;

     // Start the HTML body
     cout << body() << endl;

     // Print out a message
!     cout << h1("Hello, world from GNU Cgicc") << endl;

     // Close the document
     cout << body() << html();
--- 51,64 ----

     // Set up the page's header and title.
     cout << head() << endl;
!     cout << title() << "GNU cgicc v" << cgi.getVersion() << title() << endl;
     cout << head() << endl;

     // Start the HTML body
     cout << body() << endl;

     // Print out a message
!     cout << h1("Hello, world from GNU cgicc") << endl;

     // Close the document
     cout << body() << html();
Index: cgicc/info/cgi-classes.texinfo
diff -c cgicc/info/cgi-classes.texinfo:1.1 cgicc/info/cgi-classes.texinfo:1.2
*** cgicc/info/cgi-classes.texinfo:1.1  Mon Apr 26 15:48:09 1999
--- cgicc/info/cgi-classes.texinfo      Sat Oct  7 11:32:20 2000
***************
*** 6,12 ****
 HTTP server.

 @deftp Class Cgicc
! @code{Cgicc} is the main class of the Cgicc library.  It is used to
 retrieve information on specific HTML form elements (such as checkboxes,
 radio buttons, and text fields), on uploaded files, and to save,
 restore, and retrieve information on the CGI environment.
--- 6,12 ----
 HTTP server.

 @deftp Class Cgicc
! @code{Cgicc} is the main class of the cgicc library.  It is used to
 retrieve information on specific HTML form elements (such as checkboxes,
 radio buttons, and text fields), on uploaded files, and to save,
 restore, and retrieve information on the CGI environment.
Index: cgicc/info/cgicc.texinfo
diff -c cgicc/info/cgicc.texinfo:1.7 cgicc/info/cgicc.texinfo:1.8
*** cgicc/info/cgicc.texinfo:1.7        Thu Sep 30 11:05:24 1999
--- cgicc/info/cgicc.texinfo    Sat Oct  7 11:32:20 2000
***************
*** 2,8 ****
 @comment -*-texinfo-*-
 @comment %**start of header
 @setfilename cgicc.info
! @settitle GNU Cgicc - A C++ library for CGI programming
 @comment %**end of header

 @setchapternewpage odd
--- 2,8 ----
 @comment -*-texinfo-*-
 @comment %**start of header
 @setfilename cgicc.info
! @settitle GNU cgicc - A C++ library for CGI programming
 @comment %**end of header

 @setchapternewpage odd
***************
*** 10,23 ****

 @dircategory Libraries
 @direntry
! * Cgicc: (cgicc).                 A C++ library for writing CGI
                                   applications.
 @end direntry

 @ifinfo
! GNU Cgicc is a C++ library for developing CGI applications.

! Copyright @copyright{} 1996, 1997, 1998, 1999 Stephen F. Booth

 Permission is granted to make and distribute verbatim copies of this
 manual provided the copyright notice and this permission notice are
--- 10,23 ----

 @dircategory Libraries
 @direntry
! * cgicc: (cgicc).                 A C++ library for writing CGI
                                   applications.
 @end direntry

 @ifinfo
! GNU cgicc is a C++ library for developing CGI applications.

! Copyright @copyright{} 1996, 1997, 1998, 1999, 2000 Stephen F. Booth

 Permission is granted to make and distribute verbatim copies of this
 manual provided the copyright notice and this permission notice are
***************
*** 45,51 ****
 @end ifinfo
 @titlepage
 @sp 10
! @center @titlefont{GNU Cgicc}
 @subtitle A C++ class library for developing CGI applications
 @author Stephen F. Booth
 @page
--- 45,51 ----
 @end ifinfo
 @titlepage
 @sp 10
! @center @titlefont{GNU cgicc}
 @subtitle A C++ class library for developing CGI applications
 @author Stephen F. Booth
 @page
***************
*** 71,91 ****

 @ifnottex
 @node Top, Overview of CGI, (dir), (dir)
! @top GNU Cgicc

 @include version.texi

! This document describes the GNU Cgicc library, a C++ class library that
 facilitates the development of Common Gateway Inteface (CGI)
 applications for the World Wide Web (WWW).

! This is edition @value{EDITION} of the Cgicc documentation, @value{UPDATED}.
 @end ifnottex

 @menu
 * Overview of CGI::             An overview of the Common Gateway Interface
! * A tutorial example::          An introductory example to using Cgicc
! * Library overview::            An overview of Cgicc's layout
 * CGI classes::                 Classes used to query and manipulate CGI data
 * HTTP header classes::         Classes used for returning response information
 * HTML generation classes::     Classes used to return a response to the client
--- 71,91 ----

 @ifnottex
 @node Top, Overview of CGI, (dir), (dir)
! @top GNU cgicc

 @include version.texi

! This document describes the GNU cgicc library, a C++ class library that
 facilitates the development of Common Gateway Inteface (CGI)
 applications for the World Wide Web (WWW).

! This is edition @value{EDITION} of the cgicc documentation, @value{UPDATED}.
 @end ifnottex

 @menu
 * Overview of CGI::             An overview of the Common Gateway Interface
! * A tutorial example::          An introductory example to using cgicc
! * Library overview::            An overview of cgicc's layout
 * CGI classes::                 Classes used to query and manipulate CGI data
 * HTTP header classes::         Classes used for returning response information
 * HTML generation classes::     Classes used to return a response to the client
***************
*** 95,102 ****
 * class FormFile::              Represents a file uploaded via HTTP
 * classes for HTTP headers::    Used for generating response information
 * classes for HTML output::     Used for generating a client response
! * Reporting Bugs::              How to report a bug in Cgicc
! * Copying::                     Your rights to distribute Cgicc
 * Concept Index::               Index of concepts introduced in the manual
 * Function Index::              Index of member functions
 * Data Type Index::             Index of classes
--- 95,102 ----
 * class FormFile::              Represents a file uploaded via HTTP
 * classes for HTTP headers::    Used for generating response information
 * classes for HTML output::     Used for generating a client response
! * Reporting Bugs::              How to report a bug in cgicc
! * Copying::                     Your rights to distribute cgicc
 * Concept Index::               Index of concepts introduced in the manual
 * Function Index::              Index of member functions
 * Data Type Index::             Index of classes
Index: cgicc/info/class-cgicc.texinfo
diff -c cgicc/info/class-cgicc.texinfo:1.4 cgicc/info/class-cgicc.texinfo:1.5
*** cgicc/info/class-cgicc.texinfo:1.4  Thu Sep 30 11:00:12 1999
--- cgicc/info/class-cgicc.texinfo      Sat Oct  7 11:32:20 2000
***************
*** 2,8 ****
 @node class Cgicc, class CgiEnvironment, HTML generation classes, Top
 @unnumbered class Cgicc

! @code{Cgicc} is the main class of the Cgicc library.  It is used to
 retrieve information on specific HTML form elements (such as checkboxes,
 radio buttons, and text fields), on uploaded files, and to save,
 restore, and retrieve information on the CGI environment.
--- 2,8 ----
 @node class Cgicc, class CgiEnvironment, HTML generation classes, Top
 @unnumbered class Cgicc

! @code{Cgicc} is the main class of the cgicc library.  It is used to
 retrieve information on specific HTML form elements (such as checkboxes,
 radio buttons, and text fields), on uploaded files, and to save,
 restore, and retrieve information on the CGI environment.
***************
*** 27,39 ****
 @end deftypemethod

 @deftypemethod Cgicc {const char*} getVersion () const
! Get the version number of Cgicc.  The string returned is of the format
! @samp{#.#}.
 @end deftypemethod

 @deftypemethod Cgicc {const char*} getHost () const
! Get the host for which Cgicc was configured.  The string returned is a
! canonical host triplet of the form @samp{processor-manufacturer-os}.
 @end deftypemethod

 @unnumberedsec Form Element Access
--- 27,40 ----
 @end deftypemethod

 @deftypemethod Cgicc {const char*} getVersion () const
! Get the version number of the cgicc library.  The string returned is of
! the format @samp{#.#}.
 @end deftypemethod

 @deftypemethod Cgicc {const char*} getHost () const
! Get the host for which the cgicc library was configured.  The string
! returned is a canonical host triplet of the form
! @samp{processor-manufacturer-os}.
 @end deftypemethod

 @unnumberedsec Form Element Access
Index: cgicc/info/classes-html.texinfo
diff -c cgicc/info/classes-html.texinfo:1.9 cgicc/info/classes-html.texinfo:1.10
*** cgicc/info/classes-html.texinfo:1.9 Tue Aug 17 10:39:07 1999
--- cgicc/info/classes-html.texinfo     Sat Oct  7 11:32:20 2000
***************
*** 2,11 ****
 @node classes for HTML output, Reporting Bugs, classes for HTTP headers, Top
 @unnumbered classes for HTML output

! For an introduction to Cgicc's HTML output, please see @xref{A tutorial
 example}, for more information.

! Cgicc provides one concrete class for each HTML element defined in the
 HTML 4.0 standard (@pxref{HTML generation classes}).  Every class
 defining an HTML element is a subclass of the abstract base class
 @code{HTMLElement}.
--- 2,11 ----
 @node classes for HTML output, Reporting Bugs, classes for HTTP headers, Top
 @unnumbered classes for HTML output

! For an introduction to cgicc's HTML output, please see @xref{A tutorial
 example}, for more information.

! cgicc provides one concrete class for each HTML element defined in the
 HTML 4.0 standard (@pxref{HTML generation classes}).  Every class
 defining an HTML element is a subclass of the abstract base class
 @code{HTMLElement}.
Index: cgicc/info/html-classes.texinfo
diff -c cgicc/info/html-classes.texinfo:1.1 cgicc/info/html-classes.texinfo:1.2
*** cgicc/info/html-classes.texinfo:1.1 Mon Apr 26 15:48:14 1999
--- cgicc/info/html-classes.texinfo     Sat Oct  7 11:32:20 2000
***************
*** 2,8 ****
 @node HTML generation classes, class Cgicc, HTTP header classes, Top
 @unnumbered HTML generation classes

! The Cgicc library provides one class for each HTML element defined in
 the HTML 4.0 specification.  In all cases, the name of the class
 corresponds to the name of the HTML element.

--- 2,8 ----
 @node HTML generation classes, class Cgicc, HTTP header classes, Top
 @unnumbered HTML generation classes

! The cgicc library provides one class for each HTML element defined in
 the HTML 4.0 specification.  In all cases, the name of the class
 corresponds to the name of the HTML element.

Index: cgicc/info/library-overview.texinfo
diff -c cgicc/info/library-overview.texinfo:1.2 cgicc/info/library-overview.texinfo:1.3
*** cgicc/info/library-overview.texinfo:1.2     Fri May 14 10:57:42 1999
--- cgicc/info/library-overview.texinfo Sat Oct  7 11:32:20 2000
***************
*** 2,8 ****
 @node Library overview, CGI classes, A tutorial example, Top
 @unnumbered Library overview

! The GNU Cgicc library contains classes divided into two broad groups:

 @cindex CGI classes

--- 2,8 ----
 @node Library overview, CGI classes, A tutorial example, Top
 @unnumbered Library overview

! The GNU cgicc library contains classes divided into two broad groups:

 @cindex CGI classes

Index: cgicc/info/tutorial.texinfo
diff -c cgicc/info/tutorial.texinfo:1.10 cgicc/info/tutorial.texinfo:1.11
*** cgicc/info/tutorial.texinfo:1.10    Thu Sep 30 11:00:12 1999
--- cgicc/info/tutorial.texinfo Sat Oct  7 11:32:20 2000
***************
*** 4,16 ****

 @unnumberedsec Introduction

! It is easiest to understand how Cgicc might be used by first looking at
 an example.  Suppose you have an HTML form on your web site asking a
 user to enter their name, age, and sex, perhaps as part of a
! user-registration procedure.  You wish to write a CGI script using Cgicc
 to process the form in some meaningful way.

! Applications written using Cgicc, like all other applications, begin
 with a @code{main} function:

 @lisp
--- 4,16 ----

 @unnumberedsec Introduction

! It is easiest to understand how cgicc might be used by first looking at
 an example.  Suppose you have an HTML form on your web site asking a
 user to enter their name, age, and sex, perhaps as part of a
! user-registration procedure.  You wish to write a CGI script using cgicc
 to process the form in some meaningful way.

! Applications written using cgicc, like all other applications, begin
 with a @code{main} function:

 @lisp
***************
*** 24,30 ****

 @unnumberedsec Initialization

! The three main classes of Cgicc you will use to process the submitted
 data are @code{Cgicc}, @code{CgiEnvironment}, and @code{FormEntry}.
 These classes will be explained in detail later; for now, it is
 sufficient to know that:
--- 24,30 ----

 @unnumberedsec Initialization

! The three main classes of cgicc you will use to process the submitted
 data are @code{Cgicc}, @code{CgiEnvironment}, and @code{FormEntry}.
 These classes will be explained in detail later; for now, it is
 sufficient to know that:
***************
*** 43,49 ****
 the submitted form elements.
 @end itemize

! All of Cgicc's functionality is accessed through class @code{Cgicc}.
 Thus, the first step in CGI processing is to instantiate an object of
 type @code{Cgicc}:

--- 43,49 ----
 the submitted form elements.
 @end itemize

! All of cgicc's functionality is accessed through class @code{Cgicc}.
 Thus, the first step in CGI processing is to instantiate an object of
 type @code{Cgicc}:

***************
*** 137,143 ****
 header@footnote{The full HTTP 1.1 specification may be found in RFC 2068
 at @*@url{http://www.w3.org/Protocols/rfc2068/rfc2068}}.

! Cgicc provides several classes for outputting HTTP headers, all of which
 begin with @code{HTTP}.  A standard HTML document need only output a
 single header:

--- 137,143 ----
 header@footnote{The full HTTP 1.1 specification may be found in RFC 2068
 at @*@url{http://www.w3.org/Protocols/rfc2068/rfc2068}}.

! cgicc provides several classes for outputting HTTP headers, all of which
 begin with @code{HTTP}.  A standard HTML document need only output a
 single header:

***************
*** 147,157 ****

 @unnumberedsec Simple HTML Output

! Cgicc provides one class for every HTML tag defined in the HTML 4.0
 standard in the header file @code{"cgicc/HTMLClasses.h"}.  These classes
 have the same name as the HTML tags.  For example, in HTML, to indicate
 the start of a document you write @var{<HTML>}; this can be accomplished
! using Cgicc by writing

 @lisp
 cout << html() << endl;
--- 147,157 ----

 @unnumberedsec Simple HTML Output

! cgicc provides one class for every HTML tag defined in the HTML 4.0
 standard in the header file @code{"cgicc/HTMLClasses.h"}.  These classes
 have the same name as the HTML tags.  For example, in HTML, to indicate
 the start of a document you write @var{<HTML>}; this can be accomplished
! using cgicc by writing

 @lisp
 cout << html() << endl;
***************
*** 168,174 ****
 @noindent
 will produce as output @code{<HTML>html text!</HTML>}.

! All of Cgicc's HTML output classes are subclasses of the abstract class
 @code{HTMLElement}.  You can embed the text for the element directly in
 the constructor:

--- 168,174 ----
 @noindent
 will produce as output @code{<HTML>html text!</HTML>}.

! All of cgicc's HTML output classes are subclasses of the abstract class
 @code{HTMLElement}.  You can embed the text for the element directly in
 the constructor:

***************
*** 232,239 ****

 @unnumberedsec Notes on Output

! All of Cgicc's output is written to the C++ standard output stream,
! @code{cout}.  It is not necessary to use Cgicc's HTML output classes;
 they are provided as a convenience. If you prefer, you may output the
 HTML code directly to @code{cout}.

--- 232,239 ----

 @unnumberedsec Notes on Output

! All of cgicc's output is written to the C++ standard output stream,
! @code{cout}.  It is not necessary to use cgicc's HTML output classes;
 they are provided as a convenience. If you prefer, you may output the
 HTML code directly to @code{cout}.

Index: cgicc/info/version.texi
diff -c cgicc/info/version.texi:1.16 cgicc/info/version.texi:1.17
*** cgicc/info/version.texi:1.16        Mon Jul  3 07:09:22 2000
--- cgicc/info/version.texi     Sun Oct 15 09:01:14 2000
***************
*** 1,3 ****
! @set UPDATED 3 July 2000
! @set EDITION 3.1.3
! @set VERSION 3.1.3
--- 1,3 ----
! @set UPDATED 7 October 2000
! @set EDITION 3.1.4
! @set VERSION 3.1.4
Index: cgicc/support/cgicc.spec.in
diff -c cgicc/support/cgicc.spec.in:1.3 cgicc/support/cgicc.spec.in:removed
*** cgicc/support/cgicc.spec.in:1.3     Sun Jul  2 20:21:09 2000
--- cgicc/support/cgicc.spec.in Sun Oct 15 09:15:47 2000
***************
*** 1,122 ****
- ## -*-sh-*-
- ## $Id: cgicc.spec.in,v 1.3 2000/07/03 03:21:09 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@
- %define release @RPM_RELEASE@
- $%define prefix /usr
-
- %define lt_release @LT_RELEASE@
- %define lt_version @LT_CURRENT@.@LT_REVISION@.@LT_AGE@
-
- Name: %{name}
- Version: %{version}
- Release: %{release}
-
- BuildRoot: /tmp/%{name}-root
- #Prefix: %{prefix}
-
- 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
- Summary: A C++ class library for developing CGI applications
-
- %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.
-
- %changelog
-
- %prep
- %setup
-
- %build
- %GNUconfigure
- make
-
- %install
- if [ "$RPM_BUILD_ROOT" != "/tmp/%{name}-root" ]; then
-     echo "RPM_BUILD_ROOT didn't match expected; won't be cleaned"
- else
-     echo "Cleaning RPM_BUILD_ROOT: $RPM_BUILD_ROOT"
-     rm -rf "$RPM_BUILD_ROOT"
- fi
- make DESTDIR="$RPM_BUILD_ROOT" install
-
- %clean
- if [ "$RPM_BUILD_ROOT" != "/tmp/%{name}-root" ]; then
-     echo "RPM_BUILD_ROOT didn't match expected; won't be cleaned"
- else
-     echo "Cleaning RPM_BUILD_ROOT: $RPM_BUILD_ROOT"
-     rm -rf "$RPM_BUILD_ROOT"
- fi
-
- #%post
- #/sbin/ldconfig
-
- #%postun
- #/sbin/ldconfig
-
- %files
-
- ## Documenation
- %doc README AUTHORS COPYING NEWS ChangeLog THANKS
- #%{_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}
--- 0 ----