summaryrefslogtreecommitdiffstats
path: root/src/H5FDlog.c
Commit message (Collapse)AuthorAgeFilesLines
* [svn-r22677] Changes needed to make the default free-list mapping from ↵Vailin Choi2012-08-141-1/+1
| | | | | | H5FD_FLMAP_SINGLE to H5FD_FLMAP_DICHOTOMY. Also changed H5O_copy_search_comm_dt_check() to use H5O_obj_class() to get object type instead of H5O_get_info(...TRUE...) saving time in traversing metadata.
* [svn-r22438] (1) fix for making MEM_GHEAP as MEM_DRAWVailin Choi2012-06-061-1/+18
| | | | | | | | | | | | | | | | | | | | | (2) fix to extend into the aggregator based on threshold (3) fix for the "flavor" logging problem (4) fix for test failures due to the above fixes (5) bug fix for h5stat when h5stat against a non-existing file --Ths line, and th se below, will be ignored-- M test/mf.c M src/H5MFaggr.c M src/H5FDpublic.h M src/H5MF.c M src/H5FDmulti.c M src/H5FDlog.c M src/H5Faccum.c M tools/h5copy/testfiles/h5copytst.out.ls M tools/h5copy/testfiles/h5copy_ref.out.ls M tools/h5stat/testh5stat.sh.in M tools/h5stat/h5stat.c
* [svn-r22228] Description:Quincey Koziol2012-04-011-1/+1
| | | | | | | | | Bring r22219 from trunk to 1.8 branch: (with release manager's blessing) Merge "file image" changes from feature branch back to trunk. Tested on: h5committested
* [svn-r21925] Description:Quincey Koziol2012-02-101-19/+19
| | | | | | | | | | | | | | Bring r21919-21924 from trunk to 1.8 branch: cleanup FUNC_ENTER macros, etc. Also removed Subversion mergeinfo tags from a few directories and files. These are artifacts from non-root merges using pre-1.6 Subversion clients. (This should fix the problem of unchanged directories looking "changed" during checkins.) Tested on: Mac OSX/64 10.7.3 (amazon) w/debug & production (daily tested on trunk)
* [svn-r21545] Reverts 21521 (deep string copy of log file name). This string ↵Dana Robinson2011-10-131-2/+4
| | | | is copied correctly deep in the H5P code. Tested on local linux (trivial change).
* [svn-r21531] Merge of 21501 and 21502 from trunk:Dana Robinson2011-10-121-283/+344
| | | | | | | | | | | | | | | | | | | | | Note that this differs slightly from the trunk code since the VFL API won't be changed until 1.10. In the 1.8 branch, the term() function is public and this required some #defines for the Windows VFD. 21501: - Propagated Windows VFD tweaks to SEC2 and log VFDs. - Created typedefs and #defines to make POSIX I/O type-safe on Windows and true POSIX platforms. - Added pre-checks and removed post-checks for POSIX I/O sizes. When the number of bytes to be sent exceeds the maximum return value, the operation is split into smaller subsets. - General code tidying and cleanup. 21502: - Removed Windows VFD code. H5Pset_fapl_windows() actually sets the SEC2 driver, though it will still report H5FD_WINDOWS.
* [svn-r21521] Merge of trunk 21497Dana Robinson2011-10-111-1/+4
| | | | | | Changed H5Pset_fapl_log() to deep copy the log file name instead of copying the pointer. Tested on jam (simple change).
* [svn-r21376] JIRA-HDFFV-2748: Relplace WIN32 macros in source. New ↵Allen Byrne2011-09-121-207/+207
| | | | | | | | H5_HAVE_WIN32_API and H5_HAVE_VISUAL_STUDIO defines only need to be set on windows. Autotools configure is not affected. Trunk passed for a week and cmake branch has been in place > 3 weeks. Tested: local linux
* [svn-r20708] Pushed change 20707 to the 1.8 branch.Dana Robinson2011-05-021-11/+15
| | | | This was a comment-only change that better documents the VFD data "flavors".
* [svn-r20653] Description:Quincey Koziol2011-04-261-1/+1
| | | | | | | | | | | | | | | | Bring r20651 & r20652 from trunk to 1.8 branch: Switch from using 'pthread_create' to 'pthread_self' when trying to detect the pthread library, so that the Intel C compiler is happier with the prototype. Teach the tracing script & routines about the 'unsigned long' and 'unsigned long long' types, so that the H5Pset_fapl_log() API routine gets tracing information correct. Tested on: FreeBSD/32 6.3 (duty) (h5committested on trunk)
* [svn-r20051] Description:Quincey Koziol2011-02-051-259/+312
| | | | | | | | | | | | Bring r20050 from trunk to 1.8 branch: Bring sec2 and log VFDs back into agreement. Correct several compiler warnings. Also add some additional statistics to the log VFD and promote the parameter for H5Pset_fapl_log from 'unsigned' to 'unsigned long long'. Tested on: Mac OS X/32 10.6.6 (amazon) w/debug & production (h5committested on trunk)
* [svn-r19990] Description:Quincey Koziol2011-01-251-127/+248
| | | | | | | | | | | | Bring r19989 from trunk to 1.8 branch: Finish implementing time tracking for read & seek operations in the 'log' VFD. Also clean up code and track total time during all read/write/seek operations. Tested on: Mac OS X/32 10.6.6 (amazon) w/debug & production (too minor to require h5committest)
* [svn-r19797] Bug 2091: remove all Metraowerks compiler code bracheted by ↵Albert Cheng2010-11-171-7/+3
| | | | | | | | __MWERKS__. Metraowerks compiler is no more. Make the code cleaner. Tested: H5committest plus jam serial.
* [svn-r18652] Description:Quincey Koziol2010-04-271-1/+1
| | | | | | | | | | | | Bring r18650 from trunk to 1.8 branch: Bring back various minor tweaks & cleanups from the revise_chunks branch. Tested on: FreeBSD/32 6.3 (duty) in debug mode Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode (h5committested on trunk)
* [svn-r18034] Description:Quincey Koziol2009-12-191-5/+3
| | | | | | | | | Bring r18033 from trunk to 1.8 branch: Correct error in merging Coverity changes in r18011 Tested on: None - eyeballed only (very simple)
* [svn-r18013] Description:Quincey Koziol2009-12-131-74/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bring r18011 from trunk to 1.8 branch: Bring Coverity changes into the trunk: (also other minor cleanups) r17991: Fix Coverity items 175 and 176. Fixed memory leak on error in print_enum in H5LT.c. r17993: (r17992 was not a Coverity change) Close Coverity issue #206: inconsistently checking whether dt->shared was non-NULL after H5T_alloc() returned a valid 'dt' value (which should guarantee that dt->shared is valid). r17994: Fix Coverity item 149. Fixed file handle leak on error in H5FD_stdio_open. r17995: Fixed Coverity issues 154 to 161: Added H5MP_close routine to error handling in the event *mp has not been freed before error. r17996: Close Coverity issue #126: potentially leaking merged_spans on routine failure. r17997: Fix Coverity items 147 and 148. Fixed resource leaks on error in H5FDloc.c. r17998: Coverity issue 269-272: Added integer result variable to functions that could return negative. Assigned to unsigned after checking. Added H5E_BEGIN_TRY block around H5Tclose and removed H5E_THROW in the catch block. Checked buffer is NULL before free. Changed HGOTO_ERROR outside of the if block to H5E_THROW. r17999: Close Coverity issue #127: release temporary spans in more generic manner. (Also add error checking to previous fix) r18000: Resolved Coverity issues 211 and 212 in H5T.c. Added comments to ignore Coverity warning regarding not checking pointer for NULL, as we are using an assert which catches the issue. r18001: Fix Coverity item 146. Fixed resource leak on error in H5O_layout_copy. r18002: Fix Coverity items 143 and 145. Fixed resource leaks on error in H5D_compact_copy and H5D_contig_copy. r18003: Close Coverity issue #192: close file on error r18004: Fix Coverity issue #125: release temporary spans on error r18005: Resolved Coverity issues 5, 25, and 83 (in H5T.c): Separated embedded functions in order to check for NULL on return of H5I_object before passing into H5T_copy. Check to see if new_dt is NULL within error handling before dereferencing it. Ignore Coverity's dead code warnings as the checks that lead to the code are machine dependent. r18006: Coverity 63,70,73: Checked result of function before assigning to an unsigned variable. r18007: Coverity 78,79: added continue statement if H5Pget_filter2 returns negative. r18008: Fixed Coverity issue # 138: Added support in error handling to free dst pointer (if allocated) on error. r18009: Whitespace & coding style cleanup Tested on: Mac OS X/32 10.6.2 (amazon) w/debug & production (h5committested on trunk)
* [svn-r17941] Description:Quincey Koziol2009-12-011-11/+9
| | | | | | | | | | | | Bring r17939 from trunk to 1.8 branch: Handle external links from symlinked files by adding another check to look for "child" files for links from the actual location of the "parent" file, instead of from the location of the symlink. Tested on: FreeBSD/32 6.3 (duty) (h5committested on trunk)
* [svn-r15863] Description:Quincey Koziol2008-10-141-0/+1
| | | | | | | | | | | | | | | | | | | | | Bring r15861 back from trunk to 1.8 release branch. Tested on: Mac OS X/32 10.5.5 (amazon) in debug mode Mac OS X/32 10.5.5 (amazon) w/C++ & FORTRAN, w/threadsafe, in production mode FreeBSD/32 6.3 (duty) in debug mode FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-amd64 2.6 (smirom) w/Intel compilers w/default API=1.6.x, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, in production mode Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN, in production mode Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
* [svn-r15801] Description:Quincey Koziol2008-10-071-13/+8
| | | | | | | | | | | | | | | | | | | | | | | Bring r15800 back from trunk: - File free space branch changes through r15794 Tested on: Mac OS X/32 10.5.5 (amazon) in debug mode Mac OS X/32 10.5.5 (amazon) w/C++ & FORTRAN, w/threadsafe, in production mode FreeBSD/32 6.3 (duty) in debug mode FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-amd64 2.6 (smirom) w/Intel compilers w/default API=1.6.x, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, in production mode Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN, in production mode Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
* [svn-r15513] Description:Quincey Koziol2008-08-211-33/+36
| | | | | | | | | | Bring back r15510 & r15512 from trunk: Fix compiler warnings and formatting. Tested on: Mac OS X/32 10.5.4 (amazon) More tests upcoming
* [svn-r15486] Purpose: Allow library to shut down properly when objects have ↵Neil Fortner2008-08-191-1/+1
| | | | | | | | | | | | | | | | reference count > 1. Description: Added a new field 'app_count' to H5I_id_info_t struct, to track the reference count on an id due to the application. the old 'count' field tracks the total. Generally any id visible to the application gets placed in app_count. Added app_ref boolean parameter to H5I_inc_ref, H5I_dec_ref, H5I_register, H5I_clear_type, and a few other functions, to specify whether the operation(s) being performed on the id(s) are due to the application (TRUE) or not (FALSE). Test added for this case. Tested: kagiso, smirom, linew (h5committest)
* [svn-r15160] Purpose: Separate Windows function macro definitions to win32defs.hScott Wegner2008-06-051-2/+2
| | | | | | | | | | | | | | Description: In library code, we try not to use system calls directly, but instead use the HD{function} macro instead. This way, we can map special versions of the call on particular systems. Previously, it was all done in H5private.h. However, in an effort to clean up platform-specific definitions, we move all of the Windows macros into a separate file, win32defs.h. This way, we can use the non-Posix versions that Visual Studio sends warnings about. Some macros are set specifically in the platform-specific header files. Then, any macros left unset will be set by the "default" implementation in H5private.h. This checkin also cleans up various source files to use the HD* macros when possible. Tested: VS2005 on WinXP VS.NET on WinXP h5committest (kagiso, linew, smirom)
* [svn-r14353] Description:Quincey Koziol2007-12-201-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | - Add hash value for skip list string types, to reduce # of string comparisons. - Fixed bug with metadata/small data block aggregator adding size == 0 block into file free space list. - Refactored metadata/small data block aggregator code into single set of common routines. - Changed block aggregator code to be smarter about releasing space in the 'other' block when the 'other' block has aggregated enough data. Tested on: FreeBSD/32 6.2 (duty) in debug mode FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN, in production mode Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, in production mode Mac OS X/32 10.4.10 (amazon) in debug mode Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
* [svn-r13992] Description:Quincey Koziol2007-07-211-12/+5
| | | | | | | Add some extra logging information to read & write reports. Tested on: FreeBSD/32 6.2 (duty) w/check-vfd
* [svn-r13766] In Visual Studio 2005 for 64-bit, _WIN32 is defined, but not ↵Scott Wegner2007-05-181-6/+6
| | | | | | | WIN32, so I've standardized all #ifdef's to use _WIN32. This should not affect any other platform. Tested: Visual Studio (32- and 64-bit) on Win XP
* [svn-r13475] There's a configure issue linking szip's shared libraries when ↵Mike McGreevy2007-03-081-1/+1
| | | | | | | | | | | | running on kagiso. The static szip libraries are working as intended, but when shared szip libraries are present and intended for use they cannot be opened. A check has been implemented to test if shared szip libraries are functional on current platform. If they are not, and the user is trying to use them, szip is now disbaled and the user is informed. This issue occurs on kagiso, and the resolution was tested on kagiso.
* [svn-r13253] Updated all C and C++ style source code files with the THG ↵Albert Cheng2007-02-071-2/+3
| | | | | | | | | copyright notice. Tested platform: Kagiso only since it is only a comment block change. If it works in one machine, it should work in all, I hope. Still need to check the parallel build on copper.
* [svn-r13139] Fixed the MULTI problem (Bug #731) that corrupted the data. ↵Raymond Lu2007-01-121-4/+10
| | | | | | | The problem came from the EOA for the whole MULTI file. It's taken out because it's meaningless for MULTI file. Instead, each individual file has its EOA.
* [svn-r13125] Description:Quincey Koziol2007-01-091-2/+4
| | | | | | | Add extra protection for sanity checks, when assertions are enabled. Tested on: Linux/32 2.6 (chicago)
* [svn-r13068] Ran bin/reconfigure. Some of the scripts have been changed or ↵James Laird2006-12-181-1/+1
| | | | | | | | | haven't been run in a while, so many of the source files were updated with tracing macros, etc. No code changes by me. Tested on kagiso and smirom.
* [svn-r12803] Description:Quincey Koziol2006-10-231-1/+1
| | | | | | | | | | | | | | Finish new version of the I/O pipeline message, which is much smaller than the previous version. This version is used with the "use the latest version of the format" flag. Closed several memory leaks/overruns (found with valgrind). Also, lots of compiler & formatting cleanups. Tested on: Linux/32 2.6 (chicago) Linux/64 2.6 (chicago2)
* [svn-r12706] Description:Quincey Koziol2006-10-021-3/+3
| | | | | | | | | Clean up some of the warnings on 64-bit Linux... Tested on: Linux/32 2.6 (chicago) Linux/64 2.6 (chicago2) Too minor to require h5committest
* [svn-r11886] Purpose:Quincey Koziol2006-01-231-2/+2
| | | | | | | | | | | | | Code cleanup Description: Check in some of the code cleanups from working on the external link support. (This doesn't include any of the external link features) Platforms tested: FreeBSD 4.11 (sleipnir) Mac OSX.4 (amazon) Linux 2.4
* [svn-r11245] Purpose:Quincey Koziol2005-08-131-26/+26
| | | | | | | | | | | | | | | | | | | | Code cleanup Description: Trim trailing whitespace, which is making 'diff'ing the two branches difficult. Solution: Ran this script in each directory: foreach f (*.[ch] *.cpp) sed 's/[[:blank:]]*$//' $f > sed.out && mv sed.out $f end Platforms tested: FreeBSD 4.11 (sleipnir) Too minor to require h5committest
* [svn-r10628] Purpose:Quincey Koziol2005-04-181-6/+6
| | | | | | | | | | | Code cleanup Description: Clean up various warnings reported by the Windows team. Platforms tested: FreeBSD 4.11 (sleipnir) Too minor to require h5committest
* [svn-r9857] Purpose: MaintenanceElena Pourmal2005-01-221-3/+0
| | | | | | | | | | | | | | Description: Removed PABLO from the source Solution: Platforms tested: arabica with 64-bit, copper with parallel, heping with GNU C and C++ and PGI fortran (but I disabled hl, there is some weird problem only on heping: F9XMODFLAG is not propagated to the Makefile files Misc. update:
* [svn-r9727] Purpose:Quincey Koziol2004-12-291-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug Fix/Code Cleanup/Doc Cleanup/Optimization/Branch Sync :-) Description: Generally speaking, this is the "signed->unsigned" change to selections. However, in the process of merging code back, things got stickier and stickier until I ended up doing a big "sync the two branches up" operation. So... I brought back all the "infrastructure" fixes from the development branch to the release branch (which I think were actually making some improvement in performance) as well as fixed several bugs which had been fixed in one branch, but not the other. I've also tagged the repository before making this checkin with the label "before_signed_unsigned_changes". Platforms tested: FreeBSD 4.10 (sleipnir) w/parallel & fphdf5 FreeBSD 4.10 (sleipnir) w/threadsafe FreeBSD 4.10 (sleipnir) w/backward compatibility Solaris 2.7 (arabica) w/"purify options" Solaris 2.8 (sol) w/FORTRAN & C++ AIX 5.x (copper) w/parallel & FORTRAN IRIX64 6.5 (modi4) w/FORTRAN Linux 2.4 (heping) w/FORTRAN & C++ Misc. update:
* [svn-r9654] Purpose:Raymond Lu2004-12-101-1/+1
| | | | | | | | | | | | | Description: In file H5FDsec2.c and H5FDlog.c, there's statements like H5_ASSIGN_OVERFLOW(file->eof,sb.st_size,off_t,haddr_t); It assumes sb.st_size from h5_stat_t is of type off_t. But on Windows, it has type __int64. So the H5_ASSIGN_OVERFLOW statement may cause problem. Instead of trying to do switch between Windows and other systems in H5FDsec2.c and H5FDlog.c, define a substituting type in H5private.h to fix the problem. On Windows, this type is __int64; on other systems, it is off_t. Platforms tested: fuss. Simple fix. Already did h5committest for v1.6.
* [svn-r8731] Purpose:Quincey Koziol2004-06-231-3/+24
| | | | | | | | | | | | | | | Code cleanup & minor optimization Description: Re-work the way interface initialization routines are specified in the library to avoid the overhead of checking for them in routines where there is no interface initialization routine. This cleans up warnings with gcc 3.4, reduces the library binary size a bit (about 2-3%) and should speedup the library's execution slightly. Platforms tested: FreeBSD 4.10 (sleipnir) w/gcc34 h5committest
* [svn-r8287] Purpose:Quincey Koziol2004-03-301-1/+1
| | | | | | | | | | | | | | Bug fix/code cleanup Description: Copy Robb's feature in SSlib that checks that the name of the function used in the FUNC_ENTER macro is actually the name of function. Fixed a bunch of typos & copy-n-pasto's for functions with incorrect names. Platforms tested: FreeBSD 4.9 (sleipnir) w/parallel too minor to require h5committest
* [svn-r8134] Purpose:Quincey Koziol2004-01-311-1/+27
| | | | | | | | | | | | | | | | Code cleanup Description: Add destructor to match constructor fr VFLs when they are shut down by the library. Solution: Added H5FD_*_term() routines to "undo" changes made in H5FD_*_init() routines. Platforms tested: IBM p690 (copper) too minor to require h5committest
* [svn-r8126] Purpose:Quincey Koziol2004-01-311-1/+1
| | | | | | | | | | | | | | | | | Bug fix/optimization Description: Address slowdown in MPI-I/O file metadata operations that was introduced mid-stream. We now _require_ a POSIX compliant parallel file system for the MPI-I/O file driver (as well as for the MPI-POSIX file driver). Also optimized file open operation when the file is being created by reducing the number of collective & syncronizing calls. Additionally, refactor the MPI routines into a common place, eliminating duplicated code. Platforms tested: FreeBSD 4.9 (sleipnir) w/parallel h5committest
* [svn-r7398] Purpose:Quincey Koziol2003-08-251-0/+4
| | | | | | | | | | | Code cleanup Description: De-linted more code Platforms tested: FreeBSD 4.8 (sleipnir) too minor to require h5committest
* [svn-r7387] Purpose:Quincey Koziol2003-08-211-84/+91
| | | | | | | | | | | Code cleanup Description: More de-linting Platforms tested: FreeBSD 4.8 (sleipnir) too small to need h5committest
* [svn-r7181] Purpose:Quincey Koziol2003-07-071-49/+0
| | | | | | | | | | | Version update Description: Removed 1.4 compatibility code in the library. Platforms tested: FreeBSD 4.8 (sleipnir) h5committest
* [svn-r6598] Purpose:Pedro Vicente Nunes2003-04-081-2/+2
| | | | | | | | | | | | | | | | | code warrior port Description: added some type casts (char*) for CW portability Solution: Platforms tested: w2000(CW , MS) linux arabica modi4 Misc. update:
* [svn-r6501] Purpose:Bill Wendling2003-03-191-4/+17
| | | | | | | | | | | | | | New Feature Description: Added support for the lock and unlock function calls for file drivers. Only FPHDF5 uses this feature. All of these drivers don't define lock or unlock methods. Platforms tested: Linux, Modi4, Sol Misc. update:
* [svn-r6398] Purpose:Quincey Koziol2003-02-121-2/+2
| | | | | | | | | | Code cleanup Description: Clean up some compiler warnings Platforms tested: FreeBSD 4.7 (sleipnir)
* [svn-r6387] Purpose:Quincey Koziol2003-02-101-7/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | Bug Fix Description: Metadata cache in parallel I/O can cause hangs in applications which perform independent I/O on chunked datasets, because the metadata cache can attempt to flush out dirty metadata from only a single process, instead of collectively from all processes. Solution: Pass a dataset transfer property list down from every API function which could possibly trigger metadata I/O. Then, split the metadata cache into two sets of entries to allow dirty metadata to be set aside when a hash table collision occurs during independent I/O. Platforms tested: Tested h5committest {arabica (fortran), eirene (fortran, C++) modi4 (parallel, fortran)} FreeBSD 4.7 (sleipnir) serial & parallel Misc. update: Updated release_docs/RELEASE
* [svn-r6266] Purpose:Quincey Koziol2003-01-101-18/+18
| | | | | | | | | | | | Code cleanup/new feature. Description: Split FUNC_LEAVE into API and non-API specific versions. This allows a solution to compiling this branch with C++, as well as reducing the size of the binaries produced. Platforms tested: FreeBSD 4.7 (sleipnir) w/serial, parallel (including MPE) & thread-safe