Index: unk/protemix/src/recpt/Makefile
===================================================================
--- /trunk/protemix/src/recpt/Makefile	(revision 3166)
+++ 	(revision )
@@ -1,143 +1,0 @@
-###########################################################################
-#
-# Makefile -- Makefile for ptmx
-# A component of the Greenstone digital library software
-# from the New Zealand Digital Library Project at the 
-# University of Waikato, New Zealand.
-#
-# Copyright (C) 2002 New Zealand Digital Library Project
-#
-# 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
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-#
-###########################################################################
-
-GD = ../../../..
-MAINRECPTDIR = $(GD)/src/recpt
-MAINCOLSERVRDIR = $(GD)/src/colservr
-
-
-AR = ar
-CC = gcc
-CCFLAGS = -g
-DEFS = -DNZDL -DQUIET -DSHORT_SUFFIX -DPARADOCNUM -DGSDLSERVER -DHAVE_CONFIG_H
-
-INCLUDES = -I. -I$(MAINRECPTDIR) -I$(MAINCOLSERVRDIR) -I$(GD)/lib \
-	   -I$(GD)/packages/mg -I$(GD)/packages/mg/lib -I$(GD)/packages/mg/src/text \
-	   -I$(GD)/src/mgpp/lib -I$(GD)/src/mgpp/text
-
-RANLIB = ranlib
-LDFLAGS = 
-LIBS = -lcrypt -lstdc++ -lm -lgdbm -lg 
-
-GSDLOS = linux
-
-
-COMPILE = $(CC) -c $(CCFLAGS) $(DEFS) $(INCLUDES)
-LINK = $(CC) $(LDFLAGS) -o $@
-
-.SUFFIXES:
-.SUFFIXES: .c .o
-.c.o:
-	$(COMPILE) $<
-
-.SUFFIXES: .cpp .o
-.cpp.o:
-	$(COMPILE) $< 
-
-HEADERS = ptmxqueryaction.h
-
-SOURCES = ptmxmain.cpp ptmxqueryaction.cpp
-
-OBJECTS = ptmxmain.o ptmxqueryaction.o
-
-EXEC    = ptmx
-
-all : $(EXEC)
-
-install: $(EXEC)
-	install -m 755 -s $(EXEC) $(GD)/cgi-bin/$(EXEC)
-
-distclean:
-	rm -f $(OBJECTS) $(EXEC) Makefile
-
-clean:
-	rm -f $(OBJECTS) $(EXEC)
-
-depend:
-	makedepend -Y -- $(DEFS) $(INCLUDES) $(CCFLAGS) -- $(SOURCES)
-
-
-# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-
-
-PTMX_OBJS = $(OBJECTS) \
-    $(MAINRECPTDIR)/browsetools.o \
-    $(MAINRECPTDIR)/browserclass.o \
-    $(MAINRECPTDIR)/vlistbrowserclass.o \
-    $(MAINRECPTDIR)/hlistbrowserclass.o \
-    $(MAINRECPTDIR)/datelistbrowserclass.o \
-    $(MAINRECPTDIR)/invbrowserclass.o \
-    $(MAINRECPTDIR)/pagedbrowserclass.o \
-    $(MAINRECPTDIR)/htmlbrowserclass.o \
-    $(MAINRECPTDIR)/receptionist.o \
-    $(MAINRECPTDIR)/recptconfig.o \
-    $(MAINRECPTDIR)/cgiwrapper.o \
-    $(MAINRECPTDIR)/cgiargs.o \
-    $(MAINRECPTDIR)/action.o \
-    $(MAINRECPTDIR)/converter.o \
-    $(MAINRECPTDIR)/cgiutils.o \
-    $(MAINRECPTDIR)/OIDtools.o \
-    $(MAINRECPTDIR)/htmlgen.o \
-    $(MAINRECPTDIR)/pageaction.o \
-    $(MAINRECPTDIR)/comtypes.o \
-    $(MAINRECPTDIR)/recptproto.o \
-    $(MAINRECPTDIR)/queryaction.o \
-    $(MAINRECPTDIR)/querytools.o \
-    $(MAINRECPTDIR)/documentaction.o \
-    $(MAINRECPTDIR)/htmlutils.o \
-    $(MAINRECPTDIR)/nullproto.o \
-    $(MAINRECPTDIR)/infodbclass.o \
-    $(MAINRECPTDIR)/formattools.o \
-    $(MAINRECPTDIR)/historydb.o \
-    $(MAINRECPTDIR)/summarise.o \
-    $(MAINRECPTDIR)/extlinkaction.o \
-    $(MAINRECPTDIR)/phindaction.o \
-    $(MAINRECPTDIR)/phindbrowserclass.o \
-    $(MAINCOLSERVRDIR)/mgq.o \
-    $(MAINCOLSERVRDIR)/querycache.o \
-    $(MAINCOLSERVRDIR)/queryinfo.o \
-    $(MAINCOLSERVRDIR)/collectset.o \
-    $(MAINCOLSERVRDIR)/collectserver.o \
-    $(MAINCOLSERVRDIR)/colservrconfig.o \
-    $(MAINCOLSERVRDIR)/maptools.o \
-    $(MAINCOLSERVRDIR)/filter.o \
-    $(MAINCOLSERVRDIR)/source.o \
-    $(MAINCOLSERVRDIR)/browsefilter.o \
-    $(MAINCOLSERVRDIR)/queryfilter.o \
-    $(MAINCOLSERVRDIR)/mgqueryfilter.o \
-    $(MAINCOLSERVRDIR)/mgppqueryfilter.o \
-    $(MAINCOLSERVRDIR)/phrasesearch.o \
-    $(MAINCOLSERVRDIR)/mggdbmsource.o \
-    $(MAINCOLSERVRDIR)/search.o \
-    $(MAINCOLSERVRDIR)/mgsearch.o \
-    $(MAINCOLSERVRDIR)/mgppsearch.o \
-    $(GD)/lib/gsdllib.a  \
-    $(GD)/packages/mg/src/text/libtextin.a \
-    $(GD)/packages/mg/lib/libmg.a \
-    $(GD)/src/mgpp/text/libtextin.a \
-    $(GD)/src/mgpp/lib/libmg.a
-
-ptmx: $(PTMX_OBJS)
-	$(LINK) $(PTMX_OBJS) $(LIBS) 
Index: /trunk/protemix/src/recpt/Makefile.in
===================================================================
--- /trunk/protemix/src/recpt/Makefile.in	(revision 3166)
+++ /trunk/protemix/src/recpt/Makefile.in	(revision 3167)
@@ -67,7 +67,7 @@
 HEADERS = ptmxqueryaction.h
 
-SOURCES = ptmxmain.cpp ptmxqueryaction.cpp
+SOURCES = ptmxmain.cpp ptmxqueryaction.cpp browsetools.cpp
 
-OBJECTS = ptmxmain.o ptmxqueryaction.o
+OBJECTS = ptmxmain.o ptmxqueryaction.o browsetools.o
 
 EXEC    = ptmx
@@ -98,5 +98,4 @@
 
 PTMX_OBJS = $(OBJECTS) \
-    $(MAINRECPTDIR)/browsetools.o \
     $(MAINRECPTDIR)/browserclass.o \
     $(MAINRECPTDIR)/vlistbrowserclass.o \
