summaryrefslogtreecommitdiffstats
path: root/test/h5test.c
Commit message (Collapse)AuthorAgeFilesLines
* [svn-r23695] Description:Quincey Koziol2013-05-111-18/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Clean up warnings in H5Tconv.c (down to _only_ 9000 lines of output now!) Merge changes from Coverity branch back to trunk: r20684: Fix for coverity bug #1721 which was due to the fix for coverity bug #943. r20685: Use HDstrncpy. --gh r20761: Purpose: Fix valgrind issues Description: Free image_data and data as appropriate in test_image. r20762: Purpose: Fix coverity issue 600 Description: Add check for return value of H5O_close in H5Ocopy. Also cleaned up various warnings. r20763: Purpose: Fix valgrind issues with h5stat Description: Modified h5stat to free "iter" before exit, and free "hand" before exit if parse_command_line exits directly. r20764: fixed coverity issues: 69, 327, 614, 684, 685, 696, 697, 1681, 967, 826, 660, 80 r20765: Fixed coverity bug 668 Pulled x * y * z multiply out of malloc operand into a separate n_elements variable to quiet integer overflow warning. No actual integer overflow tests are performed since it's just a test program but I did add a check that n_elements is >= 1. I also changed an error condition from doing its own close and returning -1 to "goto out;" like the rest of the program. r20766: Fixed coverity bug 667 Pulled x * y * z multiply out of malloc operand into a separate n_elements variable to quiet integer overflow warning. No actual integer overflow tests are performed since it's just a test program. Tested on: Mac OSX/64 10.8.3 (amazon) w/C++ & FORTRAN (h5committest upcoming)
* [svn-r22758] Description:Quincey Koziol2012-09-131-8/+12
| | | | | | | | | | | | | Bring generic improvements from encode/decode property list branch to the trunk. This includes a better version of the property list comparison routine, cleaned up compiler warnings, and some cleaned up property list callbacks. Also, started on changes to clean up parallel test output, so that it doesn't report successful tests from each process. Tested on: Mac OSX/64 10.7.4 (amazon) w/debug, GCC 4.7.x, FORTRAN, C++, threadsafe and parallel Linux 2.6/32 (jam) w/debug Solaris 2.7/64 (linew) w/debug
* [svn-r22646] Description:Quincey Koziol2012-08-081-0/+4
| | | | | | | | | Changes resulting from Klocwork static analysis tool, from Mark Miller @ LLNL (miller86@llnl.gov). Tested on: Mac OS X/64 10.7.4 (amazon) w/debug, C++ & FORTRAN, using gcc 4.7.x (too minor to require h5committest)
* [svn-r21923] Description:Quincey Koziol2012-02-101-1/+1
| | | | | | | | | Add FUNC_ENTER macros for package-private routines and begin process of switching package routines to use them. All H5G routines are currently finished. Tested on: Mac OSX/64 10.7.3 (amazon) w/debug, production & parallel
* [svn-r21561] Description:Quincey Koziol2011-10-141-1/+1
| | | | | | | | | | | | Correct error in loading local heap prefix & data block from the file. Sometimes the local heap's prefix could be loaded before the data block (e.g. using H5Oget_info), but then when the data block was loaded later, the free list information would get lost, causing the heap's size to grow larger than necessary. This is Jira bug #HDFFV-7767 Tested on: Mac OS X/32 10.7.2 (amazon) w/debug (h5committest coming up)
* [svn-r21366] JIRA HDFFV-2748 replace use of _WIN32 in source. Created new ↵Allen Byrne2011-09-061-324/+322
| | | | | | defines H5_HAVE_WIN32_API and H5_HAVE_VISUAL_STUDIO defines to use. These can be properly set during configurration. Tested: windows and local linux - reviewed internally
* [svn-r20529] Purpose: Add testing for bug 1864Neil Fortner2011-04-151-0/+94
| | | | | | | | | Description: Added internal tesitng routines to traverse a file and verify that symbol table information is *always* cached, whenever possible. Added this check to the end of many tests to check all the test files, right before the call to h5_cleanup. Tested: jam, amani, heiwa (h5committest)
* [svn-r20315] brought revisions 19868:20300 from the 1.8.6_vms branch to the ↵Raymond Lu2011-03-241-2/+13
| | | | trunk for VMS work
* [svn-r19823] BZ2013: Remove use of WIN32 defines. These two files were ↵Allen Byrne2010-11-181-5/+5
| | | | | | dependent on the winsock2.h header so changed WIN32 to H5_HAVE_WINSOCK_H. Tested: windows
* [svn-r19481] I'm backing out my fix for bug 1707 because there're some ↵Raymond Lu2010-09-271-5/+1
| | | | | | | | | | | unresolved issues - r19441 and 19467. Bug 1707 is that H5Eset_auto causes a seg fault when an application uses -DH5_USE_16_API with the 1.8 library to compile. I created a branch off the trunk called set_auto to continue working on the problem. Tested on jam - backing out, simple.
* [svn-r19457] Bug fix for 1707 - H5Eset_auto causes a seg fault when an ↵Raymond Lu2010-09-211-1/+5
| | | | | | | | | | | | | application uses -DH5_USE_16_API with the 1.8 library to compile. The cause is from the mismatch of H5Eprint1 and H5Eprint2 set through H5Eset_auto. I changed the union in the structure H5E_auto_t. Another change is to make H5Eget_auto fail if H5Eset_auto is called to set the printing function. I'll write a document for it. Tested on heiwa, jam, and amani. The property change in configure.in, config, and Makefile.am came from the merge of the 1.8 library change.
* [svn-r18965] Windows use of VC_EXTRALEAN no longer did anything. It has been ↵Allen Byrne2010-06-031-1/+1
| | | | | | | | replaced by WIN32_LEAN_AND_MEAN macro. This was the cause of a define conflict causing the use of grp1 and grp2 to be replaced with constants in the h5dumpgentest.c file. This also affected the use of the #include <winsock.h> needed by gethostname. The new include: winsock2.h has been added to h5private.h and either removed or updated in the other files. Tested: Windows
* [svn-r18420] Description:Quincey Koziol2010-03-181-0/+1
| | | | | | | | | Re-run bin/reconfigure to catch up with recent rearrangements, remove some unused srcdir headers and duplicated code in main test header. Tested on: Mac OS X/32 10.6.2 (amazon) w/debug & prod Linux/32 2.6 (jam)
* [svn-r18413] Description:Quincey Koziol2010-03-171-9/+1
| | | | | | | | | | | | | | Unify srcdir handling for test executables and allow them to use the srcdir setting from configure time without requiring the 'srcdir' environment variable be set (although you still can, to override the built in setting). Attempted to get this right for Windows builds also. Also add dependency between src/H5Tinit.c and src/libhdf5.settings, so that the test/testcheck_version.sh script works correctly. Tested on: Linux/32 2.6 (jam) Mac OS X/32 10.6.2 (amazon)
* [svn-r18197] Description:Quincey Koziol2010-01-301-8/+8
| | | | | | | | | Trim trailing whitespace from source code files with this command: find . \( -name "*.[ch]" -or -name "*.cpp" -or -name "*.f90" \) -print |xargs -n 1 sed -i "" 's/[[:blank:]]*$//' Tested on: None - eyeballed only
* [svn-r17688] Merge make local copy of svn test data files for write access ↵Larry Knox2009-10-201-0/+55
| | | | | | | from v1.8 to trunk. Tested: amani, jam, linew (h5committest).
* [svn-r17606] Code Cleanup:Albert Cheng2009-10-071-5/+0
| | | | | | | | TFLOPS machine has retired long ago. Removed all code specific for its support. Test: h5committested.
* [svn-r17268] Description:Quincey Koziol2009-07-301-24/+22
| | | | | | | | | | | Bring r17266 from 1.8 branch to trunk: Clean up various compiler warnings from IRIX64 build Tested on: Mac OS X/32 (amazon) debug & production (yes, I know it's not an IRIX64 system :-) Too minor to require h5committest
* [svn-r16560] Description:Quincey Koziol2009-03-101-16/+11
| | | | | | | | | | Remove another call to H5E_clear_stack() from within the library. Clean up lots of compiler warnings. Tested on: Mac OS X/32 10.5.6 (amazon) (followup on other platforms forthcoming)
* [svn-r15855] Purpose: Bring recent Windows-specific fixes from 1.8 branch to ↵Scott Wegner2008-10-131-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | trunk Description: This checkin includes revisions 15845, 15846, and 15853 from the 1.8 branch. From the svn log: r15845: Purpose: Add Windows-specific version of HDftruncate Description: Windows doesn't include a version of the system call ftruncate. There is a similar call, _chsize_s, which performs very similarly. Thus, we map HDftruncate to _chsize_s in our Windows header file, H5win32defs.h. r15846: Purpose: Declare loop variable at beginning of function Description: On Windows, we were getting compile errors because h5test.c includes a function with variable declarations in the middle of the call. The Microsoft C compiler demands that all variables be declared at the top of the function. This checkin simply moves the declaration to the top to satisfy Visual Studio. r15853: Purpose: Decrease size of points array in links test Description: In the external_set_elink_fapl2 links test, there is a large array of points which declared on the stack for testing. Previously, the array was 1000 x 1000, which was too large for Visual Studio to handle. As a result, we were getting stack overflows during the test. We've reduced the number to 400, as this seems to be below the limit. The exact number of points in the array isn't important to the test. Tested: VS2005 on WinXP
* [svn-r15825] Description:Quincey Koziol2008-10-091-14/+86
| | | | | | | | | | | | | | | | | | | | | | | | Fix various problems with a the core & sec2 VFDs. Improve the h5_get_file_size() routine to handle files created with VFDs that use multiple files. 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-r15165] Purpose: Create new HDpthread_self and HDpthread_self_ulong macrosScott Wegner2008-06-061-8/+1
| | | | | | | | | Description: On Windows, the pthread_self function cannot be used to print the returned thread ID for debugging. Instead, we need a separate function, GetCurrentThreadId. To eliminate some Windows ifdef's in the code, we create two new function macros which can be used by all platforms. It is conditionally defined in H5win32defs.h, and globally in H5private.h. Tested: VS2005 w/ pthreads on WinXP kagiso w/ pthreads
* [svn-r15128] Purpose: Make Windows threadsafe debug message more usefulScott Wegner2008-06-021-1/+3
| | | | | | | | | | Description: On Linux-like systems, we can get the ID of the current thread through a pthread_self. However on Windows, the return cannot be cast as a threadID, so we simply couldn't get the ID. Previously we simply gave up and printed a message that we couldn't get an ID. Instead, though, we can use the Windows-specific call to GetCurrentThreadId(), which achieves the same goal. This way we can provide better debug output with threadsafe features. Tested: VS2005 on WinXP VS.NET on WinXP (other platforms not tested because change is within _WIN32 ifdef)
* [svn-r14413] Description:Quincey Koziol2008-01-141-1/+1
| | | | | | | | | | | | | | | | | | | Change H5P[gs]et_format_bounds() => H5P[gs]et_libver_bounds() and also enumerated values H5F_FORMAT_{EARLIEST, LATEST} => H5F_LIBVER_{EARLIEST, LATEST} 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-r14362] Description:Quincey Koziol2008-01-031-2/+3
| | | | | | | | | | | | | | | | | | Switched from "H5P[gs]et_latest_format" to "H5P[gs]et_format_bounds". 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-r14353] Description:Quincey Koziol2007-12-201-2/+15
| | | | | | | | | | | | | | | | | | | | | | | | | - 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-r14104] Description:Quincey Koziol2007-08-231-4/+4
| | | | | | | | | | | | | Pursue calls to H5Gcreate() relentlessly and ruthlessly exterminate them, leaving only a few tame specimens in text files and comments. ;-) Tested on: Mac OS X/32 10.4.10 (amazon) FreeBSD/32 6.2 (duty) FreeBSD/64 6.2 (liberty) Linux/32 2.6 (kagiso) Linux/64 2.6 (smirom) Solaris/32 5.10 (linew)
* [svn-r14097] Description:Quincey Koziol2007-08-211-2/+2
| | | | | | | | | | | | | First real use of API versioning code, H5E routines switched to use new API versioning scheme. Tested on: Mac OS X/32 10.4.10 (amazon) FreeBSD/32 6.2 (duty) FreeBSD/64 6.2 (liberty) Linux/32 2.6 (kagiso) Linux/64 2.6 (smirom) Solaris/32 5.10 (linew)
* [svn-r13994] Description:Quincey Koziol2007-07-211-1/+1
| | | | | | | Add a bit more information to the log VFD settings. Tested on: FreeBSD/32 6.2 (duty) w/check-vfd
* [svn-r13990] Description:Quincey Koziol2007-07-201-1/+1
| | | | | | | | | | Allow a ".h5" suffix to be added to core files also, which prevents overwriting the test binary (and confusing the tests on copper, etc.) Tested on: AIX 5.3 (copper) w/check-vfd FreeBSD/32 6.2 (duty) FreeBSD/64 6.2 (liberty)
* [svn-r13941] Added feature to test the latest format by adding "latest" as theAlbert Cheng2007-07-051-0/+3
| | | | | | | HDF5_DRIVER value to activate the use of latest_format for file access property list. Platform tested: h5committested.
* [svn-r13871] Description:Quincey Koziol2007-06-151-1/+1
| | | | | | | | | | | | | Fix problems with 'check-vfd' target, that were [mostly] introduced with the recent "unique, but sharable" ISOHM optimization. The problems were mostly with using the 'core' VFD, so the H5Pset_fapl_core() API call was changed to re-open existing files (therefore operating more list the sec2, stdio, etc. VFDs). This allows many more of the tests to run using the 'core' VFD, so those were enabled also. Tested on: Linux/64 2.6 (chicago2) 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-r13388] Added a relative comparison between floating-point values to ↵Raymond Lu2007-02-261-0/+1
| | | | | | avoid compiler's warning of comparing values with "==" or "!=".
* [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-r13034] Description:Quincey Koziol2006-12-081-2/+1
| | | | | | | | Take out separate memory type in the file for SOHM objects and create aliases for existing memory types for SOHM use. Tested on: FreeBSD/32 4.11 (sleipnir)
* [svn-r12902] Checkin of Shared Object Header Message work.James Laird2006-11-131-2/+2
| | | | | | | | | | | | This feature is still in progress; Shared Object Header Messages are not complete as a feature and are not thoroughly tested. There are still "TODO" comments in the code (comments with the word "JAMES" in them, so as not to be confused with other TODO comments). Hopefully this checkin will reduce the liklihood of conflicts as I finish implementing this feature. All current tests pass on juniper, copper (parallel), heping, kagiso, and mir.
* [svn-r12870] Add a new macro H5_HAVE_DIRECT_ALIGN in configure.in. Some ↵Raymond Lu2006-11-061-1/+1
| | | | | | | systems like copper and sleipnir doesn't require alignment for Direct I/O. If this's true, write or read data just like sec2 does.
* [svn-r12822] H5Pset_alignment seems working. Added it in test/vfd.c and ↵Raymond Lu2006-10-281-1/+1
| | | | | | made the test more complete by writing two data sets. One is aligned, and the other isn't.
* [svn-r12820] Added fragmental copy buffer to H5FD_direct_write. This buffer ↵Raymond Lu2006-10-271-1/+1
| | | | | | | size is set through H5Pset_fapl_direct. It's been added to H5FD_direct_read in the previous checkin. Still, a test is needed at later checkin.
* [svn-r12766] Made two changes to Direct I/O VFD: first added 3 parameters to ↵Raymond Lu2006-10-161-2/+3
| | | | | | | | H5Pset_fapl_direct to control memory boundary, file block size, and maximal copy buffer size; second in H5FD_direct_write and H5FD_direct_read, the library checks whether data buffer is aligned. If it is, then write and read the data directly instead of making a copy buffer.
* [svn-r12751] Purpose:Albert Cheng2006-10-121-4/+6
| | | | | | | | | | | | | | | | Bug fix (related to 544) Description: h5_get_file_size() was coded to return 0 if failed but file size can be 0. Changed the failure return value to -1 which is allowed by the returned type of off_t which is a signed type. Also changed the checking code of the stat call to just == 0 since that is how it is defined. Test: Could test it in heping only. Both Sol and Copper failed to compiled due to error in the Direct IO VFD code.
* [svn-r12739] Added Direct I/O driver to VFD. It's only supported by SGI ↵Raymond Lu2006-10-101-0/+5
| | | | | | | | | | Altix (cobalt). There's a configure option --enable-direct-vfd/--disable-direct-vfd to enable/disable Direct I/O support. The default is enabled. There's a small test in test/vfd.c. Another way to test it is to set environment variable HDF5_DRIVER to "direct" and run "make check" in the test/ directory. There'll be some further improvement in the following checkin including allowing user to provide memory boundary value, file block size, and copying buffer size.
* [svn-r12700] Alert:Quincey Koziol2006-10-021-7/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | File format is not stable, don't keep files produced! Description: First stage of checkins modifying the format of groups to support creation order. Implement "dense" storage for links in groups. Try to clarify some of the symbols for the H5L API. Add the H5Pset_latest_format() flag for FAPLs, to choose to use the newest file format options (including "dense" link storage in groups) Add the H5Pset_track_creation_order() flag for GCPLs, to enable creation order tracking in groups (although no index on creation order yet). Remove --enable-group-revision configure flag, as file format issues are now handled in a backwardly/forwardly compatible way. Clean up lots of compiler warnings and other minor formatting issues. Tested on: FreeBSD/32 4.11 (sleipnir) w/threadsafe Linux/32 2.4 (heping) w/FORTRAN & C++ Linux/64 2.4 (mir) w/enable-v1.6 compa Mac OSX/32 10.4.8 (amazon) AIX 5.3 (copper) w/parallel & FORTRAN
* [svn-r12440] Purpose:Quincey Koziol2006-06-271-3/+3
| | | | | | | | | | | Code cleanup Description: Trim trailing whitespace in Makefile.am and C/C++ source files to make diffing changes easier. Platforms tested: None necessary, whitespace only change
* [svn-r12395] Purpose:Albert Cheng2006-06-011-0/+31
| | | | | | | | | | | | | | Feature Description: Sometimes the parallel prefix is given in the form of nfs:/mnt/pfs which if given to a non-MPIO VFD like the default H5Fcreate, it would fail. Added a new routine h5_rmprefix which would return the non-prefix component part of the file name which would be okay for the default H5Fcreate and such. Platforms tested: Tested in heping parallel.
* [svn-r12292] Purpose:Quincey Koziol2006-04-201-1/+1
| | | | | | | | | | | | | Code maintenance Description: Remove flexible parallel code Platforms tested: FreeBSD 4.11 (sleipnir) Linux 2.4 (heping) Solaris 2.9 (shanti) Linux 2.4/64 (mir)
* [svn-r12286] Purpose: Fix bugBinh-Minh Ribler2006-04-201-2/+2
| | | | | | | | | | | | | | | | | Description: The file size test in C++ library failed on Copper because the value returned by h5_get_file_size was intepreted incorrectly due to different interger sizes. Solution: H5private.h: Added check to use stat64 and off64_t where appropriate. h5test.c and h5test.h: used h5_stat_size_t in place of off_t. tattr.cpp: used h5_stat_size_t in place of off_t. Platforms tested: Linux 2.4 (heping) AIX 5.1 (copper) SunOS 5.8 64-bit (sol) - still on going
* [svn-r12209] Purpose:Albert Cheng2006-04-071-32/+49
| | | | | | | | | | | | | | | | Bug fix. Description: getenv_all would fail if one calls it without calling MPI_initialized first. This may happen if one uses PHDF5 library to build a serial nature code and does not make any MPI calls. Solution: Added code to detect if MPI has been initialized. If not, use the original getenv. Platforms tested: heping (serial) and mir (parallel).
* [svn-r11875] Purpose:Albert Cheng2006-01-091-13/+29
| | | | | | | | | | | | | | | | | | | | Bug fix. Description: getenv_all, like some implementations of getenv, keeps an internal buffer for the getenv values. Application must make a copy of the content of the returned pointer before calling getenv_all again IF it wants to use the first content later. The previous code violated this rule and caused error. Solution: Did a small revamp of the h5_fixname to fix the above problem by moving the getenv_all for HDF5_NOCLEANUP eariler to avoid it clashing the call of getenv_all for HDF5_PARAPREFIX. No a good permenant fix. Need to really recode this routine. Platforms tested: h5committested.