[Spread-cvs] commit: r371 - in vendor/stdutil/current: . src src/stdutil src/stdutil/private

jonathan at spread.org jonathan at spread.org
Sun Nov 19 10:17:13 EST 2006


Author: jonathan
Date: 2006-11-19 10:17:12 -0500 (Sun, 19 Nov 2006)
New Revision: 371

Added:
   vendor/stdutil/current/src/stdtest/
   vendor/stdutil/current/src/stdutil/private/stdarch_autoconf.h.in
   vendor/stdutil/current/src/stdutil/private/stdarch_wintel32.h
Removed:
   vendor/stdutil/current/src/stdutil/private/stdarch.h.in
Modified:
   vendor/stdutil/current/README
   vendor/stdutil/current/configure
   vendor/stdutil/current/configure.in
   vendor/stdutil/current/src/Makefile.in
   vendor/stdutil/current/src/stdarr.c
   vendor/stdutil/current/src/stdcarr.c
   vendor/stdutil/current/src/stddll.c
   vendor/stdutil/current/src/stderror.c
   vendor/stdutil/current/src/stdfd.c
   vendor/stdutil/current/src/stdhash.c
   vendor/stdutil/current/src/stdit.c
   vendor/stdutil/current/src/stdskl.c
   vendor/stdutil/current/src/stdthread.c
   vendor/stdutil/current/src/stdtime.c
   vendor/stdutil/current/src/stdutil.c
   vendor/stdutil/current/src/stdutil/private/stdarch.h
   vendor/stdutil/current/src/stdutil/private/stdarr_p.h
   vendor/stdutil/current/src/stdutil/private/stdcarr_p.h
   vendor/stdutil/current/src/stdutil/private/stddll_p.h
   vendor/stdutil/current/src/stdutil/private/stdhash_p.h
   vendor/stdutil/current/src/stdutil/private/stdit_p.h
   vendor/stdutil/current/src/stdutil/private/stdskl_p.h
   vendor/stdutil/current/src/stdutil/private/stdthread_p.h
   vendor/stdutil/current/src/stdutil/stdarr.h
   vendor/stdutil/current/src/stdutil/stdcarr.h
   vendor/stdutil/current/src/stdutil/stddefines.h
   vendor/stdutil/current/src/stdutil/stddll.h
   vendor/stdutil/current/src/stdutil/stderror.h
   vendor/stdutil/current/src/stdutil/stdfd.h
   vendor/stdutil/current/src/stdutil/stdhash.h
   vendor/stdutil/current/src/stdutil/stdit.h
   vendor/stdutil/current/src/stdutil/stdskl.h
   vendor/stdutil/current/src/stdutil/stdthread.h
   vendor/stdutil/current/src/stdutil/stdtime.h
   vendor/stdutil/current/src/stdutil/stdutil.h
Log:
Update to stdutil release 1.0.0-beta6 November 2006



Modified: vendor/stdutil/current/README
===================================================================
--- vendor/stdutil/current/README	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/README	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,4 +1,4 @@
-This is the v1.0.0 (January 2006) distribution of the StdUtil library.
+This is the v1.0.0 (November 2006) distribution of the StdUtil library.
 
 DESCRIPTION:
 
@@ -6,13 +6,16 @@
 
 LICENSE: 
 
-The license for use of the StdUtil library or its code is contained in
-the file STDUTIL_LICENSE found in the root of this distribution.
+The license for use of the StdUtil library and/or its code is 
+contained in the file STDUTIL_LICENSE found in the root of this 
+distribution.
 
 DOCUMENTATION:
 
-HTML documentaiton is contained within the docs directory or can be 
-accessed on the web at http://www.cnds.jhu.edu/software/stdutil/docs
+Documentation is currently incomplete but will be available in a
+subsequent release in HTML format in the docs directory.  The
+documentation will also be available at
+http://www.cnds.jhu.edu/software/stdutil/docs
 
 BUILDING: 
 
@@ -23,8 +26,8 @@
 
 Please report bugs and/or bug fixes to jschultz at cnds.jhu.edu with a
 gdb compatible core (if possible) and any information that could help
-me fix the problem.
+fix the problem.
 
 Enjoy,
 John Schultz <jschultz at cnds.jhu.edu>
-January 2006
+November 2006

Modified: vendor/stdutil/current/configure
===================================================================
--- vendor/stdutil/current/configure	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/configure	2006-11-19 15:17:12 UTC (rev 371)
@@ -1314,7 +1314,7 @@
 ac_config_sub="$SHELL $ac_aux_dir/config.sub"
 ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
 
-          ac_config_headers="$ac_config_headers src/stdutil/private/stdarch.h"
+          ac_config_headers="$ac_config_headers src/stdutil/private/stdarch_autoconf.h"
 
 
 ac_ext=c
@@ -8030,7 +8030,7 @@
   case "$ac_config_target" in
   # Handling of arguments.
   "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
-  "src/stdutil/private/stdarch.h" ) CONFIG_HEADERS="$CONFIG_HEADERS src/stdutil/private/stdarch.h" ;;
+  "src/stdutil/private/stdarch_autoconf.h" ) CONFIG_HEADERS="$CONFIG_HEADERS src/stdutil/private/stdarch_autoconf.h" ;;
   *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
 echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
    { (exit 1); exit 1; }; };;

Modified: vendor/stdutil/current/configure.in
===================================================================
--- vendor/stdutil/current/configure.in	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/configure.in	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,7 +1,7 @@
 AC_INIT(src/stdutil/stddefines.h)
 
 AC_CONFIG_AUX_DIR(buildtools)
-AC_CONFIG_HEADER(src/stdutil/private/stdarch.h)
+AC_CONFIG_HEADER(src/stdutil/private/stdarch_autoconf.h)
 
 AC_LANG_C
 

Modified: vendor/stdutil/current/src/Makefile.in
===================================================================
--- vendor/stdutil/current/src/Makefile.in	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/Makefile.in	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,4 +1,5 @@
 .SUFFIXES: .do .to .tdo .lo .ldo .lto .ltdo
+.PHONY: all standard libdir clean distclean uberclean
 
 LIBVERSION=1.0
 
@@ -13,15 +14,20 @@
 SOFTLINK=@LN_S@
 INSTALL=@INSTALL@
 
+srcdir=@srcdir@
+top_srcdir=@top_srcdir@
+VPATH=@srcdir@
+buildtoolsdir=$(top_srcdir)/buildtools
+
 ############################################# FLAGS ###########################################
 
 CFLAGS=@CFLAGS@
-CPPFLAGS=@CPPFLAGS@ -I./
+CPPFLAGS=@CPPFLAGS@ -I./ -I$(srcdir)
 LDFLAGS=@LDFLAGS@
 LIBS=@LIBS@
 
 SHCFLAGS=@SHCFLAGS@
-SHCPPFLAGS=@SHCPPFLAGS@ -I./
+SHCPPFLAGS=@SHCPPFLAGS@ -I./ -I$(srcdir)
 SHLDFLAGS=@SHLDFLAGS@
 SHLIBS=@SHLIBS@
 
@@ -60,14 +66,17 @@
 STATIC_LIBS=$(STATIC_NOTHREAD_RELEASE_LIB) $(STATIC_NOTHREAD_DEBUG_LIB) $(STATIC_THREADED_RELEASE_LIB) $(STATIC_THREADED_DEBUG_LIB)
 SHARED_LIBS=$(SHARED_NOTHREAD_RELEASE_LIB) $(SHARED_NOTHREAD_DEBUG_LIB) $(SHARED_THREADED_RELEASE_LIB) $(SHARED_THREADED_DEBUG_LIB)
 
-ALLTARGETS=$(STATIC_LIBS) @SHARED_LIBS@
+ALLTARGETS=$(STATIC_LIBS) $(SHARED_LIBS)
 
 ########################################### BUILD RULES ########################################
 
-standard: @STANDARD_LIBS@
+standard: libdir @STANDARD_LIBS@
 