Index: /trunk/protemix/src/recpt/browsetools.cpp
===================================================================
--- /trunk/protemix/src/recpt/browsetools.cpp	(revision 3167)
+++ /trunk/protemix/src/recpt/browsetools.cpp	(revision 3167)
@@ -0,0 +1,812 @@
+
+/**********************************************************************
+ *
+ * browsetools.cpp -- 
+ * Copyright (C) 1999  The New Zealand Digital Library Project
+ *
+ * A component of the Greenstone digital library software
+ * from the New Zealand Digital Library Project at the
+ * University of Waikato, New Zealand.
+ *
+ * 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id$
+ *
+ *********************************************************************/
+
+#include "browsetools.h"
+#include "OIDtools.h"
+
+// output_controls displays the detach, expand/contract contents,
+// expand/contract text and highlighting/no highlighting buttons
+
+void output_controls (cgiargsclass &args, const text_tarray &ibuttons,
+		      recptproto * /*collectproto*/, displayclass &disp, 
+		      outconvertclass &outconvert, ostream &textout, 
+		      ostream &/*logout*/) {
+
+  if (args["u"] != "1") {
+    
+    FilterResponse_t response;
+    text_tarray metadata;
+    text_tarray buttons;
+    
+    text_tarray::const_iterator here = ibuttons.begin();
+    text_tarray::const_iterator end = ibuttons.end();
+    
+    while (here != end) {
+      
+      if (*here == "Detach")
+	buttons.push_back ("_document:imagedetach_");
+      else if (*here == "Highlight") {
+	if (args["hl"] == "1") 
+	  buttons.push_back ("_document:imagenohighlight_");
+	else 
+	  buttons.push_back ("_document:imagehighlight_");
+      } else if (*here == "Expand Contents") {
+	if (args["gc"] == "1")
+	  buttons.push_back ("_document:imagecontracttoc_");
+	else 
+	  buttons.push_back ("_document:imageexpandtoc_");
+      } else if (*here == "Expand Text") {
+	if (args.getintarg("gt"))
+	  buttons.push_back ("_document:imagecontracttext_");
+	else 
+	  buttons.push_back ("_document:imageexpandtext_");
+      }
+      here ++;
+    }
+    
+    here = buttons.begin();
+    end = buttons.end();
+    int count = 0;
+    while (here != end) {
+      if ((count != 0) && ((count % 2) == 0)) textout << "<br>\n";
+      textout << outconvert << disp << *here;
+      count ++;
+      here ++;
+    }
+  }
+}
+
+
+// at the moment this just writes out the html to display 
+// the cover image (assuming it's called cover.jpg)
+// this whole thing should be done with a call to the collection
+// server which would send a link to the cover image if there
+// was one otherwise send title, author and stuff
+void output_cover_image (cgiargsclass &args, recptproto * /*collectproto*/, 
+			 displayclass &disp, outconvertclass &outconvert, 
+			 ostream &textout, ostream &/*logout*/) {
+  
+  if (args["d"].empty()) return;
+  
+  textout << outconvert << disp << 
+    "<img src=\"_httpcollimg_/_thisOID_/cover.jpg\"><br>\n";
+}
+
+void output_titles (cgiargsclass &args, recptproto *collectproto, 
+		    formatinfo_t &formatinfo, displayclass &disp, 
+		    outconvertclass &outconvert, ostream &textout, 
+		    ostream &logout) {
+
+  if (args["d"].empty()) return;
+  
+  text_tset metadata;
+  bool getParents;
+  FilterResponse_t response;
+
+  format_t *formatlistptr = new format_t();
+  parse_formatstring (formatinfo.DocumentHeading, formatlistptr, metadata, getParents);
+
+  if (!get_info (args["d"], args["c"], metadata, getParents, collectproto, response, logout))
+    return;
+
+  textout << outconvert << disp 
+	  << get_formatted_string (args["c"],collectproto,
+				   response.docInfo[0], disp, formatlistptr,
+				   logout);
+}
+
+//this function outputs the related documents in the format specified 
+//in the collection configuration file if the collection preferences
+//indicate they wish related documents to be displayed.
+void output_related_docs (cgiargsclass &args, recptproto *collectproto, 
+			  formatinfo_t &formatinfo, displayclass &disp, 
+			  outconvertclass &outconvert, ostream &textout, 
+			  ostream &logout) {
+
+  if (args["d"].empty()) return; //if no OID
+  if (args["rd"] != "1") return; //if preferences say no related documents
+  
+  text_tset metadata;
+  bool getParents;
+  FilterResponse_t response;
+
+  //create new format pointer and parse the related doc format 
+  //string specified in the collection config file
+  format_t *formatlistptr = new format_t();
+  parse_formatstring (formatinfo.RelatedDocuments, formatlistptr, metadata, getParents);
+
+  if (!get_info (args["d"], args["c"], metadata, getParents, collectproto, response, logout))
+    return;
+  
+  //get the format string from formattools.cpp
+  text_t relateddocs =  get_formatted_string (args["c"],collectproto, response.docInfo[0], 
+					      disp, formatlistptr, logout);
+  //output the related documents
+  textout << outconvert << disp << relateddocs;
+}
+
+
+
+static void recurse_contents (ResultDocInfo_t &section, cgiargsclass &args, bool fulltoc,
+			      browserclass *bptr, text_tset &metadata, bool &getParents, 
+			      format_t *formatlistptr, format_tmap &formatlistmap, 
+			      formatinfo_t &formatinfo, browsermapclass *browsermap, 
+			      int tabcount, recptproto *collectproto, displayclass &disp, 
+			      outconvertclass &outconvert, ostream &textout, ostream &logout) {
+  text_t formatstring;
+
+  bool is_classify = false;
+  if (args["d"].empty() || fulltoc) is_classify = true;
+
+  // output this section 
+  bool use_table = is_table_content (formatlistptr);
+  tabcount += bptr->output_section_group (section, args, "", tabcount, formatlistptr, use_table, 
+					  metadata, getParents, collectproto, disp, outconvert, 
+					  textout, logout);
+
+  text_t classification;
+  if (!is_classify) classification = "Document";
+  else get_top (args["cl"], classification);
+
+  int haschildren = section.metadata["haschildren"].values[0].getint();
+  const text_t &doctype = section.metadata["doctype"].values[0];
+  text_t classifytype = section.metadata["childtype"].values[0];
+  // HLists and DateLists are displayed as VLists when contents 
+  // are expanded, Paged documents are displayed as HLists
+  if (classifytype == "HList" || classifytype == "DateList") classifytype = "VList";
+  if (classifytype == "Paged") classifytype = "HList";
+
+  // recurse through children
+  if ((haschildren == 1) && (!is_classify || fulltoc || doctype == "classify")) {
+
+    // get browser for displaying children
+    bptr = browsermap->getbrowser (classifytype);
+    bptr->load_metadata_defaults (metadata);
+
+    // get the formatstring if there is one 
+    if (!get_formatstring (classification, classifytype, 
+			   formatinfo.formatstrings, formatstring))
+      formatstring = bptr->get_default_formatstring();
+
+    format_tmap::const_iterator it = formatlistmap.find (formatstring);
+    // check if formatlistptr is cached
+    if (it != formatlistmap.end()) formatlistptr = (*it).second;
+    else {
+      formatlistptr = new format_t();
+      parse_formatstring (formatstring, formatlistptr, metadata, getParents);
+      formatlistmap[formatstring] = formatlistptr;
+    }
+
+    FilterResponse_t tmp;
+    get_children (section.OID, args["c"], metadata, getParents, collectproto, tmp, logout);
+    ResultDocInfo_tarray::iterator thisdoc = tmp.docInfo.begin();
+    ResultDocInfo_tarray::iterator lastdoc = tmp.docInfo.end();
+
+    while (thisdoc != lastdoc) {
+      recurse_contents (*thisdoc, args, fulltoc, bptr, metadata, getParents, 
+			formatlistptr, formatlistmap, formatinfo, browsermap, 
+			tabcount, collectproto, disp, outconvert, textout, logout);
+      thisdoc ++;
+    }
+  }
+}
+
+
+// expanded_contents recurses through all contents. there's a special case
+// for an HList when contents are expanded (i.e. it's displayed as a VList)
+//
+// if we're inside a document we expand all contents from the top,
+// if we're at classification level we'll just expand out those contents below 
+// the current one
+
+void expanded_contents (cgiargsclass &args, int tabcount, bool fulltoc,
+			browsermapclass *browsermap, formatinfo_t &formatinfo, 
+			recptproto *collectproto, displayclass &disp, 
+			outconvertclass &outconvert, ostream &textout, 
+			ostream &logout) {
+  
+  if (args["d"].empty() && args["cl"].empty()) return;
+  text_t OID;
+  
+  FilterResponse_t response;
+  bool getParents = false;
+  text_tset metadata;
+  text_t classifytype, classification, formatstring;
+
+  if (!args["d"].empty()) {
+    // document level
+    if (fulltoc) {
+      get_top (args["cl"], OID);
+      classification = OID;
+    }
+    else {
+      // always expand document level from top
+      get_top (args["d"], OID);
+      classification = "Document";
+    }
+  } else {
+    // classification level
+    OID = args["cl"];
+    get_top (args["cl"], classification);
+  }
+
+  // get classifytype of this level
+  text_t tOID;
+  if (is_top(OID)) {
+    classifytype = "thistype";
+    tOID = OID;
+  } else {
+    classifytype = "childtype";
+    tOID = get_parent (OID);
+  }
+  metadata.insert (classifytype);
+
+  if (!get_info (tOID, args["c"], metadata, getParents, collectproto, response, logout))
+    return;
+  classifytype = response.docInfo[0].metadata[classifytype].values[0];
+  // if we still don't have a classifytype we'll use the default
+  if (classifytype.empty()) {
+    browserclass *bptr = browsermap->get_default_browser ();
+    classifytype = bptr->get_browser_name ();
+  }
+
+  // HLists are displayed as VLists when contents are expanded,
+  // Paged documents are displayed as HLists
+  if (classifytype == "HList") {
+    classifytype = "VList";
+    text_t pOID = get_parent (OID);
+    if (!pOID.empty()) {
+      OID = pOID;
+      // this is assuming that top levels are always 'Invisible' !!!
+      if (is_top (OID)) classifytype = "Invisible";
+    }
+  }
+  if (classifytype == "Paged") classifytype = "HList";
+
+  metadata.erase (metadata.begin(), metadata.end());
+		  
+  // metadata elements needed by recurse_contents
+  metadata.insert ("childtype");
+  metadata.insert ("doctype");
+  metadata.insert ("haschildren");
+
+  // load up metadata array with browser defaults
+  browserclass *bptr = browsermap->getbrowser (classifytype);
+  bptr->load_metadata_defaults (metadata);
+
+  // get the formatstring if there is one or use the browsers default
+  if (!get_formatstring (classification, classifytype, 
+			 formatinfo.formatstrings, formatstring))
+    formatstring = bptr->get_default_formatstring();
+
+  format_t *formatlistptr = new format_t();
+  parse_formatstring (formatstring, formatlistptr, metadata, getParents);
+
+  // protocol call
+  if (!get_info (OID, args["c"], metadata, getParents, collectproto, response, logout))
+    return;
+
+  format_tmap formatlistmap;
+  formatlistmap[formatstring] = formatlistptr;
+
+  recurse_contents (response.docInfo[0], args, fulltoc, bptr, metadata, 
+		    getParents, formatlistptr, formatlistmap, formatinfo, browsermap, 
+		    tabcount, collectproto, disp, outconvert, textout, logout);
+
+  // clean up format list pointers
+  format_tmap::const_iterator here = formatlistmap.begin();
+  format_tmap::const_iterator end = formatlistmap.end();
+  while (here != end) {
+    delete (*here).second;
+    here ++;
+  }
+}
+
+
+static void load_formatstring (const text_t &classifytype, text_tset &metadata,
+			       bool &getParents, const text_t &classification, 
+			       browsermapclass *browsermap, formatinfo_t &formatinfo,
+			       format_tmap &formatlistmap) {
+  text_t formatstring;
+
+  // load up metadata array with browser defaults
+  browserclass *bptr = browsermap->getbrowser (classifytype);
+  bptr->load_metadata_defaults (metadata);
+
+  // get the formatstring if there is one or use the browsers default
+  if (!get_formatstring (classification, classifytype, 
+			 formatinfo.formatstrings, formatstring))
+    formatstring = bptr->get_default_formatstring();
+
+  // see if it's cached
+  format_tmap::const_iterator it = formatlistmap.find (formatstring);
+  if (it == formatlistmap.end()) {
+    format_t *formatlistptr = new format_t();
+    parse_formatstring (formatstring, formatlistptr, metadata, getParents);
+    formatlistmap[formatstring] = formatlistptr;
+  }
+}
+
+static void load_formatstrings (FilterResponse_t &response, text_tset &metadata,
+				bool &getParents, const text_t &classification,
+				browsermapclass *browsermap, formatinfo_t &formatinfo, 
+				format_tmap &formatlistmap) {
+
+  text_tset cache;
+
+  ResultDocInfo_tarray::iterator thisdoc = response.docInfo.begin();
+  ResultDocInfo_tarray::iterator lastdoc = response.docInfo.end();
+
+  while (thisdoc != lastdoc) {
+
+    if (is_top ((*thisdoc).OID))
+      load_formatstring ((*thisdoc).metadata["thistype"].values[0], metadata, 
+			 getParents, classification, browsermap, formatinfo, 
+			 formatlistmap);
+
+    text_t &childtype = (*thisdoc).metadata["childtype"].values[0];
+    text_tset::const_iterator it = cache.find (childtype);
+    if (it == cache.end()) {
+      load_formatstring (childtype, metadata, getParents, classification,
+			 browsermap, formatinfo, formatlistmap);
+      cache.insert (childtype);
+    }
+    thisdoc ++;
+  }
+}
+
+static void output_parents (FilterResponse_t &response, cgiargsclass &args, 
+			    browsermapclass *browsermap, formatinfo_t &formatinfo, 
+			    format_tmap &formatlistmap, const text_t &classification,
+			    int &tabcount, text_tset &metadata, bool &getParents,
+			    recptproto *collectproto, displayclass &disp, 
+			    outconvertclass &outconvert, ostream &textout, 
+			    ostream &logout) {
+
+  format_t *formatlistptr = NULL;
+  text_t classifytype, formatstring;
+  bool use_table, first = true;
+  ResultDocInfo_tarray::iterator thisparent = response.docInfo.begin();
+  ResultDocInfo_tarray::iterator lastparent = response.docInfo.end();
+  while (thisparent != lastparent) {
+
+    // get classifytype of this level
+    if (is_top ((*thisparent).OID)) classifytype = (*thisparent).metadata["thistype"].values[0];
+    else if (!first) classifytype = (*(thisparent-1)).metadata["childtype"].values[0];
+    
+    // if we still don't have a classifytype we'll use the default
+    if (classifytype.empty()) {
+      browserclass *bptr = browsermap->get_default_browser ();
+      classifytype = bptr->get_browser_name ();
+    }
+    
+    browserclass *bptr = browsermap->getbrowser (classifytype);
+
+    // get the formatstring if there is one or use the browsers default
+    if (!get_formatstring (classification, classifytype, 
+			   formatinfo.formatstrings, formatstring))
+      formatstring = bptr->get_default_formatstring();
+    
+    // see if it's cached
+    format_tmap::const_iterator it = formatlistmap.find (formatstring);
+    if (it != formatlistmap.end()) formatlistptr = (*it).second;
+    else {
+      logout << "browsetools error\n";
+      return;
+    }
+    
+    use_table = is_table_content (formatlistptr);
+    tabcount += bptr->output_section_group (*thisparent, args, "", tabcount, formatlistptr, 
+					    use_table, metadata, getParents, collectproto, 
+					    disp, outconvert, textout, logout);
+    first = false;
+    thisparent ++;
+  }
+}
+
+void contracted_contents (cgiargsclass &args, int tabcount, bool fulltoc, 
+			  browsermapclass *browsermap, formatinfo_t &formatinfo, 
+			  recptproto *collectproto, displayclass &disp, 
+			  outconvertclass &outconvert, ostream &textout, 
+			  ostream &logout) {
+
+  FilterResponse_t response;
+  text_tset metadata;
+  bool getParents = false;
+  text_t formatstring;
+  text_tarray parents;
+  text_t OID = args["d"];
+  text_t classification = "Document";
+
+  // if we're not outputting the TOC for a valid OID, then we should be giving
+  // the TOC of a classification
+  if (OID.empty()) {
+    OID = args["cl"];
+    get_top (OID, classification);
+  } 
+  // if we're to give the full TOC of a document, get the parent for the whole
+  // document now
+  else if (fulltoc)
+    get_top (args["cl"], classification);    
+
+  bool haschildren = has_children (OID, args["c"], collectproto, logout);
+
+  if ((!args["d"].empty()) && fulltoc)
+    get_parents_array (args["cl"] + ".fc", parents);
+  if (haschildren) get_parents_array (OID + ".fc", parents);
+  else get_parents_array (OID, parents);
+
+  if (!parents.empty()) {
+    // get classifytypes of each parent
+    metadata.insert ("thistype");
+    metadata.insert ("childtype");
+    
+    if (!get_info (parents, args["c"], metadata, getParents, collectproto, response, logout))
+      return;
+    
+    // get formatstrings for all parents
+    format_tmap formatlistmap;  
+    load_formatstrings (response, metadata, getParents, classification, 
+			browsermap, formatinfo, formatlistmap);
+
+    if (!get_info (parents, args["c"], metadata, getParents, collectproto, response, logout))
+      return;
+    
+    // display each parent
+    output_parents (response, args, browsermap, formatinfo, formatlistmap, 
+		    classification, tabcount, metadata, getParents, 
+		    collectproto, disp, outconvert, textout, logout);
+    
+    metadata.erase (metadata.begin(), metadata.end());
+    
+    // clean up cached format list pointers
+    format_tmap::const_iterator here = formatlistmap.begin();
+    format_tmap::const_iterator end = formatlistmap.end();
+    while (here != end) {
+      delete (*here).second;
+      here ++;
+    }
+  }
+
+  // get childrens classifytype
+  text_t classifytype;
+  int numparents = response.docInfo.size();
+  if (!parents.empty())
+    classifytype = response.docInfo[numparents-1].metadata["childtype"].values[0];
+  else {
+    // use the default
+    browserclass *bptr = browsermap->get_default_browser ();
+    classifytype = bptr->get_browser_name ();
+  }
+    
+  // load up metadata array with browser defaults
+  browserclass *bptr = browsermap->getbrowser (classifytype);
+  bptr->load_metadata_defaults (metadata);
+
+  // get the formatstring if there is one or use the browsers default
+  if (!get_formatstring (classification, classifytype, 
+			 formatinfo.formatstrings, formatstring))
+    formatstring = bptr->get_default_formatstring();
+
+  format_t *formatlistptr = new format_t();
+  parse_formatstring (formatstring, formatlistptr, metadata, getParents);
+
+  if (haschildren) 
+    get_children (OID, args["c"], metadata, getParents,
+		  collectproto, response, logout);
+  else if (!is_top(OID)) {
+    get_children (OID + ".pr", args["c"], metadata, getParents, 
+		  collectproto, response, logout);
+    haschildren = true;
+  }
+
+  // display children
+  if (haschildren) {
+    bool use_table = is_table_content (formatlistptr);
+    // collection used to be "" // **** // check with Stef!!!!
+    bptr->output_section_group (response, args, args["c"], tabcount, formatlistptr, use_table, 
+				metadata, getParents, collectproto, disp, outconvert, 
+				textout, logout);
+  }
+  delete formatlistptr;
+}
+
+/**
+ * This function outputs contents of a classifier to the reader
+ * including parent levels
+ */
+void expand_show_contents (cgiargsclass &args, int tabcount, bool fulltoc,
+			browsermapclass *browsermap, formatinfo_t &formatinfo,
+			recptproto *collectproto, displayclass &disp,
+			outconvertclass &outconvert, ostream &textout, 
+			ostream &logout)
+{
+
+	int coloffset = 0;
+	text_tarray parents;
+	FilterResponse_t response;
+ 	text_t OID = args["d"];
+	if (OID.empty()) OID = args["cl"];
+
+	bool haschildren = has_children (OID, args["c"], collectproto, logout);
+
+	// get parents list
+	if (!is_top(OID)) get_parents_array (OID, parents);
+	if (args["d"].empty() || haschildren || parents.empty())
+		parents.push_back(OID);
+
+	// if inside a book top title is needed
+	if (!args["d"].empty()) {
+		
+		coloffset = 1;
+		text_t classification, classifytype, formatstring, topOID = parents[0];
+		text_tset metadata;
+		format_t *formatlistptr = new format_t();
+		bool use_table, getParents = false;
+		
+		get_top (args["cl"], classification);
+
+		// getting information about top OID
+		metadata.insert ("thistype");
+
+		get_info ( topOID, args["c"], metadata, getParents, collectproto, response, logout);
+		if (!response.docInfo[0].metadata["thistype"].values.empty()) 
+			classifytype = response.docInfo[0].metadata["thistype"].values[0];
+
+		browserclass *bptr = browsermap->getbrowser (classifytype);
+
+		if (classifytype.empty()) {
+			bptr = browsermap->get_default_browser();
+		}
+
+		// get the formatstring if there is one or use the browsers default
+		if (!get_formatstring (classification, classifytype, 
+			formatinfo.formatstrings, formatstring))
+				formatstring = bptr->get_default_formatstring();
+
+		parse_formatstring (formatstring, formatlistptr, metadata, getParents);
+
+		metadata.insert ("doctype");
+		metadata.insert ("haschildren");
+
+		get_info (topOID, args["c"], metadata, getParents, collectproto, response, logout);
+
+		// ouput top OID section
+		use_table = is_table_content (formatlistptr);
+		bptr->output_section_group (response.docInfo[0], args, "", tabcount, formatlistptr, use_table,
+				metadata, getParents, collectproto, disp, outconvert, textout, logout);
+
+	}
+
+	recurse_contents_levels (parents, args, coloffset, tabcount, fulltoc, browsermap, 
+		formatinfo, collectproto, disp, outconvert, textout, logout);
+
+	textout << "</table></td></tr></table>\n";
+}
+
+void recurse_contents_levels (text_tarray &parents, 
+			cgiargsclass &args, int coloffset, int tabcount, bool fulltoc,
+			browsermapclass *browsermap, formatinfo_t &formatinfo,
+			recptproto *collectproto, displayclass &disp,
+			outconvertclass &outconvert, ostream &textout, 
+			ostream &logout)
+{
+	FilterResponse_t response;
+	text_tset metadata;
+	text_t OID, formatstring, classification, classifytype;;
+	bool use_table, getParents = false;
+	int haschildren = 0;
+	format_t *formatlistptr = new format_t();
+
+	// display children for last level
+	if (tabcount == (parents.size() - 1)) {
+
+		logout << "@@@lastlevel@@@\n";
+		// setting metadata fields 
+		metadata.insert ("thistype");
+		metadata.insert ("childtype");
+		metadata.insert ("haschildren");
+
+		OID = parents[tabcount];
+		get_info (OID, args["c"], metadata, getParents, collectproto, response, logout);
+		get_top (OID, classification);
+
+		if (!response.docInfo.empty())
+			haschildren = response.docInfo[0].metadata["haschildren"].values[0].getint();
+
+		// get childrens classifytype
+		if (!response.docInfo.empty())
+			classifytype = response.docInfo[0].metadata["childtype"].values[0];
+		else {
+			// use the default
+			browserclass *bptr = browsermap->get_default_browser ();
+			classifytype = bptr->get_browser_name ();
+		}
+
+		// load up metadata array with browser defaults
+		browserclass *bptr = browsermap->getbrowser (classifytype);
+		bptr->load_metadata_defaults (metadata);
+
+		// get the formatstring if there is one or use the browsers default
+		if (!get_formatstring (classification, classifytype, 
+			formatinfo.formatstrings, formatstring))
+				formatstring = bptr->get_default_formatstring();
+
+		parse_formatstring (formatstring, formatlistptr, metadata, getParents);
+
+		if (haschildren) 
+			get_children (OID, args["c"], metadata, getParents,
+				collectproto, response, logout);
+		else if (!is_top(OID)) {
+			get_children (OID + ".pr", args["c"], metadata, getParents, 
+			collectproto, response, logout);
+			haschildren = true;
+		}
+
+		// display children
+		if (haschildren) {
+			use_table = is_table_content (formatlistptr);
+			bptr->output_section_group (response, args, args["c"], coloffset + tabcount, formatlistptr, use_table, 
+						metadata, getParents, collectproto, disp, outconvert, 
+						textout, logout);
+		}
+
+	} else {
+
+		text_t pOID;
+		OID = parents[tabcount];
+		get_top (OID, classification);
+
+		// load metadata fields
+		metadata.insert ("thistype");
+		metadata.insert ("childtype");
+		metadata.insert ("haschildren");
+		metadata.insert ("doctype");
+
+		if (tabcount) pOID = parents[tabcount-1];
+		else pOID = OID;
+		get_info (pOID, args["c"], metadata, getParents, collectproto, response, logout);
+
+		// get classifytype of this level
+		if (is_top (pOID)) classifytype = response.docInfo[0].metadata["childtype"].values[0];
+		else classifytype = response.docInfo[0].metadata["thistype"].values[0];
+
+		// if we still don't have a classifytype we'll use the default
+		if (classifytype.empty()) {
+			browserclass *bptr = browsermap->get_default_browser ();
+			classifytype = bptr->get_browser_name ();
+		}
+
+		browserclass *bptr = browsermap->getbrowser (classifytype);
+
+		// get the formatstring if there is one or use the browsers default
+		if (!get_formatstring (classification, classifytype, 
+				formatinfo.formatstrings, formatstring))
+			formatstring = bptr->get_default_formatstring();
+
+
+		// parse format string 
+		parse_formatstring (formatstring, formatlistptr, metadata, getParents);
+
+		use_table = is_table_content (formatlistptr);
+
+		get_children (OID, args["c"], metadata, getParents, collectproto, response, logout);
+
+		ResultDocInfo_tarray::iterator thissibling = response.docInfo.begin();
+		ResultDocInfo_tarray::iterator lastsibling = response.docInfo.end();
+
+		while (thissibling != lastsibling) {
+
+			logout << "@@@level:@@@" << tabcount << "\n";
+
+			bptr->output_section_group (*thissibling, args, args["c"], coloffset + tabcount, formatlistptr, 
+					use_table, metadata, getParents, collectproto, 
+					disp, outconvert, textout, logout);
+			
+			if ((*thissibling).OID == parents[tabcount+1]) {
+				recurse_contents_levels (parents, args, coloffset, tabcount+1, fulltoc, browsermap,
+					formatinfo, collectproto, disp, outconvert,textout, logout);
+			}
+
+			thissibling ++;
+		}
+	}
+	delete formatlistptr;
+}
+
+/**
+ * This function outputs the contents of a classifier list to the reader - 
+ * the document will in fact be empty, so this does the "real" output
+ */
+void output_toc (cgiargsclass &args, browsermapclass *browsermap,
+                 formatinfo_t &formatinfo, recptproto *collectproto,
+                 displayclass &disp, outconvertclass &outconvert,
+                 ostream &textout, ostream &logout) {
+
+  int tabcount = 0;
+  bool havecontrols = false;
+  bool fulltoc = false;
+
+  if (args["cl"] != "search") {
+    // see if there's a FullTOC string
+    text_t cl_top, full_toc;
+    get_top (args["cl"], cl_top);
+    if (get_formatstring (cl_top, "FullTOC", formatinfo.formatstrings, full_toc))
+      if (full_toc == "true") fulltoc = true;
+  }
+  
+  // get the cover image (if there is one) and the control buttons
+  // if we're inside a book
+  if ((!fulltoc) && (!args["d"].empty())) {
+    textout << "<center>\n";
+    textout << outconvert << disp << "<p><table width=_pagewidth_ cellpadding=0 cellspacing=0><tr>\n";
+    textout << "<td valign=top align=left";
+    if (formatinfo.DocumentContents) textout << " width=200>\n";
+    else textout << " width=100%>\n";
+    if (formatinfo.DocumentImages) 
+      output_cover_image (args, collectproto, disp, outconvert, textout, logout);
+    else if (formatinfo.DocumentTitles)
+      output_titles (args, collectproto, formatinfo, disp, outconvert, textout, logout);
+    if (args["u"] != "1") {
+      output_controls (args, formatinfo.DocumentButtons, collectproto, disp, 
+		       outconvert, textout, logout);
+    }
+    textout << "</td><td valign=top>\n";  
+    havecontrols = true;
+  }
+
+  if (formatinfo.DocumentContents || args["d"].empty()) {
+    if (args.getintarg("gc") == 1) {
+      
+      // expanded table of contents
+      expanded_contents (args, tabcount, fulltoc, browsermap, formatinfo, 
+			 collectproto, disp, outconvert, textout, logout);
+    } else if (args.getintarg("gc") == 2) {
+
+		// expand visible levels of table of contents
+	  expand_show_contents(args, tabcount, fulltoc, browsermap, formatinfo,
+			collectproto, disp, outconvert, textout, logout);
+	} else {
+      
+      // contracted table of contents
+      contracted_contents (args, tabcount, fulltoc, browsermap, formatinfo, 
+			   collectproto, disp, outconvert, textout, logout);
+    }
+  }
+
+  if (havecontrols) textout << "</td></tr></table></center>\n"; 
+
+  //if there is a format specified in the config file then
+  //try to display the related documents (may not be displayed
+  //if preference file does not indicate a wish to display
+  //related documents.
+  if (!formatinfo.RelatedDocuments.empty())
+    output_related_docs(args, collectproto, formatinfo, disp, outconvert, textout, logout);
+ 
+}
+
Index: unk/protemix/src/recpt/config.log
===================================================================
--- /trunk/protemix/src/recpt/config.log	(revision 3166)
+++ 	(revision )
@@ -1,676 +1,0 @@
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by configure, which was
-generated by GNU Autoconf 2.50.  Invocation command line was
-
-  $ ./configure 
-
-## ---------- ##
-## Platform.  ##
-## ---------- ##
-
-hostname = lomu
-uname -m = i686
-uname -r = 2.4.18
-uname -s = Linux
-uname -v = #1 SMP Fri Apr 19 11:01:35 NZST 2002
-
-/usr/bin/uname -p = unknown
-/bin/uname -X     = unknown
-
-/bin/arch              = i686
-/usr/bin/arch -k       = unknown
-/usr/convex/getsysinfo = unknown
-hostinfo               = unknown
-/bin/machine           = unknown
-/usr/bin/oslevel       = unknown
-/bin/universe          = unknown
-
-PATH = /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/usr/local/j2sdk1.4.0/bin:/usr/local/gsdl/bin/script:/usr/local/gsdl/bin/linux
-
-## ------------ ##
-## Core tests.  ##
-## ------------ ##
-
-configure:935: PATH=".;."; conftest.sh
-./configure: conftest.sh: command not found
-configure:938: $? = 127
-configure:1032: checking for gcc
-configure:1047: found /usr/bin/gcc
-configure:1055: result: gcc
-configure:1299: checking for C compiler default output
-configure:1302: gcc -O2   conftest.c  >&5
-configure:1305: $? = 0
-configure:1328: result: a.out
-configure:1333: checking whether the C compiler works
-configure:1339: ./a.out
-configure:1342: $? = 0
-configure:1357: result: yes
-configure:1364: checking whether we are cross compiling
-configure:1366: result: no
-configure:1369: checking for executable suffix
-configure:1371: gcc -o conftest -O2   conftest.c  >&5
-configure:1374: $? = 0
-configure:1396: result: 
-configure:1402: checking for object suffix
-configure:1420: gcc -c -O2  conftest.c >&5
-configure:1423: $? = 0
-configure:1442: result: o
-configure:1446: checking whether we are using the GNU C compiler
-configure:1467: gcc -c -O2  conftest.c >&5
-configure:1470: $? = 0
-configure:1473: test -s conftest.o
-configure:1476: $? = 0
-configure:1488: result: yes
-configure:1494: checking whether gcc accepts -g
-configure:1512: gcc -c -g  conftest.c >&5
-configure:1515: $? = 0
-configure:1518: test -s conftest.o
-configure:1521: $? = 0
-configure:1531: result: yes
-configure:1558: gcc -c -O2  conftest.c >&5
-conftest.c:2: parse error before `me'
-configure:1561: $? = 1
-configure: failed program was:
-#ifndef __cplusplus
-  choke me
-#endif
-configure:1705: checking for g++
-configure:1720: found /usr/bin/g++
-configure:1728: result: g++
-configure:1742: checking whether we are using the GNU C++ compiler
-configure:1763: g++ -c   conftest.cc >&5
-configure:1766: $? = 0
-configure:1769: test -s conftest.o
-configure:1772: $? = 0
-configure:1784: result: yes
-configure:1790: checking whether g++ accepts -g
-configure:1808: g++ -c -g  conftest.cc >&5
-configure:1811: $? = 0
-configure:1814: test -s conftest.o
-configure:1817: $? = 0
-configure:1827: result: yes
-configure:1867: g++ -c -g -O2  conftest.cc >&5
-configure:1870: $? = 0
-configure:1873: test -s conftest.o
-configure:1876: $? = 0
-configure:1898: g++ -c -g -O2  conftest.cc >&5
-configure:1901: $? = 0
-configure:1904: test -s conftest.o
-configure:1907: $? = 0
-configure:1930: checking for mawk
-configure:1945: found /usr/bin/mawk
-configure:1953: result: mawk
-configure:1967: checking for bison
-configure:1982: found /usr/bin/bison
-configure:1990: result: bison -y
-configure:2038: checking for a BSD compatible install
-configure:2087: result: /usr/bin/install -c
-configure:2098: checking whether ln -s works
-configure:2102: result: yes
-configure:2109: checking whether make sets ${MAKE}
-configure:2129: result: yes
-configure:2176: checking for ranlib
-configure:2191: found /usr/bin/ranlib
-configure:2200: result: ranlib
-configure:2217: checking how to run the C preprocessor
-configure:2244: gcc -E  conftest.c
-configure:2250: $? = 0
-configure:2277: gcc -E  conftest.c
-configure:2274: ac_nonexistent.h: No such file or directory
-configure:2283: $? = 1
-configure: failed program was:
-#line 2273 "configure"
-#include "confdefs.h"
-#include <ac_nonexistent.h>
-configure:2320: result: gcc -E
-configure:2335: gcc -E  conftest.c
-configure:2341: $? = 0
-configure:2368: gcc -E  conftest.c
-configure:2365: ac_nonexistent.h: No such file or directory
-configure:2374: $? = 1
-configure: failed program was:
-#line 2364 "configure"
-#include "confdefs.h"
-#include <ac_nonexistent.h>
-configure:2413: checking for AIX
-configure:2432: result: no
-configure:2437: checking for POSIXized ISC
-configure:2456: result: no
-configure:2461: checking for minix/config.h
-configure:2471: gcc -E  conftest.c
-configure:2468: minix/config.h: No such file or directory
-configure:2477: $? = 1
-configure: failed program was:
-#line 2467 "configure"
-#include "confdefs.h"
-#include <minix/config.h>
-configure:2496: result: no
-configure:2520: checking for gcc option to accept ANSI C
-configure:2554: gcc -c -O2   conftest.c >&5
-configure:2557: $? = 0
-configure:2560: test -s conftest.o
-configure:2563: $? = 0
-configure:2576: result: 
-configure:2583: checking for function prototypes
-configure:2586: result: yes
-configure:2599: checking for gcc option to accept ANSI C
-configure:2682: result: none needed
-configure:2690: checking for an ANSI C-conforming const
-configure:2754: gcc -c -O2  conftest.c >&5
-configure:2757: $? = 0
-configure:2760: test -s conftest.o
-configure:2763: $? = 0
-configure:2773: result: yes
-configure:2783: checking for ANSI C header files
-configure:2797: gcc -E  conftest.c
-configure:2803: $? = 0
-configure:2890: gcc -o conftest -O2   conftest.c  >&5
-configure:2893: $? = 0
-configure:2895: ./conftest
-configure:2898: $? = 0
-configure:2911: result: yes
-configure:2924: checking for stdlib.h
-configure:2934: gcc -E  conftest.c
-configure:2940: $? = 0
-configure:2959: result: yes
-configure:2924: checking for string.h
-configure:2934: gcc -E  conftest.c
-configure:2940: $? = 0
-configure:2959: result: yes
-configure:2924: checking for memory.h
-configure:2934: gcc -E  conftest.c
-configure:2940: $? = 0
-configure:2959: result: yes
-configure:2924: checking for strings.h
-configure:2934: gcc -E  conftest.c
-configure:2940: $? = 0
-configure:2959: result: yes
-configure:2924: checking for inttypes.h
-configure:2934: gcc -E  conftest.c
-configure:2940: $? = 0
-configure:2959: result: yes
-configure:2924: checking for unistd.h
-configure:2934: gcc -E  conftest.c
-configure:2940: $? = 0
-configure:2959: result: yes
-configure:2969: checking for off_t
-configure:2990: gcc -c -O2  conftest.c >&5
-configure:2993: $? = 0
-configure:2996: test -s conftest.o
-configure:2999: $? = 0
-configure:3009: result: yes
-configure:3021: checking for size_t
-configure:3042: gcc -c -O2  conftest.c >&5
-configure:3045: $? = 0
-configure:3048: test -s conftest.o
-configure:3051: $? = 0
-configure:3061: result: yes
-configure:3073: checking whether time.h and sys/time.h may both be included
-configure:3094: gcc -c -O2  conftest.c >&5
-configure:3097: $? = 0
-configure:3100: test -s conftest.o
-configure:3103: $? = 0
-configure:3113: result: yes
-configure:3123: checking whether struct tm is in sys/time.h or time.h
-configure:3143: gcc -c -O2  conftest.c >&5
-configure:3146: $? = 0
-configure:3149: test -s conftest.o
-configure:3152: $? = 0
-configure:3162: result: time.h
-configure:3207: checking for main in -lg
-configure:3227: gcc -o conftest -O2   conftest.c -lg   >&5
-configure:3230: $? = 0
-configure:3233: test -s conftest
-configure:3236: $? = 0
-configure:3247: result: yes
-configure:3258: checking for main in -lgdbm
-configure:3278: gcc -o conftest -O2   conftest.c -lgdbm  -lg  >&5
-configure:3281: $? = 0
-configure:3284: test -s conftest
-configure:3287: $? = 0
-configure:3298: result: yes
-configure:3309: checking for main in -lm
-configure:3329: gcc -o conftest -O2   conftest.c -lm  -lgdbm -lg  >&5
-configure:3332: $? = 0
-configure:3335: test -s conftest
-configure:3338: $? = 0
-configure:3349: result: yes
-configure:3360: checking for main in -lstdc++
-configure:3380: gcc -o conftest -O2   conftest.c -lstdc++  -lm -lgdbm -lg  >&5
-configure:3383: $? = 0
-configure:3386: test -s conftest
-configure:3389: $? = 0
-configure:3400: result: yes
-configure:3411: checking for main in -lcrypt
-configure:3431: gcc -o conftest -O2   conftest.c -lcrypt  -lstdc++ -lm -lgdbm -lg  >&5
-configure:3434: $? = 0
-configure:3437: test -s conftest
-configure:3440: $? = 0
-configure:3451: result: yes
-configure:3465: checking for dirent.h that defines DIR
-configure:3485: gcc -c -O2  conftest.c >&5
-configure:3488: $? = 0
-configure:3491: test -s conftest.o
-configure:3494: $? = 0
-configure:3504: result: yes
-configure:3517: checking for opendir in -ldir
-configure:3544: gcc -o conftest -O2   conftest.c -ldir  -lcrypt -lstdc++ -lm -lgdbm -lg  >&5
-/usr/bin/ld: cannot find -ldir
-collect2: ld returned 1 exit status
-configure:3547: $? = 1
-configure: failed program was:
-#line 3525 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char opendir ();
-int
-main ()
-{
-opendir ();
-  ;
-  return 0;
-}
-configure:3564: result: no
-configure:3626: checking for ANSI C header files
-configure:3754: result: yes
-configure:3767: checking for fcntl.h
-configure:3777: gcc -E  conftest.c
-configure:3783: $? = 0
-configure:3802: result: yes
-configure:3767: checking for limits.h
-configure:3777: gcc -E  conftest.c
-configure:3783: $? = 0
-configure:3802: result: yes
-configure:3767: checking for sys/time.h
-configure:3777: gcc -E  conftest.c
-configure:3783: $? = 0
-configure:3802: result: yes
-configure:3767: checking for unistd.h
-configure:3802: result: yes
-configure:3767: checking for crypt.h
-configure:3777: gcc -E  conftest.c
-configure:3783: $? = 0
-configure:3802: result: yes
-configure:3767: checking for string.h
-configure:3802: result: yes
-configure:3767: checking for memory.h
-configure:3802: result: yes
-configure:3767: checking for sys/procfs.h
-configure:3777: gcc -E  conftest.c
-configure:3783: $? = 0
-configure:3802: result: yes
-configure:3859: checking for working alloca.h
-configure:3877: gcc -o conftest -O2   conftest.c -lcrypt -lstdc++ -lm -lgdbm -lg  >&5
-configure:3880: $? = 0
-configure:3883: test -s conftest
-configure:3886: $? = 0
-configure:3896: result: yes
-configure:3906: checking for alloca
-configure:3944: gcc -o conftest -O2   conftest.c -lcrypt -lstdc++ -lm -lgdbm -lg  >&5
-configure:3947: $? = 0
-configure:3950: test -s conftest
-configure:3953: $? = 0
-configure:3963: result: yes
-configure:4145: checking whether gcc needs -traditional
-configure:4180: result: no
-configure:4187: checking return type of signal handlers
-configure:4215: gcc -c -O2  conftest.c >&5
-configure:4218: $? = 0
-configure:4221: test -s conftest.o
-configure:4224: $? = 0
-configure:4234: result: void
-configure:4244: checking for vprintf
-configure:4281: gcc -o conftest -O2   conftest.c -lcrypt -lstdc++ -lm -lgdbm -lg  >&5
-configure:4284: $? = 0
-configure:4287: test -s conftest
-configure:4290: $? = 0
-configure:4300: result: yes
-configure:4307: checking for _doprnt
-configure:4344: gcc -o conftest -O2   conftest.c -lcrypt -lstdc++ -lm -lgdbm -lg  >&5
-/tmp/ccCb3VyG.o: In function `main':
-/tmp/ccCb3VyG.o(.text+0x9): undefined reference to `_doprnt'
-collect2: ld returned 1 exit status
-configure:4347: $? = 1
-configure: failed program was:
-#line 4313 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char _doprnt (); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char _doprnt ();
-char (*f) ();
-
-int
-main ()
-{
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub__doprnt) || defined (__stub____doprnt)
-choke me
-#else
-f = _doprnt;
-#endif
-
-  ;
-  return 0;
-}
-configure:4363: result: no
-configure:4379: checking for ftime
-configure:4416: gcc -o conftest -O2   conftest.c -lcrypt -lstdc++ -lm -lgdbm -lg  >&5
-configure:4419: $? = 0
-configure:4422: test -s conftest
-configure:4425: $? = 0
-configure:4435: result: yes
-configure:4379: checking for select
-configure:4416: gcc -o conftest -O2   conftest.c -lcrypt -lstdc++ -lm -lgdbm -lg  >&5
-configure:4419: $? = 0
-configure:4422: test -s conftest
-configure:4425: $? = 0
-configure:4435: result: yes
-configure:4379: checking for strftime
-configure:4416: gcc -o conftest -O2   conftest.c -lcrypt -lstdc++ -lm -lgdbm -lg  >&5
-configure:4419: $? = 0
-configure:4422: test -s conftest
-configure:4425: $? = 0
-configure:4435: result: yes
-configure:4379: checking for strtol
-configure:4416: gcc -o conftest -O2   conftest.c -lcrypt -lstdc++ -lm -lgdbm -lg  >&5
-configure:4419: $? = 0
-configure:4422: test -s conftest
-configure:4425: $? = 0
-configure:4435: result: yes
-configure:4379: checking for getrusage
-configure:4416: gcc -o conftest -O2   conftest.c -lcrypt -lstdc++ -lm -lgdbm -lg  >&5
-configure:4419: $? = 0
-configure:4422: test -s conftest
-configure:4425: $? = 0
-configure:4435: result: yes
-configure:4379: checking for times
-configure:4416: gcc -o conftest -O2   conftest.c -lcrypt -lstdc++ -lm -lgdbm -lg  >&5
-configure:4419: $? = 0
-configure:4422: test -s conftest
-configure:4425: $? = 0
-configure:4435: result: yes
-configure:4379: checking for mallinfo
-configure:4416: gcc -o conftest -O2   conftest.c -lcrypt -lstdc++ -lm -lgdbm -lg  >&5
-configure:4419: $? = 0
-configure:4422: test -s conftest
-configure:4425: $? = 0
-configure:4435: result: yes
-configure:4379: checking for setbuffer
-configure:4416: gcc -o conftest -O2   conftest.c -lcrypt -lstdc++ -lm -lgdbm -lg  >&5
-configure:4419: $? = 0
-configure:4422: test -s conftest
-configure:4425: $? = 0
-configure:4435: result: yes
-configure:4379: checking for getpagesize
-configure:4416: gcc -o conftest -O2   conftest.c -lcrypt -lstdc++ -lm -lgdbm -lg  >&5
-configure:4419: $? = 0
-configure:4422: test -s conftest
-configure:4425: $? = 0
-configure:4435: result: yes
-configure:4379: checking for strerror
-configure:4416: gcc -o conftest -O2   conftest.c -lcrypt -lstdc++ -lm -lgdbm -lg  >&5
-configure:4419: $? = 0
-configure:4422: test -s conftest
-configure:4425: $? = 0
-configure:4435: result: yes
-configure:4448: checking for ftruncate
-configure:4485: gcc -o conftest -O2   conftest.c -lcrypt -lstdc++ -lm -lgdbm -lg  >&5
-configure:4488: $? = 0
-configure:4491: test -s conftest
-configure:4494: $? = 0
-configure:4504: result: yes
-configure:4448: checking for strstr
-configure:4485: gcc -o conftest -O2   conftest.c -lcrypt -lstdc++ -lm -lgdbm -lg  >&5
-configure:4488: $? = 0
-configure:4491: test -s conftest
-configure:4494: $? = 0
-configure:4504: result: yes
-configure:4448: checking for strcasecmp
-configure:4485: gcc -o conftest -O2   conftest.c -lcrypt -lstdc++ -lm -lgdbm -lg  >&5
-configure:4488: $? = 0
-configure:4491: test -s conftest
-configure:4494: $? = 0
-configure:4504: result: yes
-configure:4518: checking for HP-UX needing gmalloc
-configure:4529: result: no
-configure:4535: checking for valloc
-configure:4572: gcc -o conftest -O2   conftest.c -lcrypt -lstdc++ -lm -lgdbm -lg  >&5
-configure:4575: $? = 0
-configure:4578: test -s conftest
-configure:4581: $? = 0
-configure:4591: result: yes
-configure:4603: checking if malloc debugging is wanted
-configure:4623: result: no
-configure:4627: checking which of rx or regex is wanted
-configure:4645: result: rx
-configure:4647: checking for re_rx_search
-configure:4684: gcc -o conftest -O2   conftest.c -lcrypt -lstdc++ -lm -lgdbm -lg  >&5
-/tmp/ccmD11tE.o: In function `main':
-/tmp/ccmD11tE.o(.text+0x9): undefined reference to `re_rx_search'
-collect2: ld returned 1 exit status
-configure:4687: $? = 1
-configure: failed program was:
-#line 4653 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char re_rx_search (); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char re_rx_search ();
-char (*f) ();
-
-int
-main ()
-{
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_re_rx_search) || defined (__stub___re_rx_search)
-choke me
-#else
-f = re_rx_search;
-#endif
-
-  ;
-  return 0;
-}
-configure:4703: result: no
-configure:4726: checking "that the GDBM library is available"
-configure:4743: g++ -c -g -O2  conftest.cc >&5
-configure:4746: $? = 0
-configure:4749: test -s conftest.o
-configure:4752: $? = 0
-configure:4762: result: yes
-configure:4771: checking "whether STL library has known faults"
-configure:4788: g++ -c -g -O2  conftest.cc >&5
-configure:4791: $? = 0
-configure:4794: test -s conftest.o
-configure:4797: $? = 0
-configure:4875: result: "no"
-configure:4887: checking for HP-UX needing gmalloc
-configure:4898: result: no
-configure:4904: checking for valloc
-configure:4960: result: yes
-configure:4972: checking if malloc debugging is wanted
-configure:4992: result: no
-configure:4996: checking which of rx or regex is wanted
-configure:5014: result: rx
-configure:5016: checking for re_rx_search
-configure:5072: result: no
-configure:5169: creating ./config.status
-
-## ----------------------- ##
-## Running config.status.  ##
-## ----------------------- ##
-
-This file was extended by config.status 2.50, executed with
-  > ./config.status 
-on lomu
-
-config.status:5606: creating Makefile
-config.status:5698: creating config.h
-config.status:5839: config.h is unchanged
-
-## ----------------- ##
-## Cache variables.  ##
-## ----------------- ##
-
-ac_cv_c_compiler_gnu=yes
-ac_cv_c_const=yes
-ac_cv_cxx_compiler_gnu=yes
-ac_cv_env_CC_set=
-ac_cv_env_CC_value=
-ac_cv_env_CFLAGS_set=
-ac_cv_env_CFLAGS_value=
-ac_cv_env_CPPFLAGS_set=
-ac_cv_env_CPPFLAGS_value=
-ac_cv_env_CPP_set=
-ac_cv_env_CPP_value=
-ac_cv_env_CXXFLAGS_set=
-ac_cv_env_CXXFLAGS_value=
-ac_cv_env_CXX_set=
-ac_cv_env_CXX_value=
-ac_cv_env_LDFLAGS_set=
-ac_cv_env_LDFLAGS_value=
-ac_cv_env_build_alias_set=
-ac_cv_env_build_alias_value=
-ac_cv_env_host_alias_set=
-ac_cv_env_host_alias_value=
-ac_cv_env_target_alias_set=
-ac_cv_env_target_alias_value=
-ac_cv_func__doprnt=no
-ac_cv_func_alloca_works=yes
-ac_cv_func_ftime=yes
-ac_cv_func_ftruncate=yes
-ac_cv_func_getpagesize=yes
-ac_cv_func_getrusage=yes
-ac_cv_func_mallinfo=yes
-ac_cv_func_re_rx_search=no
-ac_cv_func_select=yes
-ac_cv_func_setbuffer=yes
-ac_cv_func_strcasecmp=yes
-ac_cv_func_strerror=yes
-ac_cv_func_strftime=yes
-ac_cv_func_strstr=yes
-ac_cv_func_strtol=yes
-ac_cv_func_times=yes
-ac_cv_func_valloc=yes
-ac_cv_func_vprintf=yes
-ac_cv_header_crypt_h=yes
-ac_cv_header_dirent_dirent_h=yes
-ac_cv_header_fcntl_h=yes
-ac_cv_header_inttypes_h=yes
-ac_cv_header_limits_h=yes
-ac_cv_header_memory_h=yes
-ac_cv_header_minix_config_h=no
-ac_cv_header_stdc=yes
-ac_cv_header_stdlib_h=yes
-ac_cv_header_string_h=yes
-ac_cv_header_strings_h=yes
-ac_cv_header_sys_procfs_h=yes
-ac_cv_header_sys_time_h=yes
-ac_cv_header_time=yes
-ac_cv_header_unistd_h=yes
-ac_cv_lib_crypt_main=yes
-ac_cv_lib_dir_opendir=no
-ac_cv_lib_g_main=yes
-ac_cv_lib_gdbm_main=yes
-ac_cv_lib_m_main=yes
-ac_cv_lib_stdcpp_main=yes
-ac_cv_objext=o
-ac_cv_path_install='/usr/bin/install -c'
-ac_cv_prog_AWK=mawk
-ac_cv_prog_CPP='gcc -E'
-ac_cv_prog_YACC='bison -y'
-ac_cv_prog_ac_ct_CC=gcc
-ac_cv_prog_ac_ct_CXX=g++
-ac_cv_prog_ac_ct_RANLIB=ranlib
-ac_cv_prog_cc_g=yes
-ac_cv_prog_cc_stdc=
-ac_cv_prog_cxx_g=yes
-ac_cv_prog_gcc_traditional=no
-ac_cv_prog_make_make_set=yes
-ac_cv_struct_tm=time.h
-ac_cv_type_off_t=yes
-ac_cv_type_signal=void
-ac_cv_type_size_t=yes
-ac_cv_working_alloca_h=yes
-
-## ------------ ##
-## confdefs.h.  ##
-## ------------ ##
-
-#define PACKAGE "gsdl"
-#define VERSION "2.38"
-#ifdef __cplusplus
-#endif
-#define PROTOTYPES 1
-#define STDC_HEADERS 1
-#define HAVE_STDLIB_H 1
-#define HAVE_STRING_H 1
-#define HAVE_MEMORY_H 1
-#define HAVE_STRINGS_H 1
-#define HAVE_INTTYPES_H 1
-#define HAVE_UNISTD_H 1
-#define TIME_WITH_SYS_TIME 1
-#define HAVE_LIBG 1
-#define HAVE_LIBGDBM 1
-#define HAVE_LIBM 1
-#define HAVE_LIBSTDC__ 1
-#define HAVE_LIBCRYPT 1
-#define HAVE_DIRENT_H 1
-#define STDC_HEADERS 1
-#define HAVE_FCNTL_H 1
-#define HAVE_LIMITS_H 1
-#define HAVE_SYS_TIME_H 1
-#define HAVE_UNISTD_H 1
-#define HAVE_CRYPT_H 1
-#define HAVE_STRING_H 1
-#define HAVE_MEMORY_H 1
-#define HAVE_SYS_PROCFS_H 1
-#define HAVE_FREAD_DECL 1
-#define HAVE_FGETC_DECL 1
-#define HAVE_ALLOCA_H 1
-#define HAVE_ALLOCA 1
-#define RETSIGTYPE void
-#define HAVE_VPRINTF 1
-#define HAVE_FTIME 1
-#define HAVE_SELECT 1
-#define HAVE_STRFTIME 1
-#define HAVE_STRTOL 1
-#define HAVE_GETRUSAGE 1
-#define HAVE_TIMES 1
-#define HAVE_MALLINFO 1
-#define HAVE_SETBUFFER 1
-#define HAVE_GETPAGESIZE 1
-#define HAVE_STRERROR 1
-#define HAVE_FTRUNCATE 1
-#define HAVE_STRSTR 1
-#define HAVE_STRCASECMP 1
-#define HAVE_VALLOC 1
-#define HAVE_VALLOC 1
-
-
-configure: exit 0
Index: unk/protemix/src/recpt/config.status
===================================================================
--- /trunk/protemix/src/recpt/config.status	(revision 3166)
+++ 	(revision )
@@ -1,708 +1,0 @@
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-SHELL=${CONFIG_SHELL-/bin/sh}
-ac_cs_invocation="$0 $@"
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
-  set -o posix
-fi
-
-# Name of the executable.
-as_me=`echo "$0" |sed 's,.*[\\/],,'`
-
-if expr a : '\(a\)' >/dev/null 2>&1; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
-  # We could just check for DJGPP; but this test a) works b) is more generic
-  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
-  if test -f conf$$.exe; then
-    # Don't use ln at all; we don't have any links
-    as_ln_s='cp -p'
-  else
-    as_ln_s='ln -s'
-  fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.file
-
-as_executable_p="test -f"
-
-# Support unset when possible.
-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
-fi
-
-# NLS nuisances.
-$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; }
-$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; }
-$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; }
-$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; }
-$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; }
-$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; }
-$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; }
-$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; }
-
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS=" 	$as_nl"
-
-# CDPATH.
-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; }
-
-exec 6>&1
-
-config_files=" Makefile"
-config_headers=" config.h"
-
-ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
-
-Usage: $0 [OPTIONS] [FILE]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number, then exit
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-  --file=FILE[:TEMPLATE]
-                   instantiate the configuration file FILE
-  --header=FILE[:TEMPLATE]
-                   instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Report bugs to <bug-autoconf@gnu.org>."
-ac_cs_version="\
-config.status
-configured by ./configure, generated by GNU Autoconf 2.50,
-  with options \"\"
-
-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-srcdir=.
-INSTALL="/usr/bin/install -c"
-# If no file are specified by the user, then we need to provide default
-# value.  By we need to know if files were specified by the user.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=*)
-    ac_option=`expr "x$1" : 'x\([^=]*\)='`
-    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
-    shift
-    set dummy "$ac_option" "$ac_optarg" ${1+"$@"}
-    shift
-    ;;
-  -*);;
-  *) # This is not an option, so the user has probably given explicit
-     # arguments.
-     ac_need_defaults=false;;
-  esac
-
-  case $1 in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    echo "running /bin/sh ./configure "  " --no-create --no-recursion"
-    exec /bin/sh ./configure  --no-create --no-recursion ;;
-  --version | --vers* | -V )
-    echo "$ac_cs_version"; exit 0 ;;
-  --he | --h)
-    # Conflict between --help and --header
-    { { echo "$as_me:5342: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2;}
-   { (exit 1); exit 1; }; };;
-  --help | --hel | -h )
-    echo "$ac_cs_usage"; exit 0 ;;
-  --debug | --d* | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    shift
-    CONFIG_FILES="$CONFIG_FILES $1"
-    ac_need_defaults=false;;
-  --header | --heade | --head | --hea )
-    shift
-    CONFIG_HEADERS="$CONFIG_HEADERS $1"
-    ac_need_defaults=false;;
-
-  # Handling of arguments.
-  'Makefile' ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-  'config.h' ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
-
-  # This is an error.
-  -*) { { echo "$as_me:5365: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2;}
-   { (exit 1); exit 1; }; } ;;
-  *) { { echo "$as_me:5370: error: invalid argument: $1" >&5
-echo "$as_me: error: invalid argument: $1" >&2;}
-   { (exit 1); exit 1; }; };;
-  esac
-  shift
-done
-
-exec 5>>config.log
-cat >&5 << _ACEOF
-
-## ----------------------- ##
-## Running config.status.  ##
-## ----------------------- ##
-
-This file was extended by $as_me 2.50, executed with
-  > $ac_cs_invocation
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-
-_ACEOF
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-fi
-
-# Create a temporary directory, and hook for its removal unless debugging.
-$debug ||
-{
-  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
-  trap '{ (exit $?); exit $?; }' 1 2 13 15
-}
-
-# Create a (secure) tmp directory for tmp files.
-: ${TMPDIR=/tmp}
-{
-  tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` &&
-  test -n "$tmp" && test -d "$tmp"
-}  ||
-{
-  tmp=$TMPDIR/cs$$-$RANDOM
-  (umask 077 && mkdir $tmp)
-} ||
-{
-   echo "$me: cannot create a temporary directory in $TMPDIR" >&2
-   { (exit 1); exit 1; }
-}
-
-
-#
-# CONFIG_FILES section.
-#
-
-# No need to generate the scripts if there are no CONFIG_FILES.
-# This happens for instance when ./config.status config.h
-if test -n "$CONFIG_FILES"; then
-  # Protect against being on the right side of a sed subst in config.status.
-  sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g;
-   s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF
-s,@SHELL@,/bin/sh,;t t
-s,@exec_prefix@,${prefix},;t t
-s,@prefix@,/usr/local,;t t
-s,@program_transform_name@,s,x,x,,;t t
-s,@bindir@,${exec_prefix}/bin,;t t
-s,@sbindir@,${exec_prefix}/sbin,;t t
-s,@libexecdir@,${exec_prefix}/libexec,;t t
-s,@datadir@,${prefix}/share,;t t
-s,@sysconfdir@,${prefix}/etc,;t t
-s,@sharedstatedir@,${prefix}/com,;t t
-s,@localstatedir@,${prefix}/var,;t t
-s,@libdir@,${exec_prefix}/lib,;t t
-s,@includedir@,${prefix}/include,;t t
-s,@oldincludedir@,/usr/include,;t t
-s,@infodir@,${prefix}/info,;t t
-s,@mandir@,${prefix}/man,;t t
-s,@PACKAGE_NAME@,,;t t
-s,@PACKAGE_TARNAME@,,;t t
-s,@PACKAGE_VERSION@,,;t t
-s,@PACKAGE_STRING@,,;t t
-s,@PACKAGE_BUGREPORT@,,;t t
-s,@ECHO_C@,,;t t
-s,@ECHO_N@,-n,;t t
-s,@ECHO_T@,,;t t
-s,@PATH_SEPARATOR@,:,;t t
-s,@DEFS@,-DHAVE_CONFIG_H,;t t
-s,@LIBS@,-lcrypt -lstdc++ -lm -lgdbm -lg ,;t t
-s,@PACKAGE@,gsdl,;t t
-s,@VERSION@,2.38,;t t
-s,@USE_FASTCGI@,0,;t t
-s,@CFLAGS@,-O2,;t t
-s,@CC@,gcc,;t t
-s,@LDFLAGS@,,;t t
-s,@CPPFLAGS@,,;t t
-s,@ac_ct_CC@,gcc,;t t
-s,@EXEEXT@,,;t t
-s,@OBJEXT@,o,;t t
-s,@CXX@,g++,;t t
-s,@CXXFLAGS@,-g -O2,;t t
-s,@ac_ct_CXX@,g++,;t t
-s,@AWK@,mawk,;t t
-s,@YACC@,bison -y,;t t
-s,@INSTALL_PROGRAM@,${INSTALL},;t t
-s,@INSTALL_SCRIPT@,${INSTALL},;t t
-s,@INSTALL_DATA@,${INSTALL} -m 644,;t t
-s,@LN_S@,ln -s,;t t
-s,@SET_MAKE@,,;t t
-s,@RANLIB@,ranlib,;t t
-s,@ac_ct_RANLIB@,ranlib,;t t
-s,@CPP@,gcc -E,;t t
-s,@U@,,;t t
-s,@ANSI2KNR@,,;t t
-s,@ALLOCA@,,;t t
-s,@LIBOBJS@, rx.o rx.o,;t t
-s,@gsdlos@,linux,;t t
-CEOF
-
-  # Split the substitutions into bite-sized pieces for seds with
-  # small command number limits, like on Digital OSF/1 and HP-UX.
-  ac_max_sed_lines=48
-  ac_sed_frag=1 # Number of current file.
-  ac_beg=1 # First line for current file.
-  ac_end=$ac_max_sed_lines # Line after last line for current file.
-  ac_more_lines=:
-  ac_sed_cmds=
-  while $ac_more_lines; do
-    if test $ac_beg -gt 1; then
-      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
-    else
-      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
-    fi
-    if test ! -s $tmp/subs.frag; then
-      ac_more_lines=false
-    else
-      # The purpose of the label and of the branching condition is to
-      # speed up the sed processing (if there are no `@' at all, there
-      # is no need to browse any of the substitutions).
-      # These are the two extra sed commands mentioned above.
-      (echo ':t
-  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
-      if test -z "$ac_sed_cmds"; then
-  	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
-      else
-  	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
-      fi
-      ac_sed_frag=`expr $ac_sed_frag + 1`
-      ac_beg=$ac_end
-      ac_end=`expr $ac_end + $ac_max_sed_lines`
-    fi
-  done
-  if test -z "$ac_sed_cmds"; then
-    ac_sed_cmds=cat
-  fi
-fi # test -n "$CONFIG_FILES"
-
-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case $ac_file in
-  - | *:- | *:-:* ) # input from stdin
-        cat >$tmp/stdin
-        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  * )   ac_file_in=$ac_file.in ;;
-  esac
-
-  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
-  ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-         X"$ac_file" : 'X\(//\)[^/]' \| \
-         X"$ac_file" : 'X\(//\)$' \| \
-         X"$ac_file" : 'X\(/\)' \| \
-         .     : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-  	  /^X\(\/\/\)$/{ s//\1/; q; }
-  	  /^X\(\/\).*/{ s//\1/; q; }
-  	  s/.*/./; q'`
-  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-    { case "$ac_dir" in
-  [\\/]* | ?:[\\/]* ) as_incr_dir=;;
-  *)                      as_incr_dir=.;;
-esac
-as_dummy="$ac_dir"
-for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
-  case $as_mkdir_dir in
-    # Skip DOS drivespec
-    ?:) as_incr_dir=$as_mkdir_dir ;;
-    *)
-      as_incr_dir=$as_incr_dir/$as_mkdir_dir
-      test -d "$as_incr_dir" || mkdir "$as_incr_dir"
-    ;;
-  esac
-done; }
-
-    ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`"
-    # A "../" for each directory in $ac_dir_suffix.
-    ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'`
-  else
-    ac_dir_suffix= ac_dots=
-  fi
-
-  case $srcdir in
-  .)  ac_srcdir=.
-      if test -z "$ac_dots"; then
-         ac_top_srcdir=.
-      else
-         ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'`
-      fi ;;
-  [\\/]* | ?:[\\/]* )
-      ac_srcdir=$srcdir$ac_dir_suffix;
-      ac_top_srcdir=$srcdir ;;
-  *) # Relative path.
-    ac_srcdir=$ac_dots$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_dots$srcdir ;;
-  esac
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_dots$INSTALL ;;
-  esac
-
-  if test x"$ac_file" != x-; then
-    { echo "$as_me:5606: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
-    rm -f "$ac_file"
-  fi
-  # Let's still pretend it is `configure' which instantiates (i.e., don't
-  # use $as_me), people would be surprised to read:
-  #    /* config.h.  Generated automatically by config.status.  */
-  configure_input="Generated automatically from `echo $ac_file_in |
-                                                 sed 's,.*/,,'` by configure."
-
-  # First look for the input files in the build tree, otherwise in the
-  # src tree.
-  ac_file_inputs=`IFS=:
-    for f in $ac_file_in; do
-      case $f in
-      -) echo $tmp/stdin ;;
-      [\\/$]*)
-         # Absolute (can't be DOS-style, as IFS=:)
-         test -f "$f" || { { echo "$as_me:5624: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
-   { (exit 1); exit 1; }; }
-         echo $f;;
-      *) # Relative
-         if test -f "$f"; then
-           # Build tree
-           echo $f
-         elif test -f "$srcdir/$f"; then
-           # Source tree
-           echo $srcdir/$f
-         else
-           # /dev/null tree
-           { { echo "$as_me:5637: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
-   { (exit 1); exit 1; }; }
-         fi;;
-      esac
-    done` || { (exit 1); exit 1; }
-  sed "/^[ 	]*VPATH[ 	]*=/{
-s/:*\$(srcdir):*/:/;
-s/:*\${srcdir}:*/:/;
-s/:*@srcdir@:*/:/;
-s/^\([^=]*=[ 	]*\):*/\1/;
-s/:*$//;
-s/^[^=]*=[ 	]*$//;
-}
-
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s,@configure_input@,$configure_input,;t t
-s,@srcdir@,$ac_srcdir,;t t
-s,@top_srcdir@,$ac_top_srcdir,;t t
-s,@INSTALL@,$ac_INSTALL,;t t
-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
-  rm -f $tmp/stdin
-  if test x"$ac_file" != x-; then
-    mv $tmp/out $ac_file
-  else
-    cat $tmp/out
-    rm -f $tmp/out
-  fi
-
-done
-
-#
-# CONFIG_HEADER section.
-#
-
-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-# NAME is the cpp macro being defined and VALUE is the value it is being given.
-#
-# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s,^\([ 	]*\)#\([ 	]*define[ 	][ 	]*\)'
-ac_dB='[ 	].*$,\1#\2'
-ac_dC=' '
-ac_dD=',;t'
-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_uA='s,^\([ 	]*\)#\([ 	]*\)undef\([ 	][ 	]*\)'
-ac_uB='$,\1#\2define\3'
-ac_uC=' '
-ac_uD=',;t'
-
-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case $ac_file in
-  - | *:- | *:-:* ) # input from stdin
-        cat >$tmp/stdin
-        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  * )   ac_file_in=$ac_file.in ;;
-  esac
-
-  test x"$ac_file" != x- && { echo "$as_me:5698: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
-
-  # First look for the input files in the build tree, otherwise in the
-  # src tree.
-  ac_file_inputs=`IFS=:
-    for f in $ac_file_in; do
-      case $f in
-      -) echo $tmp/stdin ;;
-      [\\/$]*)
-         # Absolute (can't be DOS-style, as IFS=:)
-         test -f "$f" || { { echo "$as_me:5709: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
-   { (exit 1); exit 1; }; }
-         echo $f;;
-      *) # Relative
-         if test -f "$f"; then
-           # Build tree
-           echo $f
-         elif test -f "$srcdir/$f"; then
-           # Source tree
-           echo $srcdir/$f
-         else
-           # /dev/null tree
-           { { echo "$as_me:5722: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
-   { (exit 1); exit 1; }; }
-         fi;;
-      esac
-    done` || { (exit 1); exit 1; }
-  # Remove the trailing spaces.
-  sed 's/[ 	]*$//' $ac_file_inputs >$tmp/in
-
-  # Handle all the #define templates only if necessary.
-  if egrep "^[ 	]*#[ 	]*define" $tmp/in >/dev/null; then
-  # If there are no defines, we may have an empty if/fi
-  :
-  cat >$tmp/defines.sed <<CEOF
-/^[ 	]*#[ 	]*define/!b
-t clr
-: clr
-${ac_dA}PACKAGE${ac_dB}PACKAGE${ac_dC}"gsdl"${ac_dD}
-${ac_dA}VERSION${ac_dB}VERSION${ac_dC}"2.38"${ac_dD}
-${ac_dA}PROTOTYPES${ac_dB}PROTOTYPES${ac_dC}1${ac_dD}
-${ac_dA}STDC_HEADERS${ac_dB}STDC_HEADERS${ac_dC}1${ac_dD}
-${ac_dA}HAVE_STDLIB_H${ac_dB}HAVE_STDLIB_H${ac_dC}1${ac_dD}
-${ac_dA}HAVE_STRING_H${ac_dB}HAVE_STRING_H${ac_dC}1${ac_dD}
-${ac_dA}HAVE_MEMORY_H${ac_dB}HAVE_MEMORY_H${ac_dC}1${ac_dD}
-${ac_dA}HAVE_STRINGS_H${ac_dB}HAVE_STRINGS_H${ac_dC}1${ac_dD}
-${ac_dA}HAVE_INTTYPES_H${ac_dB}HAVE_INTTYPES_H${ac_dC}1${ac_dD}
-${ac_dA}HAVE_UNISTD_H${ac_dB}HAVE_UNISTD_H${ac_dC}1${ac_dD}
-${ac_dA}TIME_WITH_SYS_TIME${ac_dB}TIME_WITH_SYS_TIME${ac_dC}1${ac_dD}
-${ac_dA}HAVE_LIBG${ac_dB}HAVE_LIBG${ac_dC}1${ac_dD}
-${ac_dA}HAVE_LIBGDBM${ac_dB}HAVE_LIBGDBM${ac_dC}1${ac_dD}
-${ac_dA}HAVE_LIBM${ac_dB}HAVE_LIBM${ac_dC}1${ac_dD}
-${ac_dA}HAVE_LIBSTDC__${ac_dB}HAVE_LIBSTDC__${ac_dC}1${ac_dD}
-${ac_dA}HAVE_LIBCRYPT${ac_dB}HAVE_LIBCRYPT${ac_dC}1${ac_dD}
-${ac_dA}HAVE_DIRENT_H${ac_dB}HAVE_DIRENT_H${ac_dC}1${ac_dD}
-${ac_dA}STDC_HEADERS${ac_dB}STDC_HEADERS${ac_dC}1${ac_dD}
-${ac_dA}HAVE_FCNTL_H${ac_dB}HAVE_FCNTL_H${ac_dC}1${ac_dD}
-${ac_dA}HAVE_LIMITS_H${ac_dB}HAVE_LIMITS_H${ac_dC}1${ac_dD}
-${ac_dA}HAVE_SYS_TIME_H${ac_dB}HAVE_SYS_TIME_H${ac_dC}1${ac_dD}
-${ac_dA}HAVE_UNISTD_H${ac_dB}HAVE_UNISTD_H${ac_dC}1${ac_dD}
-${ac_dA}HAVE_CRYPT_H${ac_dB}HAVE_CRYPT_H${ac_dC}1${ac_dD}
-${ac_dA}HAVE_STRING_H${ac_dB}HAVE_STRING_H${ac_dC}1${ac_dD}
-${ac_dA}HAVE_MEMORY_H${ac_dB}HAVE_MEMORY_H${ac_dC}1${ac_dD}
-${ac_dA}HAVE_SYS_PROCFS_H${ac_dB}HAVE_SYS_PROCFS_H${ac_dC}1${ac_dD}
-${ac_dA}HAVE_FREAD_DECL${ac_dB}HAVE_FREAD_DECL${ac_dC}1${ac_dD}
-${ac_dA}HAVE_FGETC_DECL${ac_dB}HAVE_FGETC_DECL${ac_dC}1${ac_dD}
-${ac_dA}HAVE_ALLOCA_H${ac_dB}HAVE_ALLOCA_H${ac_dC}1${ac_dD}
-${ac_dA}HAVE_ALLOCA${ac_dB}HAVE_ALLOCA${ac_dC}1${ac_dD}
-${ac_dA}RETSIGTYPE${ac_dB}RETSIGTYPE${ac_dC}void${ac_dD}
-${ac_dA}HAVE_VPRINTF${ac_dB}HAVE_VPRINTF${ac_dC}1${ac_dD}
-${ac_dA}HAVE_FTIME${ac_dB}HAVE_FTIME${ac_dC}1${ac_dD}
-${ac_dA}HAVE_SELECT${ac_dB}HAVE_SELECT${ac_dC}1${ac_dD}
-${ac_dA}HAVE_STRFTIME${ac_dB}HAVE_STRFTIME${ac_dC}1${ac_dD}
-${ac_dA}HAVE_STRTOL${ac_dB}HAVE_STRTOL${ac_dC}1${ac_dD}
-${ac_dA}HAVE_GETRUSAGE${ac_dB}HAVE_GETRUSAGE${ac_dC}1${ac_dD}
-${ac_dA}HAVE_TIMES${ac_dB}HAVE_TIMES${ac_dC}1${ac_dD}
-CEOF
-  sed -f $tmp/defines.sed $tmp/in >$tmp/out
-  rm -f $tmp/in
-  mv $tmp/out $tmp/in
-
-  cat >$tmp/defines.sed <<CEOF
-/^[ 	]*#[ 	]*define/!b
-t clr
-: clr
-${ac_dA}HAVE_MALLINFO${ac_dB}HAVE_MALLINFO${ac_dC}1${ac_dD}
-${ac_dA}HAVE_SETBUFFER${ac_dB}HAVE_SETBUFFER${ac_dC}1${ac_dD}
-${ac_dA}HAVE_GETPAGESIZE${ac_dB}HAVE_GETPAGESIZE${ac_dC}1${ac_dD}
-${ac_dA}HAVE_STRERROR${ac_dB}HAVE_STRERROR${ac_dC}1${ac_dD}
-${ac_dA}HAVE_FTRUNCATE${ac_dB}HAVE_FTRUNCATE${ac_dC}1${ac_dD}
-${ac_dA}HAVE_STRSTR${ac_dB}HAVE_STRSTR${ac_dC}1${ac_dD}
-${ac_dA}HAVE_STRCASECMP${ac_dB}HAVE_STRCASECMP${ac_dC}1${ac_dD}
-${ac_dA}HAVE_VALLOC${ac_dB}HAVE_VALLOC${ac_dC}1${ac_dD}
-CEOF
-  sed -f $tmp/defines.sed $tmp/in >$tmp/out
-  rm -f $tmp/in
-  mv $tmp/out $tmp/in
-
-  fi # egrep
-
-  # Handle all the #undef templates
-  cat >$tmp/undefs.sed <<CEOF
-/^[ 	]*#[ 	]*undef/!b
-t clr
-: clr
-${ac_uA}PACKAGE${ac_uB}PACKAGE${ac_uC}"gsdl"${ac_uD}
-${ac_uA}VERSION${ac_uB}VERSION${ac_uC}"2.38"${ac_uD}
-${ac_uA}PROTOTYPES${ac_uB}PROTOTYPES${ac_uC}1${ac_uD}
-${ac_uA}STDC_HEADERS${ac_uB}STDC_HEADERS${ac_uC}1${ac_uD}
-${ac_uA}HAVE_STDLIB_H${ac_uB}HAVE_STDLIB_H${ac_uC}1${ac_uD}
-${ac_uA}HAVE_STRING_H${ac_uB}HAVE_STRING_H${ac_uC}1${ac_uD}
-${ac_uA}HAVE_MEMORY_H${ac_uB}HAVE_MEMORY_H${ac_uC}1${ac_uD}
-${ac_uA}HAVE_STRINGS_H${ac_uB}HAVE_STRINGS_H${ac_uC}1${ac_uD}
-${ac_uA}HAVE_INTTYPES_H${ac_uB}HAVE_INTTYPES_H${ac_uC}1${ac_uD}
-${ac_uA}HAVE_UNISTD_H${ac_uB}HAVE_UNISTD_H${ac_uC}1${ac_uD}
-${ac_uA}TIME_WITH_SYS_TIME${ac_uB}TIME_WITH_SYS_TIME${ac_uC}1${ac_uD}
-${ac_uA}HAVE_LIBG${ac_uB}HAVE_LIBG${ac_uC}1${ac_uD}
-${ac_uA}HAVE_LIBGDBM${ac_uB}HAVE_LIBGDBM${ac_uC}1${ac_uD}
-${ac_uA}HAVE_LIBM${ac_uB}HAVE_LIBM${ac_uC}1${ac_uD}
-${ac_uA}HAVE_LIBSTDC__${ac_uB}HAVE_LIBSTDC__${ac_uC}1${ac_uD}
-${ac_uA}HAVE_LIBCRYPT${ac_uB}HAVE_LIBCRYPT${ac_uC}1${ac_uD}
-${ac_uA}HAVE_DIRENT_H${ac_uB}HAVE_DIRENT_H${ac_uC}1${ac_uD}
-${ac_uA}STDC_HEADERS${ac_uB}STDC_HEADERS${ac_uC}1${ac_uD}
-${ac_uA}HAVE_FCNTL_H${ac_uB}HAVE_FCNTL_H${ac_uC}1${ac_uD}
-${ac_uA}HAVE_LIMITS_H${ac_uB}HAVE_LIMITS_H${ac_uC}1${ac_uD}
-${ac_uA}HAVE_SYS_TIME_H${ac_uB}HAVE_SYS_TIME_H${ac_uC}1${ac_uD}
-${ac_uA}HAVE_UNISTD_H${ac_uB}HAVE_UNISTD_H${ac_uC}1${ac_uD}
-${ac_uA}HAVE_CRYPT_H${ac_uB}HAVE_CRYPT_H${ac_uC}1${ac_uD}
-${ac_uA}HAVE_STRING_H${ac_uB}HAVE_STRING_H${ac_uC}1${ac_uD}
-${ac_uA}HAVE_MEMORY_H${ac_uB}HAVE_MEMORY_H${ac_uC}1${ac_uD}
-${ac_uA}HAVE_SYS_PROCFS_H${ac_uB}HAVE_SYS_PROCFS_H${ac_uC}1${ac_uD}
-${ac_uA}HAVE_FREAD_DECL${ac_uB}HAVE_FREAD_DECL${ac_uC}1${ac_uD}
-${ac_uA}HAVE_FGETC_DECL${ac_uB}HAVE_FGETC_DECL${ac_uC}1${ac_uD}
-${ac_uA}HAVE_ALLOCA_H${ac_uB}HAVE_ALLOCA_H${ac_uC}1${ac_uD}
-${ac_uA}HAVE_ALLOCA${ac_uB}HAVE_ALLOCA${ac_uC}1${ac_uD}
-${ac_uA}RETSIGTYPE${ac_uB}RETSIGTYPE${ac_uC}void${ac_uD}
-${ac_uA}HAVE_VPRINTF${ac_uB}HAVE_VPRINTF${ac_uC}1${ac_uD}
-${ac_uA}HAVE_FTIME${ac_uB}HAVE_FTIME${ac_uC}1${ac_uD}
-${ac_uA}HAVE_SELECT${ac_uB}HAVE_SELECT${ac_uC}1${ac_uD}
-${ac_uA}HAVE_STRFTIME${ac_uB}HAVE_STRFTIME${ac_uC}1${ac_uD}
-${ac_uA}HAVE_STRTOL${ac_uB}HAVE_STRTOL${ac_uC}1${ac_uD}
-${ac_uA}HAVE_GETRUSAGE${ac_uB}HAVE_GETRUSAGE${ac_uC}1${ac_uD}
-${ac_uA}HAVE_TIMES${ac_uB}HAVE_TIMES${ac_uC}1${ac_uD}
-CEOF
-  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
-  rm -f $tmp/in
-  mv $tmp/out $tmp/in
-
-  cat >$tmp/undefs.sed <<CEOF
-/^[ 	]*#[ 	]*undef/!b
-t clr
-: clr
-${ac_uA}HAVE_MALLINFO${ac_uB}HAVE_MALLINFO${ac_uC}1${ac_uD}
-${ac_uA}HAVE_SETBUFFER${ac_uB}HAVE_SETBUFFER${ac_uC}1${ac_uD}
-${ac_uA}HAVE_GETPAGESIZE${ac_uB}HAVE_GETPAGESIZE${ac_uC}1${ac_uD}
-${ac_uA}HAVE_STRERROR${ac_uB}HAVE_STRERROR${ac_uC}1${ac_uD}
-${ac_uA}HAVE_FTRUNCATE${ac_uB}HAVE_FTRUNCATE${ac_uC}1${ac_uD}
-${ac_uA}HAVE_STRSTR${ac_uB}HAVE_STRSTR${ac_uC}1${ac_uD}
-${ac_uA}HAVE_STRCASECMP${ac_uB}HAVE_STRCASECMP${ac_uC}1${ac_uD}
-${ac_uA}HAVE_VALLOC${ac_uB}HAVE_VALLOC${ac_uC}1${ac_uD}
-s,^[ 	]*#[ 	]*undef[ 	][ 	]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
-CEOF
-  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
-  rm -f $tmp/in
-  mv $tmp/out $tmp/in
-
-  # Let's still pretend it is `configure' which instantiates (i.e., don't
-  # use $as_me), people would be surprised to read:
-  #    /* config.h.  Generated automatically by config.status.  */
-  if test x"$ac_file" = x-; then
-    echo "/* Generated automatically by configure.  */" >$tmp/config.h
-  else
-    echo "/* $ac_file.  Generated automatically by configure.  */" >$tmp/config.h
-  fi
-  cat $tmp/in >>$tmp/config.h
-  rm -f $tmp/in
-  if test x"$ac_file" != x-; then
-    if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
-      { echo "$as_me:5839: $ac_file is unchanged" >&5
-echo "$as_me: $ac_file is unchanged" >&6;}
-    else
-      ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-         X"$ac_file" : 'X\(//\)[^/]' \| \
-         X"$ac_file" : 'X\(//\)$' \| \
-         X"$ac_file" : 'X\(/\)' \| \
-         .     : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-  	  /^X\(\/\/\)$/{ s//\1/; q; }
-  	  /^X\(\/\).*/{ s//\1/; q; }
-  	  s/.*/./; q'`
-      if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-        { case "$ac_dir" in
-  [\\/]* | ?:[\\/]* ) as_incr_dir=;;
-  *)                      as_incr_dir=.;;
-esac
-as_dummy="$ac_dir"
-for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
-  case $as_mkdir_dir in
-    # Skip DOS drivespec
-    ?:) as_incr_dir=$as_mkdir_dir ;;
-    *)
-      as_incr_dir=$as_incr_dir/$as_mkdir_dir
-      test -d "$as_incr_dir" || mkdir "$as_incr_dir"
-    ;;
-  esac
-done; }
-
-      fi
-      rm -f $ac_file
-      mv $tmp/config.h $ac_file
-    fi
-  else
-    cat $tmp/config.h
-    rm -f $tmp/config.h
-  fi
-done
-
-{ (exit 0); exit 0; }
Index: unk/protemix/src/recpt/gsdlsite.cfg
===================================================================
--- /trunk/protemix/src/recpt/gsdlsite.cfg	(revision 3166)
+++ 	(revision )
@@ -1,28 +1,0 @@
-# this file should be placed in the same directory as your library
-# executable file. it should be edited to suit your site.
-
-# points to the GSDLHOME directory
-gsdlhome    /usr/local/gsdl
-
-# this is the http address of GSDLHOME
-# if your webservers DocumentRoot is set to $GSDLHOME
-# then httpprefix can remain commented out
-httpprefix  /gsdl
-
-# this is the http address of the directory which
-# contains the images for the interface.
-# if your webservers DocumentRoot is set to $GSDLHOME
-# then httpimg will be /images
-httpimg     /gsdl/images
-
-# should contain the http address of this cgi script. This 
-# is not needed if the http server sets the environment variable 
-# SCRIPT_NAME
-#gwcgi       /cgi-bin/library
-
-# maxrequests is the most requests a fastcgi process
-# will serve before it exits. This can be set to a
-# low figure (like 1) while debugging and then set
-# to a high figure (like 10000) when everything is
-# working well.
-maxrequests 10000
Index: /trunk/protemix/src/recpt/ptmxmain.cpp
===================================================================
--- /trunk/protemix/src/recpt/ptmxmain.cpp	(revision 3166)
+++ /trunk/protemix/src/recpt/ptmxmain.cpp	(revision 3167)
@@ -61,11 +61,7 @@
   receptionist recpt;
   nullproto    nproto;
