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  <sbooth@gnu.org>
+ 
+ 	* 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  <sbooth@gnu.org>
+ 
+ 	* 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  <sbooth@gnu.org>
+ 
+ 	* demo/dns.cpp: Fix for http servers not running on port 80
+ 	(reported by qconnell@medic.up.ac.za)
+ 	* cgicc/HTMLElements.cpp: Changed 'for' for code symmetry
+ 	* cgicc/CgiEnvironment.cpp: Skip leading whitespace in cookie names
+ 	(reported by chaanho@netian.com)
+ 	* example/Makefile.in: Use "-Wl,--rpath" for linux
+ 	(reported by mail@jbrisbin.net)
+ 
  2000-07-02  Stephen F. Booth  <sbooth@gnu.org>
  
  	* 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
          <bug-cgicc@gnu.org>
  ======================================================================
  
          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
          <bug-cgicc@gnu.org>
  ======================================================================
+ 
+         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:sbooth@saaba.lmi.net">Send mail&lt;/A></PRE>
!  * The name/value pair <TT>(HREF, mailto:sbooth@saaba.lmi.net)</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:sbooth@gnu.org">Send mail&lt;/A></PRE>
!  * The name/value pair <TT>(HREF, mailto:sbooth@gnu.org)</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>
<!-- Default Statcounter code for web
https://web.classicistranieri.com -->
<script type="text/javascript">
var sc_project=12930764; 
var sc_invisible=1; 
var sc_security="f8ec58e2"; 
</script>
<script type="text/javascript"
src="https://www.statcounter.com/counter/counter.js"
async></script>
<noscript><div class="statcounter"><a title="Web Analytics"
href="https://statcounter.com/" target="_blank"><img
class="statcounter"
src="https://c.statcounter.com/12930764/0/f8ec58e2/1/"
alt="Web Analytics"
referrerPolicy="no-referrer-when-downgrade"></a></div></noscript>
<!-- End of Statcounter Code -->
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-0544110272300985"
     crossorigin="anonymous"></script>
!   <!-- $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:sbooth@saaba.lmi.net">
    <STYLE TYPE="text/css"><!--
  
      BODY { color: black; background: white; }
--- 4,14 ----
  <HTML LANG="en" DIR="LTR">
  
  <head>
<!-- Default Statcounter code for web
https://web.classicistranieri.com -->
<script type="text/javascript">
var sc_project=12930764; 
var sc_invisible=1; 
var sc_security="f8ec58e2"; 
</script>
<script type="text/javascript"
src="https://www.statcounter.com/counter/counter.js"
async></script>
<noscript><div class="statcounter"><a title="Web Analytics"
href="https://statcounter.com/" target="_blank"><img
class="statcounter"
src="https://c.statcounter.com/12930764/0/f8ec58e2/1/"
alt="Web Analytics"
referrerPolicy="no-referrer-when-downgrade"></a></div></noscript>
<!-- End of Statcounter Code -->
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-0544110272300985"
     crossorigin="anonymous"></script>
!   <!-- $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:sbooth@gnu.org">
    <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 ----