-all: $(ALLTARGETS)
+all: libdir $(ALLTARGETS)
 
+libdir:
+	$(buildtoolsdir)/mkinstalldirs $(LIBDIR)
+
 $(STATIC_NOTHREAD_RELEASE_LIB): $(STATIC_NOTHREAD_RELEASE_OBJS)
 	$(AR) rvs $@ $(STATIC_NOTHREAD_RELEASE_OBJS)
 
@@ -95,10 +104,10 @@
 	$(SHLD) $(SHLDFLAGS) -o $@ $(SHARED_THREADED_DEBUG_OBJS) $(SHLIBS) $(THLIBS)
 
 clean:
-	rm -f *.o *.do *.to *.tdo *.lo *.ldo *.lto *.ltdo core* *~ $(ALLTARGETS) $(LIBDIR)/stdutil.a $(LIBDIR)/stdutil. at DYNLIBEXT@
+	rm -f *.o *.do *.to *.tdo *.lo *.ldo *.lto *.ltdo core* *~ $(ALLTARGETS) $(LIBDIR)/libstdutil.a $(LIBDIR)/libstdutil. at DYNLIBEXT@
 
 distclean: clean
-	rm -f Makefile
+	rm -f Makefile stdutil/private/stdarch_autoconf.h
 
 uberclean: distclean
 

Modified: vendor/stdutil/current/src/stdarr.c
===================================================================
--- vendor/stdutil/current/src/stdarr.c	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdarr.c	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 
@@ -26,6 +25,10 @@
 #include <stdutil/stderror.h>
 #include <stdutil/stdarr.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #define STDARR_IS_LEGAL(arr) ((arr)->begin <= (arr)->end && \
 			      (arr)->begin + (arr)->size * (arr)->vsize == (arr)->end && \
                               ( ((arr)->cap != 0 && (arr)->begin != NULL) || ((arr)->cap == 0 && (arr)->begin == NULL) ) && \
@@ -50,9 +53,11 @@
   stdsize delta = num_insert * arr->vsize;
   stdsize after = (stdsize) (arr->end - it->val);
 
-  if (nsize > arr->cap) {                                    /* nsize > arr->cap -> nsize > 0 */
-    stdsize ncap  = (nsize << 1);                            /* nsize > 0 -> ncap > 0 */
-    stdsize prior = (stdsize) (it->val - arr->begin);
+  /* reallocate if current capacity is not big enough */
+
+  if (nsize > stdarr_high_capacity(arr)) {                   /* nsize > X -> nsize > 0 */
+    stdsize ncap;
+    stdsize prior;
     stdsize asize;
     char *  mem;    
 
@@ -61,8 +66,10 @@
       goto stdarr_low_insert_space_end;
     }
 
+    ncap  = (nsize << 1);                                    /* nsize > 0 -> ncap > 0 */
     ncap  = STDMAX(ncap, STDARR_MIN_AUTO_ALLOC);             /* ensure minimum allocation */
     asize = ncap * arr->vsize;                               /* calc. alloc size in bytes */
+    prior = (stdsize) (it->val - arr->begin);
 
     if ((mem = (char*) realloc(arr->begin, asize)) == NULL) {
       ret = STDENOMEM;
@@ -76,8 +83,10 @@
     it->val    = mem + prior;                                /* relocate 'it' to insertion point */
   }
 
-  memmove(it->val + delta, it->val, after);                  /* shift mem */
+  /* shift memory to create space */
 
+  memmove(it->val + delta, it->val, after);
+
   arr->end  += delta;
   arr->size  = nsize;
 
@@ -98,13 +107,17 @@
   char *  it_end = it->val + delta;
   stdsize after  = (stdsize) (arr->end - it_end);
 
-  memmove(it->val, it_end, after);                           /* shift mem */
+  /* shift memory to remove space */
 
+  memmove(it->val, it_end, after);
+
   arr->end  -= delta;
   arr->size  = nsize;
 
-  if ((arr->opts & STDARR_OPTS_NO_AUTO_SHRINK) == 0 &&       /* shrinking wanted */
-      nsize <= stdarr_low_capacity(arr) &&                   /* shrinking necessary */
+  /* reallocate if current capacity is too big */
+
+  if ((arr->opts & STDARR_OPTS_NO_AUTO_SHRINK) == 0 &&       /* shrinking allowed */
+      nsize <= stdarr_low_capacity(arr) &&                   /* shrinking needed */
       arr->cap != STDARR_MIN_AUTO_ALLOC) {                   /* cap not at min alloc */
 
     stdsize ncap  = (nsize << 1);
@@ -122,7 +135,6 @@
 
       arr->begin = mem;                                      /* fill in new values for 'arr' */
       arr->end   = mem + prior + after;
-      arr->size  = nsize;
       arr->cap   = ncap;
 
     } else {                                                 /* ncap == 0 -> go to zero */
@@ -133,11 +145,10 @@
 
       arr->begin = NULL;
       arr->end   = NULL;
-      arr->size  = 0;                                        /* implicitly already 0 */
       arr->cap   = 0;
     }
 
-    it->val = arr->begin + prior;                            /* relocate 'it' to new position */
+    it->val = arr->begin + prior;                            /* relocate 'it' to erasure point */
   }
 }
 
@@ -474,7 +485,7 @@
       arr->size  = STDMIN(arr->size, num_elems);
 
       arr->begin = mem;
-      arr->end   = mem + arr->size * num_elems;
+      arr->end   = mem + arr->size * arr->vsize;
 
     } else {
 
@@ -880,3 +891,7 @@
 
   return it;
 }
+
+#ifdef __cplusplus
+}
+#endif

Modified: vendor/stdutil/current/src/stdcarr.c
===================================================================
--- vendor/stdutil/current/src/stdcarr.c	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdcarr.c	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 
@@ -26,6 +25,10 @@
 #include <stdutil/stderror.h>
 #include <stdutil/stdcarr.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #define STDCARR_IS_LEGAL(carr) (( ((carr)->cap != 0 && (carr)->base != NULL) || ((carr)->cap == 0 && (carr)->base == NULL) ) && \
 				(stdsize) ((carr)->endbase - (carr)->base) == (carr)->cap * (carr)->vsize && \
 				(carr)->begin >= (carr)->base && (carr)->begin <= (carr)->endbase && \
@@ -1447,3 +1450,7 @@
 {
   return (offset >= 0 ? stdcarr_it_advance(it, (stdsize) offset) : stdcarr_it_retreat(it, (stdsize) -offset));
 }
+
+#ifdef __cplusplus
+}
+#endif

Modified: vendor/stdutil/current/src/stddll.c
===================================================================
--- vendor/stdutil/current/src/stddll.c	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stddll.c	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 
@@ -26,6 +25,10 @@
 #include <stdutil/stderror.h>
 #include <stdutil/stddll.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #define STDDLL_IS_LEGAL(l)        ((l)->end_node != NULL && (l)->vsize != 0)
 #define STDDLL_IT_IS_LEGAL(l, it) ((it)->end_node == (l)->end_node && (it)->vsize == (l)->vsize)
 #define STDDLL_IT_IS_LEGAL2(it)   ((it)->node != NULL && (it)->end_node != NULL && (it)->vsize != 0)
@@ -863,3 +866,7 @@
 
   return it;
 }
+
+#ifdef __cplusplus
+}
+#endif

Modified: vendor/stdutil/current/src/stderror.c
===================================================================
--- vendor/stdutil/current/src/stderror.c	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stderror.c	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 
@@ -28,132 +27,67 @@
 #include <stdutil/stddefines.h>
 #include <stdutil/stderror.h>
 