-  
-  text_t gsdlhome, httpdomain, httpprefix;
-  // get gsdlhome (if we fail the error will be picked up later -- in
-  // cgiwrapper)
-  site_cfg_read (gsdlhome, httpdomain, httpprefix);
-  collectset *cservers = new collectset();
-  cservers->add_collection ("protemix", &recpt, gsdlhome, gsdlhome);
+  text_t gsdlhome;
+
+  collectset *cservers = new collectset(gsdlhome);
 
   // set up the null protocol
@@ -121,5 +117,5 @@
   recpt.add_browser (&aphindbrowserclass);
 
-  cgiwrapper (recpt, "protemix");
+  cgiwrapper (recpt, "ptmx");
   delete cservers;
   return 0;
Index: /trunk/protemix/src/recpt/ptmxqueryaction.cpp
===================================================================
--- /trunk/protemix/src/recpt/ptmxqueryaction.cpp	(revision 3166)
+++ /trunk/protemix/src/recpt/ptmxqueryaction.cpp	(revision 3167)
@@ -64,5 +64,4 @@
 }
 
-
 bool ptmxqueryaction::search_single_collection (cgiargsclass &args, const text_t &collection,
 						recptprotolistclass *protos, browsermapclass *browsers, 
@@ -110,53 +109,23 @@
   text_t formattedstring = "";
 
-  logout << "here we go...\n";
-
-  if (args["qt"]=="0") { // normal text search
-    logout << "normal text search ...\n";
-    formattedstring = args["q"];
-    format_querystring (formattedstring, args.getintarg("b"));
-    add_dates(formattedstring, args.getintarg("ds"), args.getintarg("de"),
-	    args.getintarg("dsbc"), args.getintarg("debc"));
+  if (!args["c1"].empty() && args["c1"] != "Any") {
+    formattedstring = "[" + args["c1"] + "]:CL";
   }
-  else if (args["qt"]=="1" ){ // form search
-
-    logout << "form search ...\n";
-
-    if (args["b"]=="1" && args["fqa"]=="1") { // explicit query
-      formattedstring = args["q"];
-    }
-    else { // form search
-      if (args["b"]=="0") { // regular form
-	parse_reg_query_form(formattedstring, args);
-      }
-      else  { // advanced form
-	parse_adv_query_form(formattedstring, args);
-      }
-      args["q"] = formattedstring;
-      
-      // reset the cgiargfqv macro - need to escape any quotes in it
-      disp.setmacro("cgiargfqv", "query", escape_quotes(args["fqv"]));
-
-      // also reset the _cgiargq_ macro as it has changed now
-      disp.setmacro("cgiargq", "Global", html_safe(args["q"]));
-      
-      // reset the compressed options to include the q arg
-      text_t compressedoptions = recpt->get_compressed_arg(args, logout);
-      if (!compressedoptions.empty()) {
-	disp.setmacro ("compressedoptions", "Global", dm_safe(compressedoptions));
-	// need a decoded version of compressedoptions for use within forms
-	// as browsers encode values from forms before sending to server
-	// (e.g. %25 becomes %2525)
-	decode_cgi_arg (compressedoptions);
-	disp.setmacro ("decodedcompressedoptions", "Global", dm_safe(compressedoptions));
-      }
-    } // form search
-  } // args["qt"]=1
-  else {
-    logout << "ERROR (query_action::search_single_collection): querytype not defined\n";
-    return false;
+  if (!args["c2"].empty() && args["c2"] != "Any") {
+    if (!formattedstring.empty()) formattedstring += " & ";
+    formattedstring += "[" + args["c2"] + "]:CA";
+  }
+  if (!args["c3"].empty() && args["c3"] != "Any") {
+    if (!formattedstring.empty()) formattedstring += " & ";
+    formattedstring += "[" + args["c3"] + "]:CS";
+  }
+  if (!args["q"].empty()) {
+    if (!formattedstring.empty()) formattedstring += " & ";
+    formattedstring += args["q"];
   }
 
-  if (!formattedstring.empty()) { // do the query
+  logout << outconvert << "formattedstring: " << formattedstring << "\n";
+
+  if (!formattedstring.empty()) {
     // note! formattedstring is in unicode! mg and mgpp must convert!
     set_queryfilter_options (request, formattedstring, args);
@@ -171,11 +140,5 @@
  
     define_query_macros (args, disp, response);
-
-    // save the query if appropriate
-    if (!save_search_history(args, response))
-      logout << "save failed"; 
   }
-
-  define_history_macros (disp, args, protos, logout);
   
   textout << outconvert << disp << "_query:header_\n"