-/************************************************************************************************
- * stderr_doit: Print a message to stderr and flush it.  If errnoflag
- * is non-zero, also print error msg from errno.  Return # of
- * characters written.
- *
- * NOTE: I'd prefer to use snprintf and vsnprintf but they aren't part of C89.
- ***********************************************************************************************/
+#ifdef __cplusplus
+extern "C" {
+#endif
 
-STDINLINE static int stderr_doit(int errno_copy, const char *fmt, va_list ap) 
-{
-  char buf[STDERR_MAX_ERR_MSG_LEN + 1];
-  int  ret1;
-  int  ret2 = 0;
-
-  ret1      = vsprintf(buf, fmt, ap);  /* write the msg */
-  ret1      = STDMAX(ret1, 0);         /* zero out any error */
-  buf[ret1] = 0;                       /* ensure termination */
-
-  if (errno_copy != 0) {
-    ret2             = sprintf(buf + ret1, ": %s", strerror(errno_copy));   /* write errno msg */
-    ret2             = STDMAX(ret2, 0);                                     /* zero out any error */
-    buf[ret1 + ret2] = 0;                                                   /* ensure termination */
-  }
-
-  fprintf(stderr, "%s\r\n", buf);
-  fflush(stderr);
-
-  return ret1 + ret2;
-}
-
 /************************************************************************************************
- * stderr_msg: Nonfatal error unrelated to a system call. Print a
- * message and return.
+ * stdutil_output: Output stream used for all library error msgs.
  ***********************************************************************************************/
 
-int stderr_msg(const char *fmt, ...) 
-{
-  int     ret;
-  va_list ap;
+FILE * stdutil_output = (FILE*) 0x1;  /* magic number because stderr is not a constant */
 
-  va_start(ap, fmt);
-  ret = stderr_doit(0, fmt, ap);
-  va_end(ap);
-
-  return ret;
-}
-
 /************************************************************************************************
- * stderr_ret: Nonfatal error related to a system call. Print a
- * message and return.
+ * stderr_output: Print a message to stdutil_output and flush it.  If
+ * errno_copy is non-zero, also print error msg from strerror.  Return
+ * # of characters written to output stream.
+ *
+ * NOTE: I'd prefer to use snprintf and vsnprintf but they aren't part of C89.
  ***********************************************************************************************/
 
-int stderr_ret(const char *fmt, ...) 
+STDINLINE int stderr_output(stderr_action act, int errno_copy, const char *fmt, ...) 
 {
-  int     ret;
+  char    buf[STDERR_MAX_ERR_MSG_LEN + 1];
+  int     ret1 = 0;
+  int     ret2 = 0;
   va_list ap;
 
-  va_start(ap, fmt);
-  ret = stderr_doit(errno, fmt, ap);
-  va_end(ap);
+  if (stdutil_output != NULL) {
+    va_start(ap, fmt);
 
-  return ret;
-}
+    ret1      = vsprintf(buf, fmt, ap);  /* write the msg */
+    ret1      = STDMAX(ret1, 0);         /* zero out any error */
+    buf[ret1] = 0;                       /* ensure termination */
 
-/************************************************************************************************
- * stderr_quit: Fatal error unrelated to a system call. Print a
- * message and terminate.
- ***********************************************************************************************/
+    if (errno_copy != 0) {
+      ret2             = sprintf(buf + ret1, ": %s", strerror(errno_copy));   /* errno msg */
+      ret2             = STDMAX(ret2, 0);                                     /* zero out */
+      buf[ret1 + ret2] = 0;                                                   /* termination */
+    }
 
-void stderr_quit(const char *fmt, ...) 
-{
-  va_list ap;
+    if (stdutil_output == (FILE*) 0x1) {
+      stdutil_output = stderr;
+    }
 
-  va_start(ap, fmt);
-  stderr_doit(0, fmt, ap);
-  va_end(ap);
-  exit(-1);
-}
+    fprintf(stdutil_output, "%s\r\n", buf);
+    fflush(stdutil_output);
 
-/************************************************************************************************
- * stderr_abort: Fatal error unrelated to a system call. Print a
- * message and abort.
- ***********************************************************************************************/
+    ret1 += 2;                                                                /* +2 for \r\n */
+    va_end(ap);
+  }
 
-void stderr_abort(const char *fmt, ...) 
-{
-  va_list ap;
+  if (act == STDERR_EXIT) {
+    exit(-1);
+  }
 
-  va_start(ap, fmt);
-  stderr_doit(0, fmt, ap);
-  va_end(ap);
-  abort();
-}
+  if (act == STDERR_ABORT) {
+    abort();
+  }
 
-/************************************************************************************************
- * stderr_sys: Fatal error related to a system call. Print a message
- * and terminate.
- ***********************************************************************************************/
-
-void stderr_sys(const char *fmt, ...) 
-{
-  int     errno_cpy = errno;
-  va_list ap;
-
-  va_start(ap, fmt);
-  stderr_doit(errno_cpy, fmt, ap);
-  va_end(ap);
-  exit(errno_cpy != 0 ? errno_cpy : -1);
+  return ret1 + ret2;
 }
 
 /************************************************************************************************
- * stderr_dump: Fatal error related to a system call. Print a message
- * and abort.
- ***********************************************************************************************/
-
-void stderr_dump(const char *fmt, ...) 
-{
-  va_list ap;
-
-  va_start(ap, fmt);
-  stderr_doit(errno, fmt, ap);
-  va_end(ap);
-  abort();
-}
-
-/************************************************************************************************
  * stderr_strerr: Returns a constant string in response to a StdUtil
  * error code.  Some StdUtil fcns can return system specific codes.
  * In that case this fcn will return a "Unknown Error Code (system
@@ -209,3 +143,7 @@
 
   return ret;
 }
+
+#ifdef __cplusplus
+}
+#endif

Modified: vendor/stdutil/current/src/stdfd.c
===================================================================
--- vendor/stdutil/current/src/stdfd.c	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdfd.c	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 
@@ -27,6 +26,10 @@
 #include <stdutil/stderror.h>
 #include <stdutil/stdfd.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #if defined(_WIN32)
 #  include <io.h>
 #  include <sys/locking.h>
@@ -195,7 +198,7 @@
 
   STDSAFETY_CHECK(fd->stream != NULL && fd->fd >= 0);
 
-  if (stdfd_flush(fd) != 0 || STDFSYNC(fd->fd) != 0) {
+  if (fflush(fd->stream) != 0 || STDFSYNC(fd->fd) != 0) {
     ret = errno;
     STDSAFETY_CHECK(ret != STDESUCCESS);
   }
@@ -278,26 +281,34 @@
  ***********************************************************************************************/
 
 STDINLINE stdcode stdfd_trylock(stdfd *fd)
+#if defined(_WIN32)
 {
   stdcode ret = STDESUCCESS;
 
   STDSAFETY_CHECK(fd->stream != NULL && fd->fd >= 0);
 
-#if defined(_WIN32)
   if (_locking(fd->fd, _LK_NBLCK, 1) != 0) {
+    ret = errno;
+    STDSAFETY_CHECK(ret != STDESUCCESS);
+  }
+
+  return ret;
+}
 #else
+{
   struct flock lock = { 0 };
+  stdcode ret       = STDESUCCESS;
 
   lock.l_type = F_WRLCK;
 
   if (fcntl(fd->fd, F_SETLK, &lock) != 0) {
-#endif
     ret = errno;
-    STDSAFETY_CHECK(ret != STDESUCCESS);
+    STDSAFETY_CHECK(ret != STDESUCCESS);    
   }
 
   return ret;
 }
+#endif
 
 /************************************************************************************************
  * stdfd_unlock: Release an advisory lock on a file descriptor's
@@ -305,26 +316,34 @@
  ***********************************************************************************************/
 
 STDINLINE stdcode stdfd_unlock(stdfd *fd)
+#if defined(_WIN32)
 {
   stdcode ret = STDESUCCESS;
 
   STDSAFETY_CHECK(fd->stream != NULL && fd->fd >= 0);
 
-#if defined(_WIN32)
   if (_locking(fd->fd, _LK_UNLCK, 1) != 0) {
+    ret = errno;
+    STDSAFETY_CHECK(ret != STDESUCCESS);
+  }  
+
+  return ret;
+}
 #else
+{
   struct flock lock = { 0 };
+  stdcode ret       = STDESUCCESS;
 
   lock.l_type = F_UNLCK;
-
+  
   if (fcntl(fd->fd, F_SETLK, &lock) != 0) {
-#endif
     ret = errno;
     STDSAFETY_CHECK(ret != STDESUCCESS);
-  }  
+  }
 
   return ret;
-}
+ }
+#endif
 
 /************************************************************************************************
  * stdfile_unlink: Erase a file.
@@ -341,3 +360,7 @@
 
   return ret;
 }
+
+#ifdef __cplusplus
+}
+#endif

Modified: vendor/stdutil/current/src/stdhash.c
===================================================================
--- vendor/stdutil/current/src/stdhash.c	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdhash.c	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 
@@ -27,6 +26,10 @@
 #include <stdutil/stderror.h>
 #include <stdutil/stdhash.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* stdhash is a table based implementation of a dictionary data
    structure. In particular, it is an open-address, double hashing
    hashtable (ref: Sedgewick: Algorithms in C, 3rd Ed.) that maps
@@ -1390,3 +1393,7 @@
 
   return it;
 }
+
+#ifdef __cplusplus
+}
+#endif

Modified: vendor/stdutil/current/src/stdit.c
===================================================================
--- vendor/stdutil/current/src/stdit.c	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdit.c	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 
@@ -28,6 +27,10 @@
 #include <stdutil/stdhash.h>
 #include <stdutil/stdskl.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /************************************************************************************************
  * stdit_get_type: Get the functional type of an iterator.
  ***********************************************************************************************/
@@ -53,7 +56,7 @@
     break;
 
   default:
-    ret = 0;
+    ret = (stdit_type) 0;
     STDEXCEPTION(uninitialized or corrupted iterator);
     break;
   }
@@ -628,3 +631,7 @@
 
   return it;
 }
+
+#ifdef __cplusplus
+}
+#endif

Modified: vendor/stdutil/current/src/stdskl.c
===================================================================
--- vendor/stdutil/current/src/stdskl.c	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdskl.c	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 
@@ -28,6 +27,10 @@
 #include <stdutil/stdtime.h>
 #include <stdutil/stdskl.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* TODO: consider shrinking end_node's arrays when the top level
    becomes empty (down to some minimum height like 4 or 5); this is
    easy to detect: if the node being removed has the same height as
@@ -61,6 +64,12 @@
 
 /************************************************************************************************
  * stdskl_low_create_node: Create a node to be inserted into 'l.'
+ *
+ * For random height generation, a node is promoted to a higher height
+ * w/ 25% chance.  The optimum promotion chance for a skiplist is
+ * somewhere between 28% and 37% depending on the analysis used.  25%
+ * gives nearly optimal performance while using less memory and not
+ * requiring excessive random bit generation.
  ***********************************************************************************************/
 
 STDINLINE static stdskl_node *stdskl_low_create_node(stdskl *l, stdint8 height, const void *key, const void *val)
@@ -75,17 +84,16 @@
   if (height == -1) {                                             /* height generation requested */
     stdbool keep_going = STDTRUE;
 
-    for (; keep_going && height < STDSKL_MAX_HEIGHT; ++height) {  /* count how many random "on" bits we get in a row */
+    for (; keep_going && height < STDSKL_MAX_HEIGHT; ++height) {  /* loop while random height increases */
 
       if (l->bits_left == 0) {                                    /* out of random bits */
 	l->rand_bits = stdrand32(l->seed);                        /* generate 32 new ones */
 	l->bits_left = 32;
       }
 
-      keep_going = ((l->rand_bits & 0x1) == 0x1);                 /* break loop on a "off" bit */
-
-      --l->bits_left;                                             /* remove used bit */
-      l->rand_bits >>= 1;
+      keep_going = ((l->rand_bits & 0x3) == 0x3);                 /* continue loop w/ 25% chance */
+      l->bits_left  -= 2;                                         /* remove used bits */
+      l->rand_bits >>= 2;
     }
   }
 
@@ -101,8 +109,6 @@
   mem_tot   = STDARCH_PADDED_SIZE(mem_tot);         /* pad memory for key */
   key_off   = mem_tot;
 
-  /* TODO: might only pad the key size if vsize != 0 */
-
   mem_tot  += STDARCH_PADDED_SIZE(l->ksize);        /* memory for key and padding for value */
   val_off   = mem_tot;
 
@@ -1180,3 +1186,7 @@
 
   return it;
 }
+
+#ifdef __cplusplus
+}
+#endif

Modified: vendor/stdutil/current/src/stdthread.c
===================================================================
--- vendor/stdutil/current/src/stdthread.c	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdthread.c	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 
@@ -36,6 +35,10 @@
 #  include <stdutil/stderror.h>
 #  include <stdutil/stdthread.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /************************************************************************************************
  * stdthread_spawn: Create a new thread and start its execution.
  ***********************************************************************************************/
@@ -49,6 +52,7 @@
 
   if ((thr = (HANDLE) _beginthreadex(NULL, 0, (unsigned(STDTHREAD_FCN*)(void*)) thr_fcn, fcn_arg, 0, &tid)) == NULL) {
     ret = errno;
+    STDSAFETY_CHECK(ret != STDESUCCESS);
     goto stdthread_spawn_end;
   }
 
@@ -88,6 +92,7 @@
 
   if (CloseHandle(thr) == 0) {
     ret = (stdcode) GetLastError();
+    STDSAFETY_CHECK(ret != STDESUCCESS);
   }
 
   return ret;
@@ -135,6 +140,7 @@
 
  stdthread_join_fail:
   ret = (stdcode) GetLastError();
+  STDSAFETY_CHECK(ret != STDESUCCESS);
 
  stdthread_join_end:
   return ret;
@@ -314,7 +320,7 @@
 
     woke_one = STDFALSE;
 
-    for (loop_cnt = 20; loop_cnt != 0; --loop_cnt) {  /* don't try to wake sleeper more than a constant # of times */
+    for (loop_cnt = 10; loop_cnt != 0; --loop_cnt) {  /* don't try to wake sleeper more than a constant # of times */
       err = ResumeThread(sleeper);
 
       if (err == 1) {
@@ -326,6 +332,7 @@
 
       } else if (err == (DWORD) -1) {  /* error */
 	ret = (stdcode) GetLastError();
+	STDSAFETY_CHECK(ret != STDESUCCESS);
 	break;
 
       } else if (err > MAXIMUM_SUSPEND_COUNT || (err > loop_cnt && inf_loop)) {
@@ -543,7 +550,7 @@
      higher priority, then he would just loop forever waiting for this
      thread to Suspend, which would never happen due to its lower
      priority.
-x  */
+  */
 
   if (SuspendThread(curr_thread) == -1) {
     abort();
@@ -573,6 +580,7 @@
 
  stdmutex_fast_cond_wait_malloc:
   CloseHandle(dup_handle);
+  STDSAFETY_CHECK(ret != STDESUCCESS);
 
  stdmutex_fast_cond_wait_end:
   if (reacquire) {
@@ -1181,6 +1189,10 @@
 #  endif
 #endif
 
+#ifdef __cplusplus
+}
+#endif
+
 #else
 int stdthread_trnsl_dummy;  /* avoids empty translation unit error #if !defined(_REENTRANT) */
 #endif

Modified: vendor/stdutil/current/src/stdtime.c
===================================================================
--- vendor/stdutil/current/src/stdtime.c	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdtime.c	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 
@@ -32,6 +31,10 @@
 #include <stdutil/stderror.h>
 #include <stdutil/stdtime.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* stdtime: sec == STDINT64_MIN -> nano == 0
             sec <  0            -> -STD1BILLION < nano <= 0
             sec == 0            -> -STD1BILLION < nano < STD1BILLION
@@ -234,7 +237,8 @@
 }
 
 /************************************************************************************************
- * stdsleep: Sleep for a period of time.
+ * stdsleep: Sleep for a period of time.  On error, remndr will be
+ * filled if non-NULL.
  ***********************************************************************************************/
 
 STDINLINE stdcode stdsleep(stdtime delta, stdtime *remndr)
@@ -324,3 +328,7 @@
 
   return ret;
 }
+
+#ifdef __cplusplus
+}
+#endif

Modified: vendor/stdutil/current/src/stdutil/private/stdarch.h
===================================================================
--- vendor/stdutil/current/src/stdutil/private/stdarch.h	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/private/stdarch.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,9 +1,7 @@
-/* src/stdutil/private/stdarch.h.  Generated by configure.  */
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999.
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this
@@ -24,136 +22,10 @@
 #ifndef stdarch_h_2005_07_12_00_51_28_jschultz_at_cnds_jhu_edu
 #define stdarch_h_2005_07_12_00_51_28_jschultz_at_cnds_jhu_edu
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* the following defines are filled in by the configure script */
-
-#define SIZEOF_CHAR 1
-#define SIZEOF_SHORT 2
-#define SIZEOF_INT 4
-#define SIZEOF_LONG 4
-#define SIZEOF_LONG_LONG 8
-#define SIZEOF_SIZE_T 4
-#define SIZEOF_VOID_P 4
-
-/* STDARCH_MAX_BYTE_ALIGNMENT must be a power of 2 (e.g. - 1, 2, 4, 8,
-   etc.)  and must be the most stringent byte alignment that your
-   architecture requires for any basic type; 4 should be good enough
-   for any 32 bit or smaller architectures, 8 should be good enough
-   for any 64 bit or smaller architectures, etc.
-*/
-
-#define STDARCH_MAX_BYTE_ALIGNMENT 4
-
-/* check if NULL is represented as all zero in memory for "all" types of pointers */
-
-#define STDARCH_NULL_IS_ZERO 1
-
-/* endian byte reordering mapping */
-
-#define STDENDIAN16_SWAP 1
-
-#define STDENDIAN32_NET0_FROM_HOST 3
-#define STDENDIAN32_NET1_FROM_HOST 2
-#define STDENDIAN32_NET2_FROM_HOST 1
-#define STDENDIAN32_NET3_FROM_HOST 0
-
-#define STDENDIAN32_HOST0_FROM_NET 3
-#define STDENDIAN32_HOST1_FROM_NET 2
-#define STDENDIAN32_HOST2_FROM_NET 1
-#define STDENDIAN32_HOST3_FROM_NET 0
-
-#define STDENDIAN64_NET0_FROM_HOST 7
-#define STDENDIAN64_NET1_FROM_HOST 6
-#define STDENDIAN64_NET2_FROM_HOST 5
-#define STDENDIAN64_NET3_FROM_HOST 4
-#define STDENDIAN64_NET4_FROM_HOST 3
-#define STDENDIAN64_NET5_FROM_HOST 2
-#define STDENDIAN64_NET6_FROM_HOST 1
-#define STDENDIAN64_NET7_FROM_HOST 0
-
-#define STDENDIAN64_HOST0_FROM_NET 7
-#define STDENDIAN64_HOST1_FROM_NET 6
-#define STDENDIAN64_HOST2_FROM_NET 5
-#define STDENDIAN64_HOST3_FROM_NET 4
-#define STDENDIAN64_HOST4_FROM_NET 3
-#define STDENDIAN64_HOST5_FROM_NET 2
-#define STDENDIAN64_HOST6_FROM_NET 1
-#define STDENDIAN64_HOST7_FROM_NET 0
-
-/* do architecture specific integer typedefs and checks */
-
-/* ensure char's are 1 byte long */
-
-#if (SIZEOF_CHAR != 1)
-#  error No 1 byte integer type found!
-#endif
-
-/* ensure short's are 2 bytes long */
-
-#if (SIZEOF_SHORT != 2)
-#  error No 2 byte integer type found!
-#endif
-
-/* figure out which type is 4 bytes long */
-
-#if (SIZEOF_INT == 4)
-
-typedef int                stdarch_int32;
-typedef unsigned int       stdarch_uint32;
-
-#elif (SIZEOF_LONG == 4)
-
-typedef long               stdarch_int32;
-typedef unsigned long      stdarch_uint32;
-
+#ifdef _WIN32
+#  include <stdutil/private/stdarch_wintel32.h>
 #else
-#  error No 4 byte integer type found!
+#  include <stdutil/private/stdarch_autoconf.h>
 #endif
 
-/* figure out which type is 8 bytes long */
-
-#if (SIZEOF_LONG == 8)
-
-typedef long               stdarch_int64;
-typedef unsigned long      stdarch_uint64;
-
-#elif defined(_MSC_VER)
-
-typedef __int64            stdarch_int64;
-typedef unsigned __int64   stdarch_uint64;
-
-#elif (SIZEOF_LONG_LONG == 8)
-
-typedef long long          stdarch_int64;
-typedef unsigned long long stdarch_uint64;
-
-#else
-#  error No 8 byte integeral type found!
 #endif
-
-/* figure out which type is the same size as size_t */
-
-#if (SIZEOF_SIZE_T == 2)
-
-typedef short stdarch_ssize;
-
-#elif (SIZEOF_SIZE_T == 4)
-
-typedef stdarch_int32 stdarch_ssize;
-
-#elif (SIZEOF_SIZE_T == 8)
-
-typedef stdarch_int64 stdarch_ssize;
-
-#else
-#  error No integral type of same size as size_t!
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif

Deleted: vendor/stdutil/current/src/stdutil/private/stdarch.h.in
===================================================================
--- vendor/stdutil/current/src/stdutil/private/stdarch.h.in	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/private/stdarch.h.in	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,158 +0,0 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
- * All rights reserved.
- *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
- * You may not use this file except in compliance with the License. The
- * specific language governing the rights and limitations of the License
- * can be found in the file ``STDUTIL_LICENSE'' found in this 
- * distribution.
- *
- * Software distributed under the License is distributed on an AS IS 
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. 
- *
- * The Original Software is:
- *     The Stdutil Library
- * 
- * Contributors:
- *     Creator - John Lane Schultz (jschultz at cnds.jhu.edu)
- *     The Center for Networking and Distributed Systems
- *         (CNDS - http://www.cnds.jhu.edu)
- */ 
-
-#ifndef stdarch_h_2005_07_12_00_51_28_jschultz_at_cnds_jhu_edu
-#define stdarch_h_2005_07_12_00_51_28_jschultz_at_cnds_jhu_edu
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* the following defines are filled in by the configure script */
-
-#undef SIZEOF_CHAR
-#undef SIZEOF_SHORT
-#undef SIZEOF_INT
-#undef SIZEOF_LONG
-#undef SIZEOF_LONG_LONG
-#undef SIZEOF_SIZE_T
-#undef SIZEOF_VOID_P
-
-/* STDARCH_MAX_BYTE_ALIGNMENT must be a power of 2 (e.g. - 1, 2, 4, 8,
-   etc.)  and must be the most stringent byte alignment that your
-   architecture requires for any basic type; 4 should be good enough
-   for any 32 bit or smaller architectures, 8 should be good enough
-   for any 64 bit or smaller architectures, etc.
-*/
-
-#undef STDARCH_MAX_BYTE_ALIGNMENT
-
-/* check if NULL is represented as all zero in memory for "all" types of pointers */
-
-#undef STDARCH_NULL_IS_ZERO
-
-/* endian byte reordering mapping */
-
-#undef STDENDIAN16_SWAP
-
-#undef STDENDIAN32_NET0_FROM_HOST
-#undef STDENDIAN32_NET1_FROM_HOST
-#undef STDENDIAN32_NET2_FROM_HOST
-#undef STDENDIAN32_NET3_FROM_HOST
-
-#undef STDENDIAN32_HOST0_FROM_NET
-#undef STDENDIAN32_HOST1_FROM_NET
-#undef STDENDIAN32_HOST2_FROM_NET
-#undef STDENDIAN32_HOST3_FROM_NET
-
-#undef STDENDIAN64_NET0_FROM_HOST
-#undef STDENDIAN64_NET1_FROM_HOST
-#undef STDENDIAN64_NET2_FROM_HOST
-#undef STDENDIAN64_NET3_FROM_HOST
-#undef STDENDIAN64_NET4_FROM_HOST
-#undef STDENDIAN64_NET5_FROM_HOST
-#undef STDENDIAN64_NET6_FROM_HOST
-#undef STDENDIAN64_NET7_FROM_HOST
-
-#undef STDENDIAN64_HOST0_FROM_NET
-#undef STDENDIAN64_HOST1_FROM_NET
-#undef STDENDIAN64_HOST2_FROM_NET
-#undef STDENDIAN64_HOST3_FROM_NET
-#undef STDENDIAN64_HOST4_FROM_NET
-#undef STDENDIAN64_HOST5_FROM_NET
-#undef STDENDIAN64_HOST6_FROM_NET
-#undef STDENDIAN64_HOST7_FROM_NET
-
-/* do architecture specific integer typedefs and checks */
-
-/* ensure char's are 1 byte long */
-
-#if (SIZEOF_CHAR != 1)
-#  error No 1 byte integer type found!
-#endif
-
-/* ensure short's are 2 bytes long */
-
-#if (SIZEOF_SHORT != 2)
-#  error No 2 byte integer type found!
-#endif
-
-/* figure out which type is 4 bytes long */
-
-#if (SIZEOF_INT == 4) 
-
-typedef int                stdarch_int32;
-typedef unsigned int       stdarch_uint32;
-
-#elif (SIZEOF_LONG == 4)
-
-typedef long               stdarch_int32;
-typedef unsigned long      stdarch_uint32;
-
-#else
-#  error No 4 byte integer type found!
-#endif
-
-/* figure out which type is 8 bytes long */
-
-#if (SIZEOF_LONG == 8)
-
-typedef long               stdarch_int64;
-typedef unsigned long      stdarch_uint64;
-
-#elif defined(_MSC_VER)
-
-typedef __int64            stdarch_int64;
-typedef unsigned __int64   stdarch_uint64;
-
-#elif (SIZEOF_LONG_LONG == 8)
-
-typedef long long          stdarch_int64;
-typedef unsigned long long stdarch_uint64;
-
-#else
-#  error No 8 byte integeral type found!
-#endif
-
-/* figure out which type is the same size as size_t */
-
-#if (SIZEOF_SIZE_T == 2)
-
-typedef short stdarch_ssize;
-
-#elif (SIZEOF_SIZE_T == 4)
-
-typedef stdarch_int32 stdarch_ssize;
-
-#elif (SIZEOF_SIZE_T == 8)
-
-typedef stdarch_int64 stdarch_ssize;
-
-#else
-#  error No integral type of same size as size_t!
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif

Added: vendor/stdutil/current/src/stdutil/private/stdarch_autoconf.h.in
===================================================================
--- vendor/stdutil/current/src/stdutil/private/stdarch_autoconf.h.in	                        (rev 0)
+++ vendor/stdutil/current/src/stdutil/private/stdarch_autoconf.h.in	2006-11-19 15:17:12 UTC (rev 371)
@@ -0,0 +1,157 @@
+/* Copyright (c) 2000-2006, The Johns Hopkins University
+ * All rights reserved.
+ *
+ * The contents of this file are subject to a license (the ``License'').
+ * You may not use this file except in compliance with the License. The
+ * specific language governing the rights and limitations of the License
+ * can be found in the file ``STDUTIL_LICENSE'' found in this 
+ * distribution.
+ *
+ * Software distributed under the License is distributed on an AS IS 
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. 
+ *
+ * The Original Software is:
+ *     The Stdutil Library
+ * 
+ * Contributors:
+ *     Creator - John Lane Schultz (jschultz at cnds.jhu.edu)
+ *     The Center for Networking and Distributed Systems
+ *         (CNDS - http://www.cnds.jhu.edu)
+ */ 
+
+#ifndef stdarch_autoconf_h_2006_03_13_17_44_12_jschultz_at_cnds_jhu_edu
+#define stdarch_autoconf_h_2006_03_13_17_44_12_jschultz_at_cnds_jhu_edu
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* the following defines are filled in by the configure script */
+
+#undef SIZEOF_CHAR
+#undef SIZEOF_SHORT
+#undef SIZEOF_INT
+#undef SIZEOF_LONG
+#undef SIZEOF_LONG_LONG
+#undef SIZEOF_SIZE_T
+#undef SIZEOF_VOID_P
+
+/* STDARCH_MAX_BYTE_ALIGNMENT must be a power of 2 (e.g. - 1, 2, 4, 8,
+   etc.)  and must be the most stringent byte alignment that your
+   architecture requires for any basic type; 4 should be good enough
+   for any 32 bit or smaller architectures, 8 should be good enough
+   for any 64 bit or smaller architectures, etc.
+*/
+
+#undef STDARCH_MAX_BYTE_ALIGNMENT
+
+/* check if NULL is represented as all zero in memory for "all" types of pointers */
+
+#undef STDARCH_NULL_IS_ZERO
+
+/* endian byte reordering mapping */
+
+#undef STDENDIAN16_SWAP
+
+#undef STDENDIAN32_NET0_FROM_HOST
+#undef STDENDIAN32_NET1_FROM_HOST
+#undef STDENDIAN32_NET2_FROM_HOST
+#undef STDENDIAN32_NET3_FROM_HOST
+
+#undef STDENDIAN32_HOST0_FROM_NET
+#undef STDENDIAN32_HOST1_FROM_NET
+#undef STDENDIAN32_HOST2_FROM_NET
+#undef STDENDIAN32_HOST3_FROM_NET
+
+#undef STDENDIAN64_NET0_FROM_HOST
+#undef STDENDIAN64_NET1_FROM_HOST
+#undef STDENDIAN64_NET2_FROM_HOST
+#undef STDENDIAN64_NET3_FROM_HOST
+#undef STDENDIAN64_NET4_FROM_HOST
+#undef STDENDIAN64_NET5_FROM_HOST
+#undef STDENDIAN64_NET6_FROM_HOST
+#undef STDENDIAN64_NET7_FROM_HOST
+
+#undef STDENDIAN64_HOST0_FROM_NET
+#undef STDENDIAN64_HOST1_FROM_NET
+#undef STDENDIAN64_HOST2_FROM_NET
+#undef STDENDIAN64_HOST3_FROM_NET
+#undef STDENDIAN64_HOST4_FROM_NET
+#undef STDENDIAN64_HOST5_FROM_NET
+#undef STDENDIAN64_HOST6_FROM_NET
+#undef STDENDIAN64_HOST7_FROM_NET
+
+/* do architecture specific integer typedefs and checks */
+
+/* ensure char's are 1 byte long */
+
+#if (SIZEOF_CHAR != 1)
+#  error No 1 byte integer type found!
+#endif
+
+/* ensure short's are 2 bytes long */
+
+#if (SIZEOF_SHORT != 2)
+#  error No 2 byte integer type found!
+#endif
+
+/* figure out which type is 4 bytes long */
+
+#if (SIZEOF_INT == 4) 
+
+typedef int                stdarch_int32;
+typedef unsigned int       stdarch_uint32;
+
+#elif (SIZEOF_LONG == 4)
+
+typedef long               stdarch_int32;
+typedef unsigned long      stdarch_uint32;
+
+#else
+#  error No 4 byte integer type found!
+#endif
+
+/* figure out which type is 8 bytes long */
+
+#if (SIZEOF_LONG == 8)
+
+typedef long               stdarch_int64;
+typedef unsigned long      stdarch_uint64;
+
+#elif defined(_MSC_VER)
+
+typedef __int64            stdarch_int64;
+typedef unsigned __int64   stdarch_uint64;
+
+#elif (SIZEOF_LONG_LONG == 8)
+
+typedef long long          stdarch_int64;
+typedef unsigned long long stdarch_uint64;
+
+#else
+#  error No 8 byte integeral type found!
+#endif
+
+/* figure out which type is the same size as size_t */
+
+#if (SIZEOF_SIZE_T == 2)
+
+typedef short stdarch_ssize;
+
+#elif (SIZEOF_SIZE_T == 4)
+
+typedef stdarch_int32 stdarch_ssize;
+
+#elif (SIZEOF_SIZE_T == 8)
+
+typedef stdarch_int64 stdarch_ssize;
+
+#else
+#  error No integral type of same size as size_t!
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

Added: vendor/stdutil/current/src/stdutil/private/stdarch_wintel32.h
===================================================================
--- vendor/stdutil/current/src/stdutil/private/stdarch_wintel32.h	                        (rev 0)
+++ vendor/stdutil/current/src/stdutil/private/stdarch_wintel32.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -0,0 +1,157 @@
+/* Copyright (c) 2000-2006, The Johns Hopkins University
+ * All rights reserved.
+ *
+ * The contents of this file are subject to a license (the ``License'').
+ * You may not use this file except in compliance with the License. The
+ * specific language governing the rights and limitations of the License
+ * can be found in the file ``STDUTIL_LICENSE'' found in this
+ * distribution.
+ *
+ * Software distributed under the License is distributed on an AS IS
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
+ *
+ * The Original Software is:
+ *     The Stdutil Library
+ *
+ * Contributors:
+ *     Creator - John Lane Schultz (jschultz at cnds.jhu.edu)
+ *     The Center for Networking and Distributed Systems
+ *         (CNDS - http://www.cnds.jhu.edu)
+ */
+
+#ifndef stdarch_wintel32_h_2006_03_13_17_43_22_jschultz_at_cnds_jhu_edu
+#define stdarch_wintel32_h_2006_03_13_17_43_22_jschultz_at_cnds_jhu_edu
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* the following defines are filled in by the configure script */
+
+#define SIZEOF_CHAR 1
+#define SIZEOF_SHORT 2
+#define SIZEOF_INT 4
+#define SIZEOF_LONG 4
+#undef  SIZEOF_LONG_LONG
+#define SIZEOF_SIZE_T 4
+#define SIZEOF_VOID_P 4
+
+/* STDARCH_MAX_BYTE_ALIGNMENT must be a power of 2 (e.g. - 1, 2, 4, 8,
+   etc.)  and must be the most stringent byte alignment that your
+   architecture requires for any basic type; 4 should be good enough
+   for any 32 bit or smaller architectures, 8 should be good enough
+   for any 64 bit or smaller architectures, etc.
+*/
+
+#define STDARCH_MAX_BYTE_ALIGNMENT 4
+
+/* check if NULL is represented as all zero in memory for "all" types of pointers */
+
+#define STDARCH_NULL_IS_ZERO 1
+
+/* endian byte reordering mapping */
+
+#define STDENDIAN16_SWAP 1
+
+#define STDENDIAN32_NET0_FROM_HOST 3
+#define STDENDIAN32_NET1_FROM_HOST 2
+#define STDENDIAN32_NET2_FROM_HOST 1
+#define STDENDIAN32_NET3_FROM_HOST 0
+
+#define STDENDIAN32_HOST0_FROM_NET 3
+#define STDENDIAN32_HOST1_FROM_NET 2
+#define STDENDIAN32_HOST2_FROM_NET 1
+#define STDENDIAN32_HOST3_FROM_NET 0
+
+#define STDENDIAN64_NET0_FROM_HOST 7
+#define STDENDIAN64_NET1_FROM_HOST 6
+#define STDENDIAN64_NET2_FROM_HOST 5
+#define STDENDIAN64_NET3_FROM_HOST 4
+#define STDENDIAN64_NET4_FROM_HOST 3
+#define STDENDIAN64_NET5_FROM_HOST 2
+#define STDENDIAN64_NET6_FROM_HOST 1
+#define STDENDIAN64_NET7_FROM_HOST 0
+
+#define STDENDIAN64_HOST0_FROM_NET 7
+#define STDENDIAN64_HOST1_FROM_NET 6
+#define STDENDIAN64_HOST2_FROM_NET 5
+#define STDENDIAN64_HOST3_FROM_NET 4
+#define STDENDIAN64_HOST4_FROM_NET 3
+#define STDENDIAN64_HOST5_FROM_NET 2
+#define STDENDIAN64_HOST6_FROM_NET 1
+#define STDENDIAN64_HOST7_FROM_NET 0
+
+/* do architecture specific integer typedefs and checks */
+
+/* ensure char's are 1 byte long */
+
+#if (SIZEOF_CHAR != 1)
+#  error No 1 byte integer type found!
+#endif
+
+/* ensure short's are 2 bytes long */
+
+#if (SIZEOF_SHORT != 2)
+#  error No 2 byte integer type found!
+#endif
+
+/* figure out which type is 4 bytes long */
+
+#if (SIZEOF_INT == 4)
+
+typedef int                stdarch_int32;
+typedef unsigned int       stdarch_uint32;
+
+#elif (SIZEOF_LONG == 4)
+
+typedef long               stdarch_int32;
+typedef unsigned long      stdarch_uint32;
+
+#else
+#  error No 4 byte integer type found!
+#endif
+
+/* figure out which type is 8 bytes long */
+
+#if (SIZEOF_LONG == 8)
+
+typedef long               stdarch_int64;
+typedef unsigned long      stdarch_uint64;
+
+#elif defined(_MSC_VER)
+
+typedef __int64            stdarch_int64;
+typedef unsigned __int64   stdarch_uint64;
+
+#elif (SIZEOF_LONG_LONG == 8)
+
+typedef long long          stdarch_int64;
+typedef unsigned long long stdarch_uint64;
+
+#else
+#  error No 8 byte integeral type found!
+#endif
+
+/* figure out which type is the same size as size_t */
+
+#if (SIZEOF_SIZE_T == 2)
+
+typedef short stdarch_ssize;
+
+#elif (SIZEOF_SIZE_T == 4)
+
+typedef stdarch_int32 stdarch_ssize;
+
+#elif (SIZEOF_SIZE_T == 8)
+
+typedef stdarch_int64 stdarch_ssize;
+
+#else
+#  error No integral type of same size as size_t!
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

Modified: vendor/stdutil/current/src/stdutil/private/stdarr_p.h
===================================================================
--- vendor/stdutil/current/src/stdutil/private/stdarr_p.h	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/private/stdarr_p.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 
@@ -29,7 +28,7 @@
   
    begin - address of the lowest byte of the array's alloc'ed memory, NULL if none alloc'ed
    end   - address of the first byte past the last value stored in the array, same as begin if empty
-   size  - number of values this array is storing   
+   size  - number of values this array is storing [(end - begin) / vsize]
    cap   - number of values that can legally fit in alloc'ed memory
    vsize - size, in bytes, of the type of values this array is storing   
    opts  - user flags affecting default operation

Modified: vendor/stdutil/current/src/stdutil/private/stdcarr_p.h
===================================================================
--- vendor/stdutil/current/src/stdutil/private/stdcarr_p.h	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/private/stdcarr_p.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 
@@ -27,7 +26,7 @@
             or vector.  Stores element by value, contiguously in
             memory modulo the size of the array.  Always maintains at
             least one empty element in a non-empty array to act as a
-            sentinel position and to remove the amibiguous of case
+            sentinel position and to remove the amibiguous case of
             when begin == end -- Is the array full or empty?  In
             particular, this allows for the test begin <= end ? (data
             doesn't wrap around) : (data wraps around)

Modified: vendor/stdutil/current/src/stdutil/private/stddll_p.h
===================================================================
--- vendor/stdutil/current/src/stdutil/private/stddll_p.h	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/private/stddll_p.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 

Modified: vendor/stdutil/current/src/stdutil/private/stdhash_p.h
===================================================================
--- vendor/stdutil/current/src/stdutil/private/stdhash_p.h	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/private/stdhash_p.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 

Modified: vendor/stdutil/current/src/stdutil/private/stdit_p.h
===================================================================
--- vendor/stdutil/current/src/stdutil/private/stdit_p.h	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/private/stdit_p.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 

Modified: vendor/stdutil/current/src/stdutil/private/stdskl_p.h
===================================================================
--- vendor/stdutil/current/src/stdutil/private/stdskl_p.h	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/private/stdskl_p.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 

Modified: vendor/stdutil/current/src/stdutil/private/stdthread_p.h
===================================================================
--- vendor/stdutil/current/src/stdutil/private/stdthread_p.h	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/private/stdthread_p.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 

Modified: vendor/stdutil/current/src/stdutil/stdarr.h
===================================================================
--- vendor/stdutil/current/src/stdutil/stdarr.h	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/stdarr.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 

Modified: vendor/stdutil/current/src/stdutil/stdcarr.h
===================================================================
--- vendor/stdutil/current/src/stdutil/stdcarr.h	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/stdcarr.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 

Modified: vendor/stdutil/current/src/stdutil/stddefines.h
===================================================================
--- vendor/stdutil/current/src/stdutil/stddefines.h	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/stddefines.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 

Modified: vendor/stdutil/current/src/stdutil/stddll.h
===================================================================
--- vendor/stdutil/current/src/stdutil/stddll.h	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/stddll.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 

Modified: vendor/stdutil/current/src/stdutil/stderror.h
===================================================================
--- vendor/stdutil/current/src/stdutil/stderror.h	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/stderror.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 
@@ -32,25 +31,33 @@
 extern "C" {
 #endif
 
+/* NOTE: redefining this limit only has an effect at compile time of the stdutil library */
+
 #ifndef STDERR_MAX_ERR_MSG_LEN 
-/* NOTE: redefining this variable only has an effect at compile time of the stdutil library */
 #  define STDERR_MAX_ERR_MSG_LEN 1024
 #endif
 
+/* stderr output stream (can be set to NULL to squelch all stdutil output) */
+
+extern FILE * stdutil_output /* = stderr */;
+
 /* stderr error routines */
 
-int  stderr_msg(const char *fmt, ...);
-int  stderr_ret(const char *fmt, ...);
-void stderr_quit(const char *fmt, ...);
-void stderr_abort(const char *fmt, ...);
-void stderr_sys(const char *fmt, ...);
-void stderr_dump(const char *fmt, ...);
+typedef enum 
+{
+  STDERR_RETURN,
+  STDERR_EXIT,
+  STDERR_ABORT
 
+} stderr_action;
+
+int stderr_output(stderr_action act, int errno_cpy, const char *fmt, ...);
+
 STDINLINE const char *stderr_strerr(stdcode code);
 
 /* error macros */
 
-#define STDEXCEPTION(x) stderr_abort("STDEXCEPTION: File: %s; Line: %d: %s", __FILE__, __LINE__, #x)
+#define STDEXCEPTION(x) stderr_output(STDERR_ABORT, 0, "STDEXCEPTION: File: %s; Line: %d: %s", __FILE__, __LINE__, #x)
 
 #if defined(STDSAFETY_CHECKS)
 #  define STDSAFETY_CHECK(x) { if (!(x)) { STDEXCEPTION(safety check (x) failed); } }

Modified: vendor/stdutil/current/src/stdutil/stdfd.h
===================================================================
--- vendor/stdutil/current/src/stdutil/stdfd.h	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/stdfd.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 

Modified: vendor/stdutil/current/src/stdutil/stdhash.h
===================================================================
--- vendor/stdutil/current/src/stdutil/stdhash.h	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/stdhash.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 

Modified: vendor/stdutil/current/src/stdutil/stdit.h
===================================================================
--- vendor/stdutil/current/src/stdutil/stdit.h	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/stdit.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 

Modified: vendor/stdutil/current/src/stdutil/stdskl.h
===================================================================
--- vendor/stdutil/current/src/stdutil/stdskl.h	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/stdskl.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 

Modified: vendor/stdutil/current/src/stdutil/stdthread.h
===================================================================
--- vendor/stdutil/current/src/stdutil/stdthread.h	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/stdthread.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 

Modified: vendor/stdutil/current/src/stdutil/stdtime.h
===================================================================
--- vendor/stdutil/current/src/stdutil/stdtime.h	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/stdtime.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 

Modified: vendor/stdutil/current/src/stdutil/stdutil.h
===================================================================
--- vendor/stdutil/current/src/stdutil/stdutil.h	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil/stdutil.h	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 

Modified: vendor/stdutil/current/src/stdutil.c
===================================================================
--- vendor/stdutil/current/src/stdutil.c	2006-11-17 19:31:06 UTC (rev 370)
+++ vendor/stdutil/current/src/stdutil.c	2006-11-19 15:17:12 UTC (rev 371)
@@ -1,8 +1,7 @@
-/* Copyright (c) 2000-2005, The Johns Hopkins University
+/* Copyright (c) 2000-2006, The Johns Hopkins University
  * All rights reserved.
  *
- * The contents of this file are subject to a license (the ``License'')
- * that is the exact equivalent of the BSD license as of July 23, 1999. 
+ * The contents of this file are subject to a license (the ``License'').
  * You may not use this file except in compliance with the License. The
  * specific language governing the rights and limitations of the License
  * can be found in the file ``STDUTIL_LICENSE'' found in this 
@@ -29,6 +28,10 @@
 #include <stdutil/stdtime.h>
 #include <stdutil/stdutil.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /************************************************************************************************
  * stdstrcpy: Like C's strcpy, but returns strlen(dst) instead.
  ***********************************************************************************************/
@@ -159,7 +162,7 @@
  * span several buffers.  Preferably, but not required, tot_len would
  * equal the total length of the buffers to be hcoded.  If the total
  * length is unknown (or you simply don't want to compute it), then
- * consistently use the same arbitrary constant (e.g. - 0) when
+ * consistently use the same arbitrary constant (e.g. - 0x1) when
  * computing the hcode for those objects.
  ***********************************************************************************************/
 
@@ -216,7 +219,7 @@
      defined (__BORLANDC__) || defined (__TURBOC__))
 #  define stdhcode_sfh_get16bits(d) ( *((const stduint16*)(d)) )
 #else
-#  define stdhcode_sfh_get16bits(d) ( ((stduint16) *((const stduint8 *)(d) + 1) << 8) + *(const stduint8 *)(d) )
+#  define stdhcode_sfh_get16bits(d) ( ((stduint32) *((const stduint8 *)(d) + 1) << 8) | *(const stduint32 *)(d) )
 #endif
 
 STDINLINE stduint32 stdhcode_sfh(const void * buf, stdsize buf_len) 
@@ -263,9 +266,10 @@
 
   ret ^= ret << 3;
   ret += ret >> 5;
-  ret ^= ret << 2;
-  ret += ret >> 15;
-  ret ^= ret << 10;
+  ret ^= ret << 4;
+  ret += ret >> 17;
+  ret ^= ret << 25;
+  ret += ret >> 6;
   
   return ret;
 }
@@ -275,7 +279,7 @@
  * span several buffers.  Preferably, but not required, tot_len would
  * equal the total length of the buffers to be hash coded.  If the total
  * length is unknown (or you simply don't want to compute it), then
- * consistently use the same arbitrary constant (e.g. - 0) when
+ * consistently use the same arbitrary constant (e.g. - 0x1) when
  * computing the hcode for those objects.
  *
  * NOTE: The incremental versions of sfh depend on how you partition
@@ -351,10 +355,11 @@
 
   ret ^= ret << 3;
   ret += ret >> 5;
-  ret ^= ret << 2;
-  ret += ret >> 15;
-  ret ^= ret << 10;
-
+  ret ^= ret << 4;
+  ret += ret >> 17;
+  ret ^= ret << 25;
+  ret += ret >> 6;
+  
   *hsh = ret;
 }
 
@@ -1047,3 +1052,7 @@
 
   return up_pow2;                     /* up_pow2 in range [1.5x, 3x) */
 }
+
+#ifdef __cplusplus
+}
+#endif




More information about the Spread-cvs mailing list